2017-05-04 3 views
2

Der Code ist relativ einfach. Wenn ich auf eine Zelle in L8: L98 klicke und die Zelle leer ist, wird in die Zelle "T" eingefügt und die anderen relevanten Zellen werden geleert.Der Versuch, Skript nicht auszuführen, wenn eine Zelle nicht leer ist

If Intersect(Target, Range("C7:C98")) Is Nothing And Not Intersect(Target, Range("L7:L98")) Is Nothing Then 
    Application.EnableEvents = False 
    With Intersect(Target, Range("L7:L98")) 
     .Value = "T" 
     .Offset(, 1).Resize(, Col).ClearContents 
End With 

Mein Problem ist, dass, wenn eine Zelle in derselben Zeile in der C-Säule Daten enthält, ich will if-Anweisung falsch zurückzukehren und es überspringen. Ich habe auch den Code mit Intersect(target.offset(, -9)... und ohne den Schnittpunkt versucht. Weder haben für mich gearbeitet.

Antwort

1

Wie VBA nicht Kurzschluss am besten Sie Code in zwei Teile zu brechen, wenn Tests (so die zweite Bedingung nicht unnötig läuft):

Private Sub Worksheet_Change(ByVal Target As Range) 
If Not Intersect(Target, Range("L7:L98")) Is Nothing Then 
    If Len(Cells(Target.Row, "C")) = 0 Then 
     Application.EnableEvents = False 
      With Intersect(Target, Range("L7:L98")) 
       .Value = "T" 
       'presume you set Col elswehere? 
       .Offset(, 1).Resize(, Col).ClearContents 
      End With 
     Application.EnableEvents = True 
    End If 
End If 
End Sub 
2

Schnitt testen, ob die Zelle, in die Sie klicken, im Bereich ist. Wenn Sie nicht gleichzeitig auf eine Zelle in C und eine Zelle in L klicken, wird das If nie erfüllt.

Lassen Sie uns also testen, ob die Zelle in Spalte C in der gleichen Zeile leer ist oder nicht.

If Range("C" & Target.Row)="" And Not Intersect(Target, Range("L7:L98")) Is Nothing Then 
    Application.EnableEvents = False 
    With Intersect(Target, Range("L7:L98")) 
     .Value = "T" 
     .Offset(, 1).Resize(, Col).ClearContents 
End With 
+0

Aus irgendeinem Grund, dies in Arbeit entgegengesetzte Art und Weise. Ich konnte den String ändern, indem ich 'If Not Range (" C "& Target.Row) <>" "einsetzte und das Problem löste. Vielen Dank! – Thelnternet

+1

Stattdessen ändern Sie einfach die '<>' zu '=' und vergessen Sie die 'Not' @Thennernet –

+1

Ich vermisse die Frage zu lesen, siehe bearbeiten @Thelnernet –

Verwandte Themen