Excel 2007宏:当在数组中存储值时,vba会引发运行时'91'错误

时间:2013-12-17 10:53:41

标签: vb.net vba excel-vba excel

以下是excel 2007宏中的代码,让我RunTime error '91' Object variable or With block variable not set

Dim Balance(3, 12, 1) As Object
    Balance(0, 0, 0) = "abL"
    Balance(1, 0, 0) = "cd"
    Balance(2, 0, 0) = "ef"
    Balance(3, 0, 0) = "gh"

我是vb的新手。请帮忙。

P.S我曾经使用过Java,C#,C,PHP和一些程序集,但从来没有像VB那样对它们感到如此不舒服。今天可能是糟糕的一天。

1 个答案:

答案 0 :(得分:0)

原因很简单。您已将数组声明为Object。将String声明为String,因为您要在其中存储Public Sub Sample() Dim Balance(3, 12, 1) As String 'Or Variant Balance(0, 0, 0) = "abL" Balance(1, 0, 0) = "cd" Balance(2, 0, 0) = "ef" Balance(3, 0, 0) = "gh" End Sub 值。试试这个。这工作

Dim Balance(3, 12, 1) As Variant

进一步阅读:MSDN Article

通过评论进行跟进

  

我将在同一个多维数组中存储字符串和数字,因此,我需要保留类型Object - Salik 4分钟前

在这种情况下使用

Public Sub Sample()
    Dim Balance(3, 12, 1) As Variant
    Balance(0, 0, 0) = "abL"
    Balance(1, 0, 0) = 1
    Balance(2, 0, 0) = "ef"
    Balance(3, 0, 0) = 2
End Sub

例如,这对我有用。

{{1}}

进一步阅读:MSDN Article关于变体数据类型