如何使用更多Target.Address(范围)

时间:2019-06-19 06:35:01

标签: excel vba

在一个单元格中,我列出了一个可供选择的列表。但是,仅凭一种选择是不够的。我找到了一些vba代码,使我可以做出更多选择。但是此代码指向特定的单元格。我想在工作表中更一般地使用它,可能是一个范围。

我试图将范围设置为target.address,但这是行不通的。它也不适用于一个单元格(J3)的范围。我发现从$j$3中删除美元符号后,下面的公式不起作用。

Dim Oldvalue As String
Dim Newvalue As String


On Error GoTo Exitsub
TheCell = ActiveCell

If Target.Address = "$J$13" 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 :(得分:2)

代替

If Target.Address = "$J$13" Then

您可以在Target范围的Intersect中使用您要检查的范围:

Dim AffectedRange As Range
Set AffectedRange = Intersect(Target, Me.Range("J13:J20")) 'put your range here

If Not AffectedRange Is Nothing Then

    Dim Cell As Range
    For Each Cell In AffectedRange 'loop through all affected cells
        'here use Cell instead of Target
    Next Cell

End If