Mit IF-Funktion verarbeitete Variable aus einem anderen Modul verwenden
#1
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
Top
#2
Hi

in dem Fall gehört die Variable als Public außerhalb einer Sub 

MfG Tom
Top
#3
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
Top
#4
@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.
Top
#5
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
Top
#6
Also baue ich ein mein Makro AuswerteMonat ein Call Test123 ein? Dann bekomme ich die Meldung dass das Argument "Call Test123" nicht optional ist.
Top
#7
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
Top
#8
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.
Top
#9
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
Top
#10
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.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste