如何测试目标单元格是否在多个单元格的范围内:Excel VBA

时间:2017-06-22 09:32:19

标签: excel vba excel-vba

我在网上得到了以下代码,现在我正在尝试编辑以使其适用于多个单元格,例如整个"我"柱。我该怎么做呢?

因为我没有编写原始代码,所以没有关于如何编辑它的正确线索。我理解它是我们想要干涉的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

1 个答案:

答案 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可能会导致问题,因为它是盲目调用撤消而不知道实际会做什么!