在一个单元格中,我列出了一个可供选择的列表。但是,仅凭一种选择是不够的。我找到了一些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
我正在寻找一种解决方案,可以从一个以上项目的所有列表中进行选择。应以可在一系列单元格中使用的方式更改公式。这些单元格具有相同的选择列表。
答案 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