Thema Datum  Von Nutzer Rating
Antwort
03.07.2022 11:58:21 Gast3831
NotSolved
03.07.2022 12:06:10 Gast90764
NotSolved
03.07.2022 12:22:06 Gast80786
NotSolved
Blau Hilfe Bei VBA Prüfungsaufgabe
03.07.2022 14:01:03 Gast74119
****
NotSolved
03.07.2022 14:12:19 Gast32339
NotSolved
03.07.2022 14:21:32 Gast59517
NotSolved
03.07.2022 14:44:38 Gast59646
****
NotSolved
03.07.2022 14:38:51 Gast8547
****
NotSolved
03.07.2022 15:02:15 Gast74572
NotSolved
03.07.2022 15:22:29 Gast77398
****
NotSolved
03.07.2022 15:29:07 Gast93774
****
NotSolved
03.07.2022 15:40:59 Gast22823
NotSolved
03.07.2022 15:51:45 Gast71290
****
NotSolved
03.07.2022 15:57:36 ralf_b
NotSolved
03.07.2022 16:00:11 Gast83467
NotSolved
03.07.2022 16:11:02 ralf_b
NotSolved
03.07.2022 16:17:31 Gast90730
NotSolved
03.07.2022 17:54:45 Gast97762
NotSolved
03.07.2022 18:59:21 Gast33841
NotSolved
03.07.2022 19:30:50 Gast96626
NotSolved
06.07.2022 08:20:53 Mase
NotSolved
06.07.2022 12:45:27 Gast50222
NotSolved
06.07.2022 12:56:05 Gast99552
NotSolved
06.07.2022 13:16:28 Mase
NotSolved
06.07.2022 13:19:45 Mase
NotSolved
06.07.2022 13:35:16 Gast76633
NotSolved
06.07.2022 13:37:01 Gast64028
NotSolved
06.07.2022 14:04:56 Mase
NotSolved
06.07.2022 14:34:04 Gast11777
NotSolved
06.07.2022 14:47:15 Mase
NotSolved
06.07.2022 17:59:46 Gast66606
**
NotSolved
06.07.2022 13:56:11 Mase
NotSolved

Ansicht des Beitrags:
Von:
Gast74119
Datum:
03.07.2022 14:01:03
Views:
640
Rating: Antwort:
  Ja
Thema:
Hilfe Bei VBA Prüfungsaufgabe
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 wink - 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.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
03.07.2022 11:58:21 Gast3831
NotSolved
03.07.2022 12:06:10 Gast90764
NotSolved
03.07.2022 12:22:06 Gast80786
NotSolved
Blau Hilfe Bei VBA Prüfungsaufgabe
03.07.2022 14:01:03 Gast74119
****
NotSolved
03.07.2022 14:12:19 Gast32339
NotSolved
03.07.2022 14:21:32 Gast59517
NotSolved
03.07.2022 14:44:38 Gast59646
****
NotSolved
03.07.2022 14:38:51 Gast8547
****
NotSolved
03.07.2022 15:02:15 Gast74572
NotSolved
03.07.2022 15:22:29 Gast77398
****
NotSolved
03.07.2022 15:29:07 Gast93774
****
NotSolved
03.07.2022 15:40:59 Gast22823
NotSolved
03.07.2022 15:51:45 Gast71290
****
NotSolved
03.07.2022 15:57:36 ralf_b
NotSolved
03.07.2022 16:00:11 Gast83467
NotSolved
03.07.2022 16:11:02 ralf_b
NotSolved
03.07.2022 16:17:31 Gast90730
NotSolved
03.07.2022 17:54:45 Gast97762
NotSolved
03.07.2022 18:59:21 Gast33841
NotSolved
03.07.2022 19:30:50 Gast96626
NotSolved
06.07.2022 08:20:53 Mase
NotSolved
06.07.2022 12:45:27 Gast50222
NotSolved
06.07.2022 12:56:05 Gast99552
NotSolved
06.07.2022 13:16:28 Mase
NotSolved
06.07.2022 13:19:45 Mase
NotSolved
06.07.2022 13:35:16 Gast76633
NotSolved
06.07.2022 13:37:01 Gast64028
NotSolved
06.07.2022 14:04:56 Mase
NotSolved
06.07.2022 14:34:04 Gast11777
NotSolved
06.07.2022 14:47:15 Mase
NotSolved
06.07.2022 17:59:46 Gast66606
**
NotSolved
06.07.2022 13:56:11 Mase
NotSolved