MsgBox "Das Ergebnis lautet 42 Noch eine Berechnung", vbYesNo + vbInformation, "Ultimative Frage"
Das sieht doch gar nicht mal so schlecht aus. :)
#zu 1a:
Fangen wir erst mal mit dem erwähnten Unterstrich _ an.
Für eine bessere Lesbarkeit kann man diesen Unterstruch nutzen, um lange Anweisungen auf die nächste Zeile umzubrechen.
MsgBox "Das Ergebnis lautet 42 Noch eine Berechnung", _
vbYesNo + vbInformation, _
"Ultimative Frage"
Im Prinzip kann man den immer und überall setzen, wenn man es möchte - wichtig ist nur, das davor ein Leerzeichen stehen muss.
#: Werfen wir mal einen Blick auf das angezeigte Symbol im Dialogfenster - das ist ein Fragezeichensymbol. Also geht es um eine Frage, und keine Information.
Das Ändern wir ganz einfach, indem wir vbInformation durch vbQuestion ersetzen.
MsgBox "Das Ergebnis lautet 42 Noch eine Berechnung", _
vbYesNo + vbQuestion, _
"Ultimative Frage"
#: Wir sehen, dass da der Text "Noch eine Berechnung" in einer neuen Zeile steht. Wo der Zeilenumbruch stattfindet ist vorher nicht ganz klar (abhängig von der Größe des Dialogs, welche eine maximale Breite hat).
Um einen Zeilenumbruch zu erzwingen, macht man folgendes.
MsgBox "Das Ergebnis lautet 42" & vbNewLine & _
"Noch eine Berechnung", _
vbYesNo + vbQuestion, _
"Ultimative Frage"
Die Konstante vbNewLine sorgt dafür, dass das an der Stelle ein Zeilenumbruch stattfindet. Das besondere an dieser Konstante ist, dass sie je nach Betriebsystem verschieden ist.
Unter Windows besteht ein Zeilenumbruch aus der Kombintion von vbCr und vbLf,
unter MAC ist das nur vbCr. (unter Linux wäre es wieder anders, nämlich vbLf).
vbCr = Wagenrücklaufzeichen (Carriage Return)
vbLf = Zeilenvorschub (Line Feed)
Diese Zeichen / Begriffe stammen noch aus der Zeit der Schreibmaschine.
Keiner will sich dieser Unterschiede merken - außer man hat oft damit Kontakt, dann merkt man sich diese irgendwann - deshalb ist man gut beraten die Konstante vbNewLine zu verwenden.
#zu 1b:
MsgBox() ist eine Funktion; Funktionen zeichnen sich dadurch aus - wie in der Mathematik - dass sie nach getaner Arbeit etwas zurück geben. Auch MsgBox() liefert etwas zurück, nämlich die Information darüber welche Schaltfläche vom Benutzer gedrückt wurde (siehe Rückgabewerte).
Diese Information sollte man sich in einer Variable merken (der Name der Variable ist frei wählbar, muss jedoch mit einem Buchstaben beginnen).
Dim variable 'Variable deklarieren; hier ohne Angabe des Datentyps, deshalb ist sie automatisch vom Typ: Variant
variable = MsgBox("Das Ergebnis lautet 42" & vbNewLine & _
"Noch eine Berechnung", _
vbYesNo + vbQuestion, _
"Ultimative Frage")
Jetzt kann man die Variable nutzen, um zu unterscheiden...
If variable = vbYes Then
'Ja-Schaltfläche wurde geklickt
'...
Else
'Nein-Schaltfläche wurde geklickt (es gibt in diesem Fall keine andere Möglichkeiten; weil vbYesNo)
Application.Quit 'Excel schließen - siehe Hinweis weiter unten
End If
Im Fall vbYes sollen alle Tabellen(blätter) gelöscht werden, die mit "DAdams" beginnen.
Das geht am einfachsten mit einer ForEach-Schleife.
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
If Left(wks.Name, 6) = "DAdams" Then
wks.Delete
End If
Next
Mit der Funktion Left() kann man sich die ersten 6 Buchstaben geben lassen und vergleicht diese Zeichenkette dann mit der Zeichenkette "DAdams".
Falls sie übereinstimmen, dann löschen wir das Tabellenblatt (Worksheet).
Soweit erst mal.
Grüße
PS: Application.Quit schließt zwar Excel, falls jedoch noch Mappen geöffnet sind, die noch nicht gespeichert wurden, wird eine Meldung angezeigt.
Man kann das natürlich lösen, z.B. indem man über alle Mappen (Workbook) iteriert (ForEach-Schleife) und per Save Methode speichert, oder das Speichern vorgaukelt, indem man die Saved Property auf True setze.
|