如何通过变量引用Excel中的单元格并在Visual Basic中访问其所有属性?
我正在Excel中处理一个宏,它需要遍历整个列,找到非零数据的集群,将数据相加,并将结果存储在提到的集群附近。然后,它继续在专栏中查找其他集群,并执行相同的操作 这就是说,我试图将对“目标”单元格的引用(添加的集群将存储在该单元格中)存储在一个变量中,然后使用该变量访问单元格的“值”属性,以便对其进行更改 代码如下:如何通过变量引用Excel中的单元格并在Visual Basic中访问其所有属性?,excel,variables,cell,Excel,Variables,Cell,我正在Excel中处理一个宏,它需要遍历整个列,找到非零数据的集群,将数据相加,并将结果存储在提到的集群附近。然后,它继续在专栏中查找其他集群,并执行相同的操作 这就是说,我试图将对“目标”单元格的引用(添加的集群将存储在该单元格中)存储在一个变量中,然后使用该变量访问单元格的“值”属性,以便对其进行更改 代码如下: Sub addNonZeroes() Dim targetCell ' Select cell E5, *first line of data*. Range("E5"
Sub addNonZeroes()
Dim targetCell
' Select cell E5, *first line of data*.
Range("E5").Select
' Set Do loop to stop when an empty cell is reached.
Do Until IsEmpty(ActiveCell)
If ActiveCell.Value <> 0 Then
targetCell = ActiveCell.Offset(1, 0)
Do Until ActiveCell.Value = 0
'ERROR OCCURS HERE
targetCell.Value = ActiveCell.Value + targetCell.Value
ActiveCell.Offset(0, 1).Select
Loop
End If
' Step down 1 row from present location.
ActiveCell.Offset(1, 0).Select
Loop
End Sub
子添加非零()
暗靶细胞
'选择单元格E5,*第一行数据*。
范围(“E5”)。选择
'将Do循环设置为在到达空单元格时停止。
直到IsEmpty(ActiveCell)为止
如果ActiveCell.Value为0,则
targetCell=ActiveCell.Offset(1,0)
直到ActiveCell.Value=0为止
“错误发生在这里
targetCell.Value=ActiveCell.Value+targetCell.Value
ActiveCell.Offset(0,1)。选择
环
如果结束
'从当前位置下一行。
ActiveCell.Offset(1,0)。选择
环
端接头
代码错误的来源
发生此错误是因为您的targetCell未真正定义
你应该:
- 定义变量并键入它
- 使用
关键字指定对象Set
Sub addNonZeroes()
Dim targetCell As Range
' Select cell E5, *first line of data*.
Range("E5").Select
' Set Do loop to stop when an empty cell is reached.
Do Until IsEmpty(ActiveCell)
If ActiveCell.Value <> 0 Then
Set targetCell = ActiveCell.Offset(1, 0)
Do Until ActiveCell.Value = 0
'ERROR OCCURS HERE
targetCell.Value = ActiveCell.Value + targetCell.Value
ActiveCell.Offset(0, 1).Select
Loop
End If
' Step down 1 row from present location.
ActiveCell.Offset(1, 0).Select
Loop
End Sub
有关更多示例,请参见此线程:
Dim c As Range
For Each c in Range("E5:E100")
If c.Value <> 0 Then
'do whatever
End If
Next c
Dim arr As Variant, i As Integer
arr = Range("E5:E100").Value
For i = LBound(arr , 2) To UBound(arr , 2)
'check for any empty value
Next i