Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.04.2025 14:56:21
29.04.2025 13:03:33
29.04.2025 11:32:32
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Warten auf Eingabe

Warten auf Eingabe
28.08.2002 11:28:55
Andreas

Hallo !

Ich habe folgendes Problem:

Ich möchte, dass nach dem Öffnen einer Mappe, in der ersten Tabelle ein Wert in Zelle A2 eingetragen wird, und dadurch automatisch ein Makro startet.

Die Überprüfung dieser Zelle, soll am besten im Workbook_Open Bereich stattfinden. Dummerweise ist das Workbook_Open Makro, dass diese Zelle überprüft, ja aber schon vor der Eingabe abgelaufen.
Wichtig: Ein Worksheet_Change Makro kommt aber aus mehreren Gründen, die ich jetzt hier nicht erklären möchte, nicht in Frage!

Und eine Schleife a la:
Do While Sheets("Tabelle1").Cells(2, 1) = ""
Loop
...

funktioniert ja auch nicht, da man während dieser "Endlosschleife" ja keine Eingaben machen kann.

Jetzt also 2 mögliche Ideen zur Lösung von mir:

1.) Kann man dem Makro sagen, dass es auf die Eingabe in A2 warten soll, und erst dann weiterläuft? So eine Art Wartefunktion auf Eingabe?
Hinweis: Eine Zeitverzögerung ist hier leider ein schlechter Weg, und ich möchte sie deshalb auch nicht einbauen.

2.) Falls 1. wirklich nicht machbar ist, ist es dann möglich eine Formel in eine andere Zelle einzutragen, die falls A2 gefüllt wird, dann das Workbook_Open Makro startet?
Wie würde die Formel dann aussehen?

Ich bitte um Hilfe und bedanke mich im Vorraus!


Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Warten auf Eingabe
28.08.2002 11:38:42
Charlie
Hallo Andreas,

Du kannst Excel im Kreis schicken, bis eine Eingabe gemacht wurde, wenn Du innerhalb der Schleife die Steuerung mit DoEvent an das Betriebssystem übergibst. Dann kann der User die Eingabe machen, während die Schleife läuft:

Viel Erfolg,
Charlie

Noch etwas anderes
28.08.2002 11:40:22
Andreas

Übrigens:

Ich kann immer verhindern, dass die Workbook_Open-Befehle gestartet werden. Auch wenn es mit diesem Makro hier nicht möglich sein soll: "070999 Aufhebung der Workbook_Open-Befehle verhindern" -> https://www.herber.de/cgi-bin/callsmpl.pl?Datei=070999h.htm

Das funktioniert bei mir nicht. Wenn ich beim Start die Abfrage zur Aktivierung der Makros bekomme, brauche ich nur die Shift-Taste schon einfach vorher gedrückt zu halten, und erst dann auf "Makros aktivieren" kllicken. Dann startet nichts mehr automatisch.
Also wie soll das funktionieren?

Anzeige
Re: Noch etwas anderes
28.08.2002 11:56:16
Charlie
Hallo Andreas,

dafür gibt es einen Trick, indem Du ein Blatt mit einem Hinweis darauf anlegst, dass die Mappe nur bei aktivierten Makros verwendbar ist.

Beim Schließen der Datei blendest Du dieses Blatt ein und alle anderen Blätter mit xlSheetVeryHidden aus. So sind sie auch im Menü "Format" - "Blatt" - "Einblenden" nicht sichtbar.

Beim Öffnen der Mappe blendest Du im Workbook_Open-Ereignisse alle ausgeblendeten Blätter ein und das Hinweisblatt mit xlSheetVeryHidden aus:

Viel Erfolg,
Charlie

Anzeige
Nich schlecht, aber ...
28.08.2002 12:12:02
Andreas

Danke!

Das funktioniert zwar, aber die Eingabe ist seeehhhrr verzögert.
Da muss man schon auf der Tastatur rumhauen. Und bei der Eingabe überspringt er ein paar Buchstaben. Also so ist das ziemlich schlecht.

Kann man den Abfragetakt des Makros nicht verlangsamen oder so?

Danke für den Tipp
28.08.2002 12:18:30
Andreas

Danke dir!

Das werde ich mal testen!

Anzeige
Re: Danke für den Tipp
28.08.2002 12:26:52
Charlie
Hallo Andreas,

da die Datei IMMER gespeichert werden muss, damit beim nächsten Öffnen der Datei auch wirklich nur das "Error"-Blatt sichtbar ist, solltest Du das gleich im Workbook_BeforeClose-Ereignis machen. Sonst wird dem Anwender das "Error"-Blatt angezeigt und er bekommt - wenn ncoh nicht gespeichert wurde - die Abfrage nach dem Speichern. Verneint er diese Abfrage, hat aber zwischendurch schon einmal gespeichert, wären beim nächsten Öffnen der Datei die "falschen" Blätter sichtbar:

Viel Erfolg,
Charlie

Anzeige
Vielleicht doch die Formel ?
28.08.2002 12:45:12
Andreas

Wie gesagt, raubt diese Aktion fast 100% der CPU-Leistung und die Eingaben sind ziemlich langsam und unvollständig übernommen.

Gibt es vielleicht doch die Möglichkeit per Formel ein Makro zu starten, wenn in A2 eine Eingabe gemacht wird???

Vielen Dank!

Vielleicht doch die Formel ?
28.08.2002 12:45:53
Andreas

Wie gesagt, raubt diese Aktion fast 100% der CPU-Leistung und die Eingaben sind ziemlich langsam und unvollständig übernommen.

Gibt es vielleicht doch die Möglichkeit per Formel ein Makro zu starten, wenn in A2 eine Eingabe gemacht wird???

Vielen Dank!

Anzeige
Re: Vielleicht doch die Formel ?
28.08.2002 13:13:50
Charlie
Hallo Andreas,

das kann ich nicht wirklich verstehen. Bei meinem Rechner (PIII, 600Mhz, 256MB-Ram) merke ich überhaupt nichts von der Schleife. Hier aber eine Alternativlösung mit OnEntry:

Viel Erfolg,
Charlie

Re: Vielleicht doch die Formel ?
28.08.2002 23:59:50
Charlie
Hallo Andreas,

ich hatte Dir auch dazu eine Alternativlösung gepostet, die ist aber - keine Ahnung warum - in einem völlig falschen Thread gelandet:
https://www.herber.de/forum/messages/153710.html

Viel Erfolg,
Charlie

Anzeige
Anzeige

Infobox / Tutorial

Automatisierung in Excel: Warten auf Eingabe


Schritt-für-Schritt-Anleitung

  1. Öffne die Arbeitsmappe und gehe zum Visual Basic for Applications (VBA)-Editor. Du kannst dies tun, indem Du ALT + F11 drückst.

  2. Füge das Workbook_Open-Ereignis hinzu:

    • Gehe im Projekt-Explorer auf „DieseArbeitsmappe“ und füge folgenden Code ein:
    Private Sub Workbook_Open()
       If IsEmpty(Sheets("Tabelle1").Cells(2, 1).Value) Then
           Call WarteAufEingabe
       End If
    End Sub
  3. Erstelle die Wartefunktion:

    • Füge ein neues Modul hinzu und erstelle die Funktion WarteAufEingabe:
    Sub WarteAufEingabe()
       Do While IsEmpty(Sheets("Tabelle1").Cells(2, 1).Value)
           DoEvents
       Loop
       ' Hier kannst Du den Code für das Makro einfügen, das nach der Eingabe ausgeführt werden soll
    End Sub
  4. Speichere die Arbeitsmappe als Makro-fähige Datei (z.B. .xlsm).


Häufige Fehler und Lösungen

  • Problem: Das Makro startet nicht, wenn die Eingabe in A2 erfolgt.

    • Lösung: Stelle sicher, dass das Workbook_Open-Ereignis korrekt implementiert ist. Du kannst auch den Debugger verwenden, um zu überprüfen, ob die Bedingung für IsEmpty korrekt funktioniert.
  • Problem: Das Programm läuft extrem langsam.

    • Lösung: Überprüfe, ob Du die richtige Methode DoEvents verwendest, um die Steuerung an das Betriebssystem zurückzugeben. Dies kann helfen, die Eingabeverzögerung zu minimieren.

Alternative Methoden

Wenn das oben beschriebene Verfahren nicht zu den gewünschten Ergebnissen führt, gibt es alternative Ansätze:

  1. Formeln zur Überwachung: Excel unterstützt keine direkten Funktionen, um Makros zu starten. Du kannst jedoch eine benutzerdefinierte Funktion erstellen, die bei Änderungen in A2 entsprechende Aktionen auslöst. Dies erfordert jedoch eine Kombination aus VBA und Formeln, um den Status zu überwachen.

  2. Worksheet_Change-Ereignis: Trotz der Bedenken, die Du geäußert hast, könnte das Worksheet_Change-Ereignis eine praktikable Lösung darstellen. Dies wird ausgeführt, wenn eine Zelle verändert wird:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Me.Range("A2")) Is Nothing Then
           ' Dein Makro-Aufruf hier
       End If
    End Sub

Praktische Beispiele

Ein einfaches Beispiel für ein Makro, das auf eine Eingabe in Zelle A2 reagiert:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("A2")) Is Nothing Then
        MsgBox "Eingabe in A2 erkannt!"
        ' Hier kannst Du den Code für das gewünschte Makro einfügen
    End If
End Sub

In diesem Beispiel wird eine Nachricht angezeigt, wenn in A2 etwas eingegeben wird, und Du kannst das Makro entsprechend anpassen.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False: Dies kann helfen, die Leistung zu verbessern, während das Makro läuft. Vergiss nicht, es am Ende wieder auf True zu setzen.
  • Vermeide unnötige Schleifen: Halte deine Makros so effizient wie möglich, um die CPU-Auslastung gering zu halten.
  • Teste Deine Makros regelmäßig: Überprüfe die Funktionalität nach jeder Änderung, um sicherzustellen, dass alles wie gewünscht funktioniert.

FAQ: Häufige Fragen

1. Kann ich das Warten auf Eingabe auch ohne Schleifen umsetzen?
Es gibt derzeit keine native Excel-Funktion, die dies ermöglicht. Das Warten auf eine Eingabe erfordert in der Regel eine Schleife oder ein Ereignis.

2. Was ist DoEvents und warum ist es wichtig?
DoEvents gibt die Kontrolle an das Betriebssystem zurück, sodass Benutzer weiterhin mit Excel interagieren können, während eine Schleife läuft. Dadurch werden Eingaben flüssiger erfasst.

3. Gibt es eine Möglichkeit, Excel zu zwingen, ein Makro bei jeder Eingabe in Zelle A2 auszuführen?
Ja, dies kann durch das Worksheet_Change-Ereignis erreicht werden, welches automatisch beim Ändern einer Zelle in einem Arbeitsblatt ausgelöst wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige