# VBA(Excel) Automatische Antowrt auf MsgBox



## Januar (22 September 2016)

Hallo, Menschen.

Ich hoffe, ich bin hier in dem Forumsteil richtig...

Zu meiner Frage:
Ich schreibe ein kleines Programm mit VBA in Excel. Bei der Ausführung wird unter anderem eine Funktion ausgeführt, die dafür sorgt, dass Excel mir eine Message-Box zeigt ("In den Arbeitsblättern, die Sie löschen möchten, könnten Daten vorhanden sein. Um die Blätter endgültig zu löschen, drücken Sie Löschen." Löschen/Abbrechen)
Ich möchte nun in meinem Programm eine Zeile haben, die diese Abfrage automatisch mit "Löschen" beantwortet, sodass der Benutzer die Abfrage nicht manuell wegklicken muss.

How do I do?

Mit freundlichen Grüßen
Januar


----------



## Larry Laffer (22 September 2016)

Was heißt "in meinem Programm" ? Du meinst hier das Excel-Sheet ?
Du kannst eine MessageBox nicht fernsteuern - du kannst aber ein weiteres Script / eine weitere Methode erstellen, die das Gleiche ohne die MessageBox-Abfrage und der anschließenden Auswertung des Results macht.
Oder du übergibst der gleichen Methode einen Parameter aus dem du ableitest, dass die MessageBox-Abfrage komplett übergangen werden soll. In diesem Fall wird die Methode ja sehr wahrscheinlich von einem anderen Punkt aufgerufen ...

Gruß
Larry


----------



## Januar (22 September 2016)

Genau, die Module und Sub-Prozeduren des Excel-Sheets sind gemeint.
In der Excel-Hilfe steht auch, dass das Dialogfeld standardmäßig angezeigt wird. Meine Frage zielt jetzt darauf ab, diesen Standard zu umgehen.
Ist das möglich?

@Larry: Wie kann ich denn auf die MessageBox-Abfrage Einfluss nehmen?


----------



## Larry Laffer (22 September 2016)

Januar schrieb:


> @Larry: Wie kann ich denn auf die MessageBox-Abfrage Einfluss nehmen?



Auf die Messagebox-Abfrage selbst kannst du keinen Einfluß nehmen - du kannst sie nur halt ggf. umgehen.
Um dazu aber konkreter werden zu können solltest du mal das besagte Script hier einstellen ...

Gruß
Larry


----------



## Januar (23 September 2016)

Das "Script" ist nur ein aufgezeichnetes Makro. Dabei wurde ein Tabellenblatt ausgewählt (Rechtsklick) und dann gelöscht.


```
ThisWorkbook.Worksheets("Name").Select
ActiveWindow.SelectedSheets.delete
```

Die Abfrage ist halt das Windows-typische "Sind Sie sicher?". Und ich möchte das Programm derart ummodellieren, dass Windows nicht fragt, bzw. dass der Benutzer nicht antworten braucht.


----------



## andy_l (23 September 2016)

Hast Du schon mal an so etwas wie das gedacht:


```
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
```

Das sollte die Abfrage unterdrücken.
Einfach vor Deinem Löschen die Alerts abschalten und danach wieder an.


----------



## Januar (26 September 2016)

Danke, andy, das hat den gewünschten Effekt erzielt


----------



## Senator42 (26 September 2016)

> Du kannst eine MessageBox nicht fernsteuern
wenn man mit der Maus auf OK drückt, wird eine Windowsmessage gesendet.
So eine Message kann auch von anderen programmen kommen  [ PostMessage(...)  ]

So ein, nicht ganz einfaches, proggi hab ich schon mal gemacht,  zum "fernsteuern" .
"Du kannst eine MessageBox nicht fernsteuern"   so schon.  Ist wohl ein hack.


----------

