SAS*_*00b 1 excel vba excel-vba
在下面的代码中,当我到达Range(i)中的每个curCell时,它无法理解我引用的Range.我收到一个Object'_worksheet'方法'范围'失败了.我知道当前的范围(i)是不正确的,但我已经尝试了每一个变化,似乎没有任何效果.
有人可以帮我理解如何让我的代码识别Range1,然后Range2等?
Sub Worksheet_Change(ByVal Target As Range)
Dim Range1 As Range, Range2 As Range, Range3 As Range, Range4 As Range
Dim curCell As Variant
Dim i As Integer
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(cCostingQSheet)
Set Range1 = ws.Range("E6:E9")
Set Range2 = ws.Range("E15:E19")
Set Range3 = ws.Range("E21")
Set Range4 = ws.Range("E23")
For i = 1 To 4
For Each curCell In Range(i).Cells
If Not WorksheetFunction.IsNumber(curCell) = True Then
curCell.Value = 0
Else
End If
Next
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
如果你想要这样的设置,你需要使用一个数组.这是如何做:
替换您的变量声明语句
'Instead of your original
'Dim Range1 As Range, Range2 As Range, Range3 As Range, Range4 As Range
'Use this:
Dim arrRanges(1 To 4) As Range
Run Code Online (Sandbox Code Playgroud)
然后更改您设置范围的方式:
Set arrRanges(1) = ws.Range("E6:E9")
Set arrRanges(2) = ws.Range("E15:E19")
Set arrRanges(3) = ws.Range("E21")
Set arrRanges(4) = ws.Range("E23")
Run Code Online (Sandbox Code Playgroud)
当你遍历它们时,它看起来像这样:
For Each curCell In arrRanges(i).Cells
Run Code Online (Sandbox Code Playgroud)