2017-05-07 44 views
0

我想設置一個vba代碼,這樣我就可以點擊特定數量的單元格並讓這些單元格在「無」之間切換, 「cr」&「cv」。到目前爲止,我在我的代碼中有這個,但我需要將它分配給多個目標,但我似乎無法讓他們獨立工作。Excel VBA單擊一次即可更改單元格的值 - 將其分配給多個獨立的範圍

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) 
    Application.EnableEvents = False 

    With Target 
    If .Address = Range("A1").Address Then 
     Select Case .Value 
      Case "" 
      .Value = "CR" 
      Case "CR" 
      .Value = "CV" 
      Case "CV" 
      .Value = "" 
      Case Else 
      .Value = "CR" 
     End Select 
    End If 
    End With 

    Range("A2").Select 
    Application.EnableEvents = True 
End Sub 

回答

1

這將是實現你想要的東西的一種方式。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    ' 07 May 2017 

    Dim Rng As Range 

    Set Rng = Range("A1,B2:B4,C3,D4") 
    If Not Application.Intersect(Target, Rng) Is Nothing Then 
     MsgBox "Cell " & Target.Address(False, False) & " was clicked." 
    End If 
End Sub 

我觀察,你的第一個Select語句是多餘的,因爲它是與上次相同。 :-)

+0

謝謝。我會試試這個:) – Mapleleaf

+1

你不需要這個循環來定義一個多區域範圍。你可以簡單地使用'Set Rng = Range(「A1,B2,C3,D4」)' –

+1

@ A.S.H。謝謝。我已經修改了我的答案,以納入您的想法。 – Variatus

0

Mapleleaf, 我不能完全肯定,我完全理解你以後在做什麼,但是這個工作對我來說:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    Application.EnableEvents = False 
    For Each T In Target 
     With T 
      'If .Address = Range("A1").Address Then 
       Select Case .Value 
       Case "" 
        .Value = "CR" 
       Case "CR" 
        .Value = "CV" 
       Case "CV" 
        .Value = "" 
       Case Else 
        .Value = "CR" 
       End Select 
      'End If 
     End With 
    Next 
    Range("A2").Select 
    Application.EnableEvents = True 
End Sub 

如果這原來不被你試圖什麼爲了完成,我懷疑你可以很容易地適應它來做你需要的東西。希望這可以幫助。如果您有任何問題,請不要猶豫。

0

這就是我想出來的,它的效果很好。感謝您的幫助。

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) 

Application.EnableEvents = False 

    If Target.Cells.Count = 1 Then 

    If Not Intersect(Target, Range("C8:C10:C12:C14:C16:I8:I10:I12:I14:I16:O8:O10:O1:O14:O16:U8:U10:U12:U14:U16:AA8:AA10:AA12:AA14:AA16:AG8:AG10:AG12:AG14:AG16:AM8:AM10:AM12:AM14:AM16")) Is Nothing Then 
     Select Case Target.Value 
     Case "" 
     Target.Value = "CR" 
     Case "CR" 
     Target.Value = "CV" 
     Case "CV" 
     Target.Value = "" 
     Case Else 
     Target.Value = "CR" 
     End Select 
     Range("B2").Select 
    End If 
    End If 

    Application.EnableEvents = True 

End Sub 
相關問題