Fragen zu Excel-VBA

Hallo Wissende,

Ich als VBA-Neuling habe mehrere Fragen (und Excel2000 und Win2000):

  1. ich habe in einem Makro eine „InputBox“ eingebaut. Wie spreche ich die Schaltfläche „Abbrechen“ an?
    D.h. wie lautet der Code wenn, ich eine bestimmtes Ereignis durch Anklicken der Schaltfläche „Abbrechen“ starten lassen möchte?

  2. Wie lasse ich Makros im Hintergrund laufen (z.B. das Öffnen einer Datei soll nicht auf dem Monitor zu sehen sein)?

  3. Die Anweisung „On Error GoTo fehler“ um Laufzeitfehler zu vermeiden funktioniert nur EINMAL.
    D.h. bei zwei falschen Eingaben in Folge endet das Makro doch mit einem Laufzeitfehler.
    Wie kann ich das vermeiden?

Vielen Dank für Eure Antworten sagt

Roland

Servus Namenskollege :wink:

  1. ich habe in einem Makro eine „InputBox“ eingebaut. Wie
    spreche ich die Schaltfläche „Abbrechen“ an?
    D.h. wie lautet der Code wenn, ich eine bestimmtes Ereignis
    durch Anklicken der Schaltfläche „Abbrechen“ starten lassen
    möchte?

Wenn auf „abbrechen“ geklickt wird, ist der Rückgabewert der InputBox-Funktion ein leerer String (mit Länge 0), also genauso, wie wenn gar nichts eingegeben wird.

  1. Wie lasse ich Makros im Hintergrund laufen (z.B. das Öffnen
    einer Datei soll nicht auf dem Monitor zu sehen sein)?

Beim Öffnen einer Datei ist doch sowieso nichts zu sehen, was sollte denn da am Bildschirm angezeigt werden? Oder ich verstehe deine Frage nicht …

  1. Die Anweisung „On Error GoTo fehler“ um Laufzeitfehler zu
    vermeiden funktioniert nur EINMAL.
    D.h. bei zwei falschen Eingaben in Folge endet das Makro doch
    mit einem Laufzeitfehler.
    Wie kann ich das vermeiden?

Dazu müsste ich das ganze Makro sehen, um feststellen zu können, was darin alles passiert.
Was geschieht denn im Makro nach dem Sprung zu „Fehler“? Ist es möglich, etwas einzugeben, während das Makro noch mit der Fehlerroutine beschäftigt ist? Bei Fehlern in der Fehlerroutine gibt es nämlich immer einen Laufzeitfehler.

MfG
Roland W. aus Ö.

Hallo Roland,
zu 1:
variant1 = inputbox „Bitte geben Sie Sie etwas ein“
if variant1 = „“ then exit sub
else …

Abbrechen einer Inputbox ist gleichzusetzen mit keinem Eintrag
Gruß,
Florian

Hallo Roland,

  1. ich habe in einem Makro eine „InputBox“ eingebaut. Wie
    spreche ich die Schaltfläche „Abbrechen“ an?
    D.h. wie lautet der Code wenn, ich eine bestimmtes Ereignis
    durch Anklicken der Schaltfläche „Abbrechen“ starten lassen
    möchte?

Wenn auf „abbrechen“ geklickt wird, ist der Rückgabewert der
InputBox-Funktion ein leerer String (mit Länge 0), also
genauso, wie wenn gar nichts eingegeben wird.

wenn ich aber verschiedene Reaktionen auf „es wird Nichts eingegeben und OK geklickt“ bzw. „es wird auf Abbrechen geklickt“ hervorrufen möchte?

  1. Wie lasse ich Makros im Hintergrund laufen (z.B. das Öffnen
    einer Datei soll nicht auf dem Monitor zu sehen sein)?

Beim Öffnen einer Datei ist doch sowieso nichts zu sehen, was
sollte denn da am Bildschirm angezeigt werden? Oder ich
verstehe deine Frage nicht …

Z.B. in einem Makro wird eine Datei geöffnet, etwas zur Datei hinzugefügt und die Datei unter anderem Namen wieder gespeichert. Und davon soll nichts zu sehen sein.

  1. Die Anweisung „On Error GoTo fehler“ um Laufzeitfehler zu
    vermeiden funktioniert nur EINMAL.
    D.h. bei zwei falschen Eingaben in Folge endet das Makro doch
    mit einem Laufzeitfehler.
    Wie kann ich das vermeiden?

Dazu müsste ich das ganze Makro sehen, um feststellen zu
können, was darin alles passiert.
Was geschieht denn im Makro nach dem Sprung zu „Fehler“? Ist
es möglich, etwas einzugeben, während das Makro noch mit der
Fehlerroutine beschäftigt ist? Bei Fehlern in der
Fehlerroutine gibt es nämlich immer einen Laufzeitfehler.

Den Syntax werde ich noch nachliefern.

MfG
Roland O. aus D.

Servus Roland

wenn ich aber verschiedene Reaktionen auf „es wird
Nichts eingegeben und OK geklickt“ bzw. „es wird
auf Abbrechen geklickt“ hervorrufen möchte?

Das geht mit InputBox nicht.

Z.B. in einem Makro wird eine Datei geöffnet, etwas zur Datei
hinzugefügt und die Datei unter anderem Namen wieder
gespeichert. Und davon soll nichts zu sehen sein.

Ich versteh’s immer noch nicht ganz.
Was für eine Datei wird da geöffnet? Excel oder etwas Anderes?
Was ist dabei am Bildschirm zu sehen, was du nicht sehen willst?

Den Syntax werde ich noch nachliefern.

Ich bitte dringendst darum, damit dir geholfen werden kann!

MfG
Roland W. aus V. in Ö.

Hallo Roland W. aus V. in Ö.,

wenn ich aber verschiedene Reaktionen auf „es wird
Nichts eingegeben und OK geklickt“ bzw. „es wird
auf Abbrechen geklickt“ hervorrufen möchte?

Das geht mit InputBox nicht.

Das ist sooo nicht ganz richtig.
Es gibt eine (allerdings meines Wissens undokumentierte) Funktion namens StrPtr(). Diese liefert einen Zeiger auf den eingegebenen String zurück. Auch wenn ich nichts eingebe und OK drücke, gibt es einen Zeiger. Wenn ich Abbrechen drücke, gibt es ihn nicht (also 0)
Die Funktion kann man z.B. so verwenden:

Sub Bsp
Dim Eingabe$
Eingabe = Inputbox („Gib was ein - oder nicht“)
If StrPtr(Eingabe) = 0 Then
MsgBox „Abbrechen“
Else
MsgBox „OK“
EndIf
End Sub

Gruß
Daniel

Hallo Roland,

Z.B. in einem Makro wird eine Datei geöffnet, etwas zur Datei
hinzugefügt und die Datei unter anderem Namen wieder
gespeichert. Und davon soll nichts zu sehen sein.

Ich versteh’s immer noch nicht ganz.
Was für eine Datei wird da geöffnet? Excel oder etwas
Anderes?
Was ist dabei am Bildschirm zu sehen, was du nicht sehen
willst?

Ich möchte eine Excel-Datei öffen, dieser Datei ein Wort hinzufügen und unter neuem Namen wieder abspeichern. Wenn ich dieses Makro als Schaltfläche in die Symbolleiste integriere, diese dann anklicke und Das Makro ausgeführt wird, sehe ich am Bildschirm wie diese Datei geöffnet wird. Da ich aber nicht möchte, dass diese Datei zu sehen ist, sollte irgend ein Befehl ins Makro eingebaut werden (etwas wie Visible = False) derdie Bildschrimansicht unterdrückt.

Gruß
Roland

Servus Roland,

Ich möchte eine Excel-Datei öffen, dieser Datei ein Wort
hinzufügen und unter neuem Namen wieder abspeichern. Wenn ich
dieses Makro als Schaltfläche in die Symbolleiste integriere,
diese dann anklicke und Das Makro ausgeführt wird, sehe ich am
Bildschirm wie diese Datei geöffnet wird. Da ich aber nicht
möchte, dass diese Datei zu sehen ist, sollte irgend ein
Befehl ins Makro eingebaut werden (etwas wie Visible = False)
derdie Bildschrimansicht unterdrückt.

Probier’s einmal mit Application.ScreenUpdating = False
(nach dem Speichern der Datei wieder auf true setzen)

Schöne Grüße
Roland

Danke, es klappt!
Gruß
Roland