2017-10-17 125 views
1

語句If Target.Address = "$I$2" Then只選擇I2單元格。如何在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 = "$I$2" 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 & ", " & Newvalue 
     Else: 
     Target.Value = Oldvalue 
     End If 
    End If 
    End If 
End If 
Application.EnableEvents = True 
Exitsub: 
Application.EnableEvents = True 
End Sub 
+0

提示:'範圍()' – Alfabravo

+0

確定像範圍(我:我)'? –

+0

'如果Target.Address =「$ I $ 2」那麼'**不**選擇一個單元格。 ...它只檢查目標的地址是否是'I2' – jsotola

回答

1

你可能要檢查的整列的「我」,而不是細胞「I2」。 這種情況應自

If Target.Address = "$I$2" Then 

改爲

If Target.Column = 9 Then 

讓宏將考慮爲完整的列。

+0

你是一個天才!謝謝。有沒有辦法選擇整張紙?或多個列? –

+0

如果你想爲完成工作表做,然後刪除這個條件。由於代碼可能不同,您將不得不通過合適的示例來解釋多個部分。 –

+0

「您將不得不通過合適的示例解釋多個部分,因爲代碼可能會有所不同。」 - 我可以寫'如果Target.Column = 9,10 Then'?我應該一次複製並粘貼一列代碼嗎? –