"需要恒定表达" VBA中的错误

时间:2014-10-04 04:00:59

标签: vba excel-vba excel

我是VBA的新手,我正在尝试编写一个简单的程序,将工作表复制到另一个工作表,然后粘贴一些有选择地删除的行。作为我的程序的一部分,我试图简单地将使用的行数保存为整数,我在下面的代码中称为shortLen。但是,当我尝试构造一个长度为shortLen的数组时,我得到一个编译错误:“需要常量表达式”。我不明白这一点,因为我用来查找已用行数(Sheets(2).UsedRange.Rows.count)的代码应输出一个常量整数。我之前尝试过,它工作正常。有什么我想念的吗?我问过一位VBA专家的朋友,他不知道。任何帮助将不胜感激。

Sub Macro1()
Dim i As Integer
Dim numRows As Integer
numRows = Sheets(2).UsedRange.Rows.count
Debug.Print (numRows)
shorterLen = numRows - 11

Dim securityInd(shorterLen) As Integer

For i = 1 To shorterLen

If Not IsEmpty(ActiveSheet.Cells(i, 4)) Then
securityInd(i) = 1
Else:
securityInd(i) = 0
End If
Next i
ActiveSheet.Copy
Sheets.Add.Name = "sheet1"
Sheets("sheet1").select
ActiveSheet.paste

For i = 1 To numRows - 11
If securityInd(i) = 0 Then
Sheets("sheet1").Rows(i).Delete
End If

Next i

End Sub

1 个答案:

答案 0 :(得分:2)

要动态更改数组,请使用ReDim代替Dim

Dim一般用于声明类型。 Redim专门用于更改数组大小,并且第一次设置动态数组大小计为更改。