作者:葛妹秀 | 来源:互联网 | 2023-08-11 11:37
我尝试过Dim CellA As Long
,As Integer
和As Range
来尝试保存单元格的地址。在此示例中,(使用Range)我得到了
运行时错误91对象变量或未设置块变量
第4行:CellA = Cells(activeCell.Row - 1,1)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ColA As String
Dim ColB As String
Dim CellA As Range
CellA = Cells(activeCell.Row - 1,1)
If (Len(Cells(activeCell.Row - 1,1) > 0)) Then
ColA = CleanCode(Cells(activeCell.Row - 1,1))
ColB = CleanCode(Cells(activeCell.Row - 1,2))
If (ColA <> ColB) Then
MsgBox (Cells(activeCell.Row - 1,2))
Range(Cells(activeCell.Row - 1,1)).Select
End If
End If
End Sub
我想将我所有的Cells(activeCell.Row...)
引用替换为变量引用,包括我的范围选择(显然,它不起作用)。
FYI::当我在列A单元格中键入的内容与该列B单元格不匹配时,此例程将生成一个消息框,其中包含(隐藏的)列B单元格的内容。我写它的目的是帮助我记住我的视频头像。
因为CellA是对象,所以不能这样做
CellA = Cells(ActiveCell.Row - 1,1)
您必须像这样使用Set
关键字
Set CellA = Cells(ActiveCell.Row - 1,1)
,
范围是对象。您需要使用关键字Set
进行对象分配。
Set CellA = Cells(ActiveCell.Row - 1,1)
-
CellA
从未使用
- 这些多余的括号
(Len(Cells(ActiveCell.Row - 1,1) > 0))
太混乱了。
- 避免使用这样的括号:
MsgBox (Cells(ActiveCell.Row - 1,2))
可能会导致问题。
-
将Range(Cells(ActiveCell.Row - 1,1))
替换为ActiveCell.Offset(-1,2)
或ActiveCell(-1,2)
私有子工作表_更改(按目标的ByVal目标)
昏暗的ColA作为字符串
昏暗的ColB作为字符串
昏暗的CellA作为范围
昏暗的CellB作为范围
Set CellA = ActiveCell.Offset(-1,1)
Set CellB = ActiveCell.Offset(-1,2)
If Len(CellA.Value) > 0 Then
ColA = CleanCode(CellA)
ColB = CleanCode(CellB)
If (ColA <> ColB) Then
MsgBox CellB
ColA.Select
End If
End If
结束子