2017-01-05 4 views
0

Ich möchte jedes Mal ein Meldungsfeld anzeigen, wenn der Zellenwert in meiner Spalte geändert wird.vba Display-Message-Box, wenn sich die Zelle ändert?

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Target.Cells.Count < 3 And Target.Column = 13 Then 
    If Not Intersect(Target, Target.Worksheet.Range("M:M")) Is Nothing Then 

    MsgBox "hEY" 
End If 
    End If 
End Sub 

Im Idealfall würde Ich mag Arbeitsblatt Änderungsereignis versuchen und zu vermeiden, da dies mein spreadhseet scheint für alles andere zu verlangsamen, auch wenn die Benutzer in anderen Zellen eingeben. Der Cursor zeigt einen Ladecursor, als ob vba versucht, im Hintergrund zu arbeiten.

Gibt es einen Weg um dies?

+1

die Zeit finden Feedbacks zur vorherigen Antworten zu geben, die auf dem vorherigen Posts hier habe, sehe ich, dass Sie einen von ihnen nicht akzeptiert haben oder/und als „ANSWER“ –

+0

markiert ??? irgendwelche Rückmeldungen für die Antworten unten –

Antwort

0

Sie Ihren Code vereinfachen könnte, nur prüfen, ob die Zellen in der Spalte M geändert wird, und dann prüfen, ob die Anzahl der Zellen kleiner als 3

Wenn diese 2 If s nicht erfüllt sind, den Code tut nichts, geht nur direkt auf End Sub.

Private Sub Worksheet_Change(ByVal Target As Range) 

If Not Intersect(Target, Range("M:M")) Is Nothing Then 
    If Target.Cells.Count < 3 Then MsgBox "Hey" 
End If 

End Sub 
0

In diesem Fall können Sie MessageBox nicht anzeigen, ohne Code in das Ereignis einzufügen. Das Beste, was Sie tun können, ist, die Bedingungen zu testen, die wahrscheinlich zuerst fehlschlagen, so dass der Code-Test weniger Bedingungen innerhalb de Ereignisses und schneller ausgeführt wird.

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Intersect(Target, Me.Range("M:M")) Is Nothing Then GoTo Quit 
    If Target.Cells.Count < 3 Then GoTo Quit 

    MsgBox "Hey!" 
Quit: 
End Sub 

Nach meiner Erfahrung, sollten Sie diese Art von Code vermeiden wegen der Gründe, die Sie angegeben. Ich setze mein Arbeitsblatt immer frei und erstelle eine "Validiere" -Schaltfläche, die den Benutzer aufzeigt, wo Fehler gefunden wurden (zäh, ich weiß nicht, was du mit deinem Code erreichen willst).

Verwandte Themen