Registriert seit: 30.08.2019
Version(en): 2016
Hallo Zusammen,
anhand einer Msg-Box mit Buttons JA oder Nein wird in einem Extramodul bzw. Extrasub "DatumMonat" einer Variable "AuswerteMonat" ein bestimmter Wert mit IF-Kriterien zugewiesen. Diesen Wert möchte ich in einem anderen Modul bzw. anderem Sub "Test123" verwenden.
Aber keine Chance. Habe die Variable Public anstatt dim definiert. Da kommt nur der Wert 0 raus anstatt ein korrektes Datum.
Code:
Sub DatumMonat()
Dim Antwort As VbMsgBoxResult
Dim Meldung As String
Dim AuswerteMonat As Date
Meldung = "Auswertung für den Vormonat?"
Antwort = MsgBox(Meldung, vbYesNo + vbQuestion, "VBA-Tutorial")
If Antwort = vbNo Then
AuswerteMonat = Date
ElseIf Antwort = vbYes Then
If Month(Now()) = 1 Then
AuswerteMonat = DateSerial(year(Now()) - 1, 12, 1)
Else
AuswerteMonat = DateSerial(year(Now()), Month(Now()) - 1, Day(Now()))
End If
End If
TEST123 (AuswerteMonat)
End Sub
Code:
Sub TEST123()
With Sheets("Gesamt")
.Cells(1, 1) = AuswerteMonat
End With
End Sub
Registriert seit: 12.04.2014
Version(en): Office 365
Hi
in dem Fall gehört die Variable als Public außerhalb einer Sub
MfG Tom
Registriert seit: 11.04.2014
Version(en): Office 2007
Auch Hallo,
Du gibst bei den Aufruf des Makros TEST123 einen Parameter mit, aber in der Prozedur ist keine Parameter dabei. Ändere das mal so
PHP-Code:
Sub TEST123(AuswerteMonat as Date)
ab.
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 30.08.2019
Version(en): 2016
@CrazyTom, ja das habe ich probiert aber die Variable hat nie das aus dem Sub DatumMonat ausgegeben, sondern einfach nur null
@Steffl, habe ich auch probiert, aber wenn ich dann Test123 ausführen möchte, öffnet sich ein Fenster, welches die Auswahl eines Makros verlangt.
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
(14.10.2019, 09:33)stchwint schrieb: @Steffl, habe ich auch probiert, aber wenn ich dann Test123 ausführen möchte, öffnet sich ein Fenster, welches die Auswahl eines Makros verlangt.
dein ruft Makro DatumMonat ruft das Makro TEST123 auf, alleine kannst Du das letztgenannte nicht nutzen, ob mit meiner Ergänzung oder ohne.
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 30.08.2019
Version(en): 2016
Also baue ich ein mein Makro AuswerteMonat ein Call Test123 ein? Dann bekomme ich die Meldung dass das Argument "Call Test123" nicht optional ist.
Registriert seit: 11.04.2014
Version(en): Office 2007
14.10.2019, 13:15
(Dieser Beitrag wurde zuletzt bearbeitet: 14.10.2019, 13:15 von Steffl.
Bearbeitungsgrund: Code hinzugefügt
)
Hallo,
????? das hast Du doch bereits (Code auf das wesentliche reduziert)
(11.10.2019, 16:35)stchwint schrieb: Code:
Sub DatumMonat()
TEST123 (AuswerteMonat)
End Sub
und wenn Du es mit Call aufrufen willst, dann mache es so
Code:
Call TEST123 (AuswerteMonat)
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 30.08.2019
Version(en): 2016
Es funktioniert nicht.
Test 123 ist eine Vereinfachung von einem anderen Makro. Dieses Makro wird wieder von woanders ausgelöst. In diesem Makro möchte ich einfach nur die Variable definiert durch if-funktionen aus SUB DatumMonat verwenden.
Registriert seit: 05.09.2017
Version(en): 2013
Hallo,
keine Ahnung von wo du wann welches Makro aufrufst.
Wenn du eine Public Variable verwenden willst, dann muss die in einem allgemeinen Modul
außerhalb einer Prozedur als Public deklariert werden.
Dann kannst du
Projektweit auf die Variable zugreifen.
Code:
Public AuswerteMonat As Date
Sub DatumMonat()
Dim Antwort As VbMsgBoxResult, Meldung As String
Meldung = "Auswertung für den Vormonat?"
Antwort = MsgBox(Meldung, vbYesNo + vbQuestion, "VBA-Tutorial")
If Antwort = vbNo Then
AuswerteMonat = Date
ElseIf Antwort = vbYes Then
If Month(Now()) = 1 Then
AuswerteMonat = DateSerial(Year(Now()) - 1, 12, 1)
Else
AuswerteMonat = DateSerial(Year(Now()), Month(Now()) - 1, Day(Now()))
End If
End If
Call TEST123
End Sub
Sub TEST123()
With Sheets("Gesamt")
.Cells(1, 1) = AuswerteMonat
End With
End Sub
Gruß Werner
Registriert seit: 30.08.2019
Version(en): 2016
Hallo Werner,
ja mit Public AuswerteMonat as Date kann ich die Variable überall verwenden. Aber im Sub DatumMonat wird der Variable Auswertemonat ein Wert zugeschrieben.
Diesen Wert für die Variable möchte ich in Test123 ausgegeben bekommen. Stattdessen passiert gar nichts bzw. der Wert 0.