Anzeige
Archiv - Navigation
1188to1192
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

if, then als Schleife im Worksheet_SelectionChange

if, then als Schleife im Worksheet_SelectionChange
Harald
Hallo zusammen,
mit einzelnen if, then- Abfragen bekomme ich es selbst hin. Der Code wird dann aber sehr lang und die Laufzeit wird wahrscheinlich ebenfalls entsprechend lang sein.
Der von oben nach unten zu durchsuchende Bereich: ("O31:O485")
Wenn Wert 1 gefunden, diesen löschen, MsgBox anzeigen (später im Original: "Tabelle sortieren") und Code beenden.
Wie würde die Kurzvariante mit eine Schleife (oder wie das heißt) aussehen?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
... also automatische Ausfü _ hrung, wenn Werte im Tabellenblatt eingegeben werden (Spielergebnisse) If Range("O31").Value = 1 Then 'Wenn Wert 1 gefunden wurde, dann 'Range("O31").ClearContents 'Wert in Zelle löschen und MsgBox "TEST" 'und MsgBox anzeigen (später im Original: Tabelle sortieren) Exit Sub 'Makro beenden End If If Range("O32").Value = 1 Then 'Range("O32").ClearContents MsgBox "TEST"' Exit Sub End If ....usw, wiederholen bis If Range("O485").Value = 1 Then 'Range("O485").ClearContents MsgBox "TEST"' Exit Sub End If End Sub
Da der Code automatisch bei Eingabe eines Werte gestartet wird, ist auf jeden Fall darauf zu achten, dass ich nicht in einer Dauerschleife lande!
Vielen Dank im voraus.
Gruß, Harald G.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: if, then als Schleife im Worksheet_SelectionChange
30.11.2010 19:06:27
CitizenX
Hallo Harald
eine Schleife sähe so aus:
Sub Prüfen()
Dim i&
For i = 31 To 485
    If Cells(i, "O") = 1 Then
    MsgBox "Tabelle sortieren!"
    Cells(i, "O") = ""
    Exit For
    End If
Next
End Sub

Grüße
Steffen
Anzeige
Korrektur!
30.11.2010 19:09:32
CitizenX
Hallo,
Du wolltest die Prüfung bei Eingabe.
Dann so:
Code kommt ins Modul der Tabelle
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("O31:O485")) Is Nothing And Target = 1 Then
    Application.EnableEvents = False
    MsgBox "Tabelle sortieren!"
    Target = ""
    Application.EnableEvents = True
End If
End Sub
Grüße
Steffen
Anzeige
AW: Korrektur!
30.11.2010 20:45:27
Harald
Hallo Steffen,
vielen Dank für die schnelle Antwort.
Ich hoffe, dass es funktioniert, komme heute aber leider nicht mehr zum Testen.
Schönen Abend noch und grüße aus Köln
Harald G.
Mit if, aber ohne Schleife
30.11.2010 20:55:51
Erich
Hi Harald,
vielleicht passt das hier:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim varZ As Variant
varZ = Application.Match(1, Range("O31:O485"), 0)
If IsNumeric(varZ) Then
Application.EnableEvents = False
Range("O31:O485").Cells(varZ).ClearContents
MsgBox "Tabelle sortieren!"
Application.EnableEvents = True
End If
End Sub
Dabei muss nichts in dem Bereich O31:O485 eingegeben werden - es reicht,
wenn es eine Cursorbewegung auf dem Blatt gibt und sich in dem Bereich der Wert 1 finden lässt.
Beispiel:
In O32 steht die Formel =A1/3, in A1 wird eine 3 eingegeben. Dann wird die Formel gelöscht.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Mit if, aber ohne Schleife
01.12.2010 20:40:40
Harald
Hallo Steffen,
ich bin erst eben zum testen gekommen. Vielen Dank für Deine Mühe. Aber dein Code funktioniert nur, wenn ich händich eine 1 in Spalte O eingebe. Es macht aber keinen Sinn, wenn ich händich einen Zellwert eingebe um ihn dann sofort per VBA- Code wieder zu löschen. Mein Wert "1" wird durch eine Formel erzeugt, wenn bestimmte Bedingungen zutreffen. Die "1" in Spalte "O" erscheint, wenn ein neues Spielergebnis eingetragen wird, daraufhin wird automatisch die Tabelle aktualisiert und die "1" in die Zeile wieder gelöscht.
In der nächsten Zeile passiert dann das selbe bei Eingabe des nächsten Spielergebnisses, usw., usw.,...
Trotzdem, vielen Dank.
Hallo Erich,
auch an Dich ein herzliches Dankeschön. Dein Code macht genau das, was ich wollte.
Vielen Dank.
Schönen Abend noch für alle und Grüße aus Köln
Harald G.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige