Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Makro erst nach erfüllter Bedingung ausführen
#1
Hallo,
ich habe einen Button mit folgendem Makro erstellt.
Dieses Makro soll aber erst ausgeführt werden wenn in "D3" oder "K3" der Wert auf 1 ist.
Ist diese Bedingung nicht erfüllt, soll eine Meldung erscheinen "Bitte erst das Leg beenden"
Das ist für ein Dartspiel was über 15 Legs geht, damit sich in der Endauswertung keine Fehler einschleichen, weil vergessen wurde ein Leg zu beenden,
wäre dieser Hinwies für mich sinnvoll.
Vielen Dank
Gruß Didi

Code:
Sub LEEZ()
' LEEZ Makro
    Sheets("Leg1 1-2").Select
    Range("E8").Select
End Sub
Antworten Top
#2
Hallo DartDidi,

versuche es einmal so:

Code:
Sub LEEZ()
' LEEZ Makro
With Tabelle1
    If Range("D3") Or Range("K3") = 1 Then
    Range("E8").Select
    Else
    End If
End With
End Sub

Bitte noch die Blattnamen anpassen.

Grüße

Norbert
Antworten Top
#3
Hallo Norbert,
habe es jetzt so gemacht
Code:
Sub LEED()
' LEEZ Makro
    With ActiveSheets
    If Range("D3") Or Range("K3") = 1 Then
    Sheets("Leg1 1-3").Select
    Range("E8").Select
    Else: MsgBox "Bitte erst das Leg beenden"
    End If
    End With
End Sub
Funktioniert !!
Danke Gruß Didi
Antworten Top
#4
(19.06.2021, 23:31)DartDidi schrieb: Funktioniert !!

Moin!
Was soll denn da funktionieren?
Es gibt kein ActiveSheets, sondern nur ActiveSheet, was aber ohnehin default ist und deshalb überflüssig!
PHP-Code:
If Range("D3") Or Range("K3") = 1 Then 

Dann schreibe mal 42 in D3, lasse K3 leer und staune!
Richtig ist
PHP-Code:
If Range("D3") = Or Range("K3") = 1 Then 

Und @Norbert:
Wenn Du schon auf Tabelle1 mittels With verweist, solltest Du die Ranges mittels Punkt der Tabelle zuordnen, ansonsten bezieht sich Dein Code-Fragment wieder (trotz With-Staterment) auf das aktive Blatt!

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#5
Hallo Ralf,

danke, Du hast natürlich Recht. Ich habe den Punkt vergessen. Außerdem muss die If Abfrage jeweils mit der 1 verglichen werden. 

Grüße
Norbert
Antworten Top
#6
Hallo Ralf,
wo genau muss dann da bei Range noch ein Punkt hin?
Ich befinde mich im Blatt "Leg1 1-2"; ich gehe davon aus, dass das dann das ActiveSheet ist, hab ich jetzt so korrigiert.
In "D3" bzw "K3" steht eine 0 dieser Wert ändert sich auf 1, wenn ein Spieler das Leg gewonnen hat.
Dann soll das mittels Button das Makro ausgeführt ausgeführt werden und es geht zum Blatt "Leg1 1-3".
Na diesem Prinzip sollen dann noch 14 weitere Blätter dazukommen.
Gruß Didi
Antworten Top
#7
Hallo Dart Didi,

so funktioniert es:

Code:
Private Sub CommandButton1_Click()
If Range("D3") = 1 Or Range("K3") = 1 Then
Tabelle2.Activate
Tabelle2.Cells(8, 5).Select
Else
MsgBox "Bitte erst das Leg beenden"
End If
End Sub
Tabelle2 ist jeweils für das nächste Blatt anzupassen. Beispiel anbei.

Grüße
Norbert


Angehängte Dateien
.xlsm   Dart.xlsm (Größe: 20,53 KB / Downloads: 1)
[-] Folgende(r) 1 Nutzer sagt Danke an NobX für diesen Beitrag:
  • DartDidi
Antworten Top
#8
Hallo Norbert,
vielen Dank für deine Antwort.
Es wird sicherlich so sein, dass es da mehrere Lösungen gibt.
Habe jetzt erst mal das Makro aus dem 3. Beitrag verwendet und es tut jedenfalls was es soll.
Es wird wohl auch nicht die eleganteste Methode sein so wie ich es gemacht habe.
Mit VBA arbeite ich auch noch nicht allzu lange, bin da also noch ein blutiger Anfänger.
Ich lade das fertige Projekt hier nochmal hoch, falls du noch mal rüber schauen möchtest.
Die 501 muss beim Spiel genau auf 0 gebracht werden, dann kann man den Button "Nächstes Leg" 
betätigen. (501 in E8 oder H8 geht auch)
Das war jetzt ein Spiel Jeder gegen Jeden für 3 Spieler. Habe noch vor, dass jeweils noch mal für 4 bis 6 Spieler 
zu machen, werde es dann mal mit deinem Code probieren.
Ich sag noch mal vielen Dank 

Gruß Didi


Angehängte Dateien
.xls   JegeJe3Sp - Kopie.xls (Größe: 516 KB / Downloads: 1)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste