2017-05-07 2 views
0

Ich versuche, einen VBA-Code einrichten, so dass ich in der Lage, auf eine bestimmte Anzahl von Zellen klicken und diese Zellen zwischen "nichts" wechseln "cr" & "Lebenslauf". Bis jetzt habe ich das in meinem Code, aber ich muss es mehreren Zielen zuweisen, aber ich kann nicht scheinen, sie dazu zu bringen, unabhängig zu arbeiten.Excel VBA ändern Wert der Zelle mit einem Klick - zuweisen Sie dies zu mehreren Bereichen unabhängig

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 

Antwort

1

Dies wäre eine Möglichkeit zu erreichen, was Sie wollen.

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 

ich beobachtet, dass Ihre erste Select Aussage überflüssig ist, weil es mit dem letzten identisch ist. :-)

+0

Vielen Dank. Ich werde das versuchen:) – Mapleleaf

+1

Sie brauchen diese Schleife nicht, um einen Mehrfachbereichbereich zu definieren. Sie können einfach 'Set Rng = Range (" A1, B2, C3, D4 ")' –

+1

@ A.S.H verwenden. Vielen Dank. Ich habe meine Antwort geändert, um Ihre Idee zu übernehmen. – Variatus

0

Mapleleaf, Ich bin nicht ganz sicher, dass ich völlig verstehen, was Sie nach, aber das war für mich:

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 

Wenn dies erweist sich als nicht zu sein, was Sie versuchen, zu vollenden, ich vermute, dass Sie in der Lage sein werden, es leicht anzupassen, um zu tun, was Sie brauchen. Hoffe das hilft. Wenn Sie Fragen haben, zögern Sie nicht.

0

Das ist, was ich gefunden habe und es funktioniert großartig. Danke für Ihre Hilfe.

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 
Verwandte Themen