Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

wenn ja dann (vba)

Forumthread: wenn ja dann (vba)

wenn ja dann (vba)
amintire
Hallo alle zusammen,
stehe momentan voll auf den Schlauch.
Also wenn die Zelle "J1" = "x", dann soll das Makro ausgeführt werden, ansonsten nichts.
Mit einer Abfrage beim starten der Excel Mappe.
Müsste auch so sein, dass wenn ich einmal auf Ja klicke dann auch in die Zelle J1 ein x geschrieben wird, beim nächsten öffnen der Mappe wird überprüft ob die Zelle J1 ein x ist, wenn nicht soll mit der msgbox abgefragt werden, wenn auf ja geklickt wird, makro ausführen und in die Zelle J1 ein x schreiben.
Die msgbox abfrage würde ja so irgendwie gehen:
Sub Test()
If MsgBox("Soll gesendet werden.", vbYesNo + vbQuestion, "Abfrage ?") = vbYes Then
Call test1  'das ist das Makro was ausgeführt werden soll
Else
'Range("a8:a9").Copy Range("g7:g8")
'  MsgBox "Nein"
End If
End Sub

Gruß Amina
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: wenn ja dann (vba)
18.04.2011 12:06:22
Rudi
Hallo,
so?
Private Sub Workbook_Open()
Test
End Sub
Sub Test()
If Range("J1") = "x" Then
Test1
Else
If MsgBox("Soll gesendet werden.", vbYesNo + vbQuestion, "Abfrage ?") = vbYes Then
Range("J1") = "x"
Test1  'das ist das Makro was ausgeführt werden soll
Else
'Range("a8:a9").Copy Range("g7:g8")
'  MsgBox "Nein"
End If
End If
End Sub

Gruß
Rudi
Anzeige
AW: wenn ja dann (vba)
18.04.2011 12:07:30
Hajo_Zi
Hallo amintrie,
Irgendwie fehlt mir in Deinem Code die Prüfung ob Zelle "x" ?
Oder übersehe ich da was?

AW: wenn ja dann (vba)
18.04.2011 12:14:14
amintire
Hallo,
ja stehe irgendwie voll auf den Schlauch.
Also beim öffnen der Mappe soll zuerst geprüft werden ob die Zelle J1 leer ist, wenn die leer ist soll die Abfrage stattfinden, wenn ich dann auf Ja klicke soll das Makro ausgeführt und in die Zelle J1 ein x geschrieben werden.
Wenn beim öffnen der mappe schon ein x in J1 steht dann soll nichts passieren.
Gruß Amina
Anzeige
AW: wenn ja dann (vba)
18.04.2011 12:16:54
Hajo_Zi
Halo Amina,
unte DieseArbeitsmappe
Option Explicit
Private Sub Workbook_Open()
If UCase(Worksheets("Tanbelle1").Range("j1")) = "X" Then
' Dein Makro
End If
End Sub
Gruß Hajo
Anzeige
das widerspricht ...
18.04.2011 12:27:17
Rudi
Hallo,
deiner ursprunglichen Frage.
alt:
Also wenn die Zelle "J1" = "x", dann soll das Makro ausgeführt werden, ansonsten nichts.
neu:
Wenn beim öffnen der mappe schon ein x in J1 steht dann soll nichts passieren.
Wat denn nu?
Gruß
Rudi
AW: das widerspricht ...
18.04.2011 12:44:11
amintire
Hallo Rudi,
ja da hast du Recht, also die zweite Variante, wenn leer dann Makro ausführen und ein x reinschreiben ansonsten soll nichts geschehen.
Das von Hajo passt, aber wie bekomme ich jetzt das x in j1 nach dem Makro ?
Bekomme da immer eine Fehlermeldung.
Gruß Amina
Anzeige
AW: ###
18.04.2011 12:51:49
amintire
so habs jetzt ;)
Danke für eure Hilfe
Gruß Amina
AW: das widerspricht ...
18.04.2011 12:53:17
Hajo_Zi
Hallo Amina,
nur wenige sehen Dein jetzt benutztes Makro.
Option Explicit
Private Sub Workbook_Open()
If UCase(Worksheets("Tanbelle1").Range("j1")) = "X" Then
' Dein Makro
Worksheets("Tanbelle1").Range("j1") = ""
End If
End Sub
Gruß Hajo
Anzeige
AW: das widerspricht ...
18.04.2011 14:39:48
amintire
Hallo nochmal alle zusammen,
also bis jetzt funktioniert der Code wirklich gut, würde aber gerne diese Abfrage am Anfang haben.
Das trotzallem, auch wenn die Zelle leer ist, gefragt wird ob ja oder nein, bei ja dann, bei nein exit.
Also folgendes in den Code mit rein?
MsgBox("senden.", vbYesNo + vbQuestion, "E-Mail senden ?") = vbYes Then
in den Code mit rein?
Option Explicit
Private Sub Workbook_Open()
If UCase(Worksheets("Tabelle1").Range("j1")) = "" then
Call makro
Load Dateneingabe
Dateneingabe.Show
End If
End Sub

Also, ich starte die Excel, die Zelle J1 ist leer, dann kommt die Abfrage senden ja oder nein,
bei ja wird makro ausgeführt und der Text reingeschrieben, bei nein exit und nichts wird in die Zelle geschrieben.
Wenn ich aber Ja klicke, wird der Text in die Zelle geschrieben und das Makro ausgeführt. Und da was in der Zelle steht kommt die Abfrage beim nächsten Mal nicht mehr wenn die Excel geöffnet wird.
Hoffe, das es einigermaßen verständlich beschrieben ist wie ich des haben möchte.
Danke für eure Hilfe.
Lieben Gruß
Amina
Anzeige
AW: passt...
18.04.2011 15:05:05
amintire
Habe es rausgefunden ;))
Gruß Amina
letzter Versuch
18.04.2011 15:07:00
Rudi
Hallo,
bisschen wirr.
Private Sub Workbook_Open()
If UCase(Worksheets("Tabelle1").Range("j1")) = "" Then
If MsgBox("senden.", vbYesNo + vbQuestion, "E-Mail senden ?") = vbYes Then
Worksheets("Tabelle1").Range("j1") = "x"
Call makro
Load Dateneingabe
Dateneingabe.Show
End If
End If
End Sub

Gruß
Rudi
Anzeige
AW: # # #
18.04.2011 16:32:31
amintire
Oh danke Rudi, hatte aber schon eine Lösung gefunden.
Ja heut ist Montag ;-)
Gruß Amina
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Abfragen in Excel: Wenn Ja, dann...


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf "VBAProject (deinDateiname)".
    • Wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Private Sub Workbook_Open()
       If UCase(Worksheets("Tabelle1").Range("J1")) = "" Then
           If MsgBox("senden?", vbYesNo + vbQuestion, "E-Mail senden?") = vbYes Then
               Worksheets("Tabelle1").Range("J1") = "x"
               Call makro
               Load Dateneingabe
               Dateneingabe.Show
           End If
       End If
    End Sub
    • Dieser Code überprüft beim Öffnen der Arbeitsmappe, ob die Zelle J1 leer ist. Wenn sie leer ist, wird eine MsgBox angezeigt, die fragt, ob gesendet werden soll.
  4. Erstelle das Makro, das du ausführen möchtest, und füge es in das Modul ein:

    Sub makro()
       ' Dein Makro-Code hier
    End Sub
  5. Speichere die Datei als Excel-Arbeitsmappe mit Makros (.xlsm).


Häufige Fehler und Lösungen

  • Fehler: "Objektvariable oder With-Blockvariable nicht festgelegt"
    Lösung: Überprüfe, ob der Arbeitsblattname korrekt ist. Stelle sicher, dass "Tabelle1" der tatsächliche Name des Arbeitsblatts ist.

  • Fehler: MsgBox erscheint nicht
    Lösung: Stelle sicher, dass der Code im Workbook_Open()-Ereignis korrekt platziert ist und dass du die Datei als Makro-fähige Arbeitsmappe speicherst.


Alternative Methoden

Wenn du eine weniger invasive Methode bevorzugst, kannst du auch eine Schaltfläche in Excel erstellen, die dein Makro ausführt, anstatt es automatisch beim Öffnen der Datei zu starten. So kannst du die Abfrage besser steuern.

  1. Füge eine Schaltfläche ein (Entwicklertools > Einfügen > Schaltfläche).
  2. Verknüpfe die Schaltfläche mit deinem Makro.

Praktische Beispiele

Hier ist ein einfaches Beispiel für ein Makro, das in der msgbox abgefragt wird:

Sub test1()
    MsgBox "Das Makro wurde ausgeführt!"
End Sub

Verwende dieses Makro in Verbindung mit dem vorherigen Code, um eine Bestätigung zu erhalten, dass die Abfrage erfolgreich war.


Tipps für Profis

  • Nutze benutzerdefinierte Formate in deiner MsgBox, um die Benutzererfahrung zu verbessern.
  • Experimentiere mit verschiedenen Optionen, um die MsgBox anzupassen, z.B. durch Hinzufügen von Icons oder anderen Schaltflächen.
MsgBox "Soll die E-Mail gesendet werden?", vbYesNo + vbCritical, "Wichtige Abfrage"
  • Dokumentiere deinen Code, um später einfacher Anpassungen vornehmen zu können.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um mehr Bedingungen zu überprüfen?
Du kannst mehrere If-Abfragen verschachteln oder Select Case verwenden, um verschiedene Bedingungen zu prüfen.

2. Was passiert, wenn ich die Datei ohne Makros speichere?
Wenn du die Datei ohne Makros speicherst, wird der gesamte VBA-Code gelöscht, und die Abfragen funktionieren nicht mehr.

3. Wie kann ich die Abfragen für andere Zellen verwenden?
Ändere einfach die Zellreferenz in den Range("J1")-Befehlen zu der gewünschten Zelle (z.B. Range("A1")).

4. Kann ich die MsgBox in einer anderen Sprache verwenden?
Ja, du kannst den Text in der MsgBox anpassen, um sie in jeder gewünschten Sprache darzustellen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige