Ist es möglich eine Variable die die MsgBox beinhaltet in einer UserForm zuzuweisen?
In UserForm1 (Ein Label erstellt)
Public Sub UserForm_Activate()
Label1.Caption = "Hallo hier kommt die MsgBox" & a
End Sub
In einfachem Modul
Globale deklarierung:
strName As String
Public a As Long
'Const a As Variant = MsgBox("Test")
Dim a
Public Sub Test1()
strName = "Schachmuster"
a = MsgBox("Das Tabellenblatt" & " " & strName & " " & "existiert." & " " & "Es wird kein neues _
Tabellenblatt angelegt.", 1, "Info")
Application.OnTime Now + TimeValue("00:00:02"), "KillTheForm"
UserForm1.Show
End Sub
Public Sub KillTheForm()
Unload UserForm1
End Sub
Aufruf von Prozedure Test per Button in Tabelle1
Private Sub CommandButton1_Click()
Test1
End Sub
Als was muss ich a deklarieren damit der Inhalt von a in einer Textbox in einer UserForm ausgegeben wird und zwar mit den typischen MsgBox Eigenschaften und Symbolen, wie vbInformation?
Zuerst wird bei mir die normale MsgBox aufgemacht, dann wenn man auf OK geht erscheint die UserForm1 (die ich haben möchte), nur dort sollte eigentlich die MsgBox erscheinen, sowie sie zuvor erschienen ist vor dem OK-Klick, da steht aber nur dann Hallo hier kommt die MsgBox 1.
Warum die eins?, statt der eins sollte der Inhalt der MsgBox erscheinen, geht das und wenn ja wie?
Ich habe auch schon in den Eigenschaften des Labels1 bei Caption die MSgBox mitsamt Inhalt reingeschrieben, wird aber auch nicht verarbeitet. Irgendwie erkennt er die Variable a nicht richtig, weil ich nicht wie ich sie deklarieren soll, damit die gesamte MsgBox mit Inhalt übergeben wird. Den Datentyp der der Variablen a zugewiesen werden muss, den kenne ich halt nicht, für die gesamte MsgBox und daran scheitert es wohl, glaube ich. String, Long, Integer und Variant sind es nicht, auch mit einer Konstanten hatte ich keinen Erfolg und bei Object = Fehlermeldung. Es kommt halt immer nur diese 1 statt der MsgBox, die dort auftauchen sollte.
Also ich möchte quasi in der UserForm, die MsgBox anzeigen mit Wertübergabe. Die Wertübergabe bei strName geht, aber leider nicht bei der Variablen a und daher kommt nicht das direkte Anzeigen der MsgBox in der UserForm zur Anzeige.
Ich weiß zwar das es auch über dieses hier möglich ist:
Set objShell = CreateObject("WScript.Shell")
objShell.Popup "Hallo", 2, "Info"
Set objShell = Nothing
, aber das funktioniert nicht immer zuverlässig, obwohl ich da schon die Verweise auf Windows scripting host object gesetzt habe, aber es geht mal und dann hängt es wieder und wird nicht mehr ausgeblendet. Daher möchte ich das ganze nun über eine UserForm mir einblenden lassen. Nur die MsgBox Übergabe funktioniert da halt noch nicht.
Habe mal die Datei angehangen wie es bisher aussieht und halt noch nicht funktioniert:
https://www.herber.de/bbs/user/119993.xlsm
Achja und zwei allgemeine Fragen noch:
1.Kann mir vielleicht bitte jemand erklären was es mit Private und Public auf sich hat? Private erlaubt doch weniger Zugriff, da privat, wird ja bei den Microsoft Excel Objekten in den Arbeitsmappe angewendet z.B. ByVal usw. Aber wo und wann ist das sinnvoll mal Private und mal Public zu schreiben?
2. Wie rufe ich eine Sub auf die Argumente in Klammern dahinter stehen hat? Per Button kann ich die nicht unter Makros finden.
Also:
Sub Test(b As String)
MsgBox "Hallo Welt"
End Sub
bzw. auch dies:
Sub Test2(ByVal GebT As Date, ByRef Alter As Byte)
MsgBox MsgBox "Das ist das Geburtsdatum vom & GebT & "" &. So alt & Alter & bist Du."
End Sub
Wie kann ich diese Subs Test1 und Test2 über einen Click Button aufrufen? Befehlsschaltfläche müsste ja ein Active-X Steuerelement als Button sein, aber was schreibe ich dort rein, damit die beiden Prozeduren auch aufgerufen werden per Click auf den Active-X-Steuerbutton?
Kann jemand bitte helfen?
Beste
Grüße Markus