我是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
答案 0 :(得分:2)
要动态更改数组,请使用ReDim
代替Dim
Dim
一般用于声明类型。 Redim
专门用于更改数组大小,并且第一次设置动态数组大小计为更改。