2017-08-30 62 views
3

我会说我不擅长VBA。我有一个VBA代码,在一个单元格中从选定列表中追加多个值。代码有效,但现在我想将代码应用于多个单元格。将VBA宏应用于多个单元格

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 
'Code by Sumit Bansal from https://trumpexcel.com 
' To Select Multiple Items from a Drop Down List in Excel 
Dim Oldvalue As String 
Dim Newvalue As String 
Application.EnableEvents = True 
On Error GoTo Exitsub 
If Target.Address = "$A$7" 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 
     If InStr(1, Oldvalue, Newvalue) = 0 Then 
      Target.Value = Oldvalue & "," & Chr(10) & Newvalue 
     Else: 
     Target.Value = Oldvalue 
     End If 
    End If 
    End If 
End If 
Application.EnableEvents = True 
Exitsub: 
Application.EnableEvents = True 
End Sub 

如何延长我的代码使用单元格区域

$A$7:$A$18 

,而不是"$A$7",这样我可以申请VBA代码到多个单元格在Excel中。

回答

5

变化

If Target.Address = "$A$7" Then 

If Not Intersect(Target, Range("A7:A18")) Is Nothing Then 
+1

优雅的,有给予好评。 –

0

我使用通配符。

If Target.Address = "$A$7" Then 

If Target.Address Like "$A$[7-9]" Or Target.Address Like "$A$1[0-8]" Then 
相关问题