【发布时间】:2014-10-04 04:00:58
【问题描述】:
我是 VBA 的新手,我正在尝试编写一个简单的程序,将一张工作表复制到另一张工作表,然后将其粘贴到有选择地删除的某些行。作为我程序的一部分,我试图将使用的行数简单地保存为一个整数,在下面的代码中我称之为 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
【问题讨论】: