2017-06-22 95 views
0

我在線獲得了下面的代碼,現在我正在嘗試編輯它以使其適用於多個單元格,比如整個「I 「專欄。我該怎麼做呢?如何測試目標單元格是否位於多個單元格的範圍內: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

對於'Column I',嘗試'如果Target.Column = 9 Then'。 – Mrig

回答

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可能會引起問題,因爲它是一個盲目的撤銷呼叫而不知道實際上會做什麼!

+1

另外,撤消不能通過vba撤消事情。它只能撤消用戶直接輸入(鼠標,鍵盤) –

+0

你也可以用多個單元格用union方法增長一個範圍,並在檢查相交方法 –

相關問題