我在网上得到了以下代码,现在我正在尝试编辑以使其适用于多个单元格,例如整个"我"柱。我该怎么做呢?
因为我没有编写原始代码,所以没有关于如何编辑它的正确线索。我理解它是我们想要干涉的Target.Address
,但我尝试使用的任何逻辑只会导致调试器错误。
Dim Oldvalue As String
Dim Newvalue As String
On Error GoTo Exitsub
If Target.Address = "$I$1" Then
If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
GoTo Exitsub
Else: If Target.Value = "" Then GoTo Exitsub Else
Application.EnableEvents = False
Newvalue = Target.Value
Application.Undo
Oldvalue = Target.Value
If Oldvalue = "" Then
Target.Value = Newvalue
Else
Target.Value = Oldvalue & ", " & Newvalue
End If
End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub
答案 0 :(得分:0)
一种天真的方法是循环遍历I
列中的所有单元格并对Target
进行检查。更简单的方法是使用Intersect
。
' Set up the range you're interesting in
Dim myRange As Range
Set myRange = ThisWorkbook.Sheets("Sheet1").Range("I1:I100")
' Replacing "If Target.Address = "$I$1" Then"
If Not Intersect(myRange, Target) Is Nothing Then
If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
...
End If
End If
但请注意,无论此任务是什么,都可能值得寻找不同的方法。使用Application.Undo
可能会导致问题,因为它是盲目调用撤消而不知道实际会做什么!