Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Mit IF-Funktion verarbeitete Variable aus einem anderen Modul verwenden
#11
Hallo,

wenn Du es so verwendest, wie Werner es gepostet hat, kann es nicht sein, das die Variable den wert 0 hat. Wenn Du nach dem Start deiner Excel-Datei zuallererst das Makro TEST123 startest, ist es klar, das die Variable den Initialwert enthält. Ich glaube es wäre besser, du würdest deine Datei hier hochladen.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#12
Es klappt nun ich weiss zwar nicht warum aber diesmal klappt es. Ich habe nur noch ein Problem.

In einem Extramodul steht folgendes:
Code:
  
Public AuswerteMonat As Date
Sub DatumMonat()


Dim Antwort As VbMsgBoxResult
Dim 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 Daten_Gesamt
Call Daten_MAE
Call Daten_EWAK
Call Daten_GK

End Sub
Die 4 Subs Daten_Gesamt usw. die am Ende gecallt werden funktionieren nur wenn ich ein Sub davon calle und die anderen Subs nicht calle.

Alle 4 Subs sind sehr ähnlich aufgebaut.


Code:
Sub Daten_Gesamt()
With Sheets("Gesamt")

'.PivotFields("A").DataRange.Select
'Intersect(pt.PivotFields("A").PivotItems("2004").DataRange.EntireRow, pt.PivotFields("Order Date").DataRange).Select

Rcount = Sheets("Gesamt").PivotTables("PivotTable1").ColumnRange.Count
CCount = Sheets("Gesamt").PivotTables(1).RowRange.Count
Dim NeueRangeFormeln As Range
Dim NeueRangeDatum As Range
Dim NeueRangeDatum2 As Range
Dim LetzteZeile As Long
Dim LetzteZeilenbeschriftung As Range
Dim TableRNG As Range

' Pivotdaten kopieren und einfügen


LetzteZeile = .Cells(Rows.Count, 30).End(xlUp).Row


Set TableRNG = Range(Cells(6, 1), Cells(CCount + 3, Rcount + 1))
TableRNG.Select
TableRNG.Copy
Set LetzteZeilenbeschriftung = Range(Cells(LetzteZeile + 1, 32), Cells(LetzteZeile + 1, 32))
LetzteZeilenbeschriftung.Select
   Sheets("Gesamt").Paste
   
   'Formeln kopieren und einfügen
   Set NeueRangeFormeln = Range(Cells(LetzteZeile + 1, 31), Cells(LetzteZeile + CCount - 2, 31))
       Range("AE2").Select
   Selection.Copy
       NeueRangeFormeln.Select
   Sheets("Gesamt").Paste
   Set NeueRangeDatum = Range(Cells(LetzteZeile + 1, 30), Cells(LetzteZeile + CCount - 2, 30))
   
   NeueRangeDatum.Value = AuswerteMonat
   Range("AD2").Select
   Selection.Copy
   NeueRangeDatum.Select
   Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
       SkipBlanks:=False, Transpose:=False
   Application.CutCopyMode = False
Set NeueRangeDatum2 = Range(Cells(LetzteZeile + 1, 29), Cells(LetzteZeile + CCount - 2, 29))
Range("AC2").Select
Selection.Copy
NeueRangeDatum2.Select
Sheets("Gesamt").Paste
   
   


End With

End Sub

Code:
Sub Daten_MAE()
With Sheets("MAE")

'.PivotFields("A").DataRange.Select
'Intersect(pt.PivotFields("A").PivotItems("2004").DataRange.EntireRow, pt.PivotFields("Order Date").DataRange).Select

Rcount = Sheets("MAE").PivotTables("PivotTable2").ColumnRange.Count
CCount = Sheets("MAE").PivotTables(1).RowRange.Count
Dim NeueRangeFormeln As Range
Dim NeueRangeDatum As Range
Dim NeueRangeDatum2 As Range
Dim LetzteZeile As Long
Dim LetzteZeilenbeschriftung As Range
Dim TableRNG As Range

' Pivotdaten kopieren und einfügen


LetzteZeile = .Cells(Rows.Count, 30).End(xlUp).Row


Set TableRNG = Range(Cells(6, 1), Cells(CCount + 3, Rcount + 1))
TableRNG.Select
TableRNG.Copy
Set LetzteZeilenbeschriftung = Range(Cells(LetzteZeile + 1, 33), Cells(LetzteZeile + 1, 33))
LetzteZeilenbeschriftung.Select
   Sheets("MAE").Paste
   
   'Formeln kopieren und einfügen
   Set NeueRangeFormeln = Range(Cells(LetzteZeile + 1, 31), Cells(LetzteZeile + CCount - 2, 31))
       Range("AE2:AF2").Select
   Selection.Copy
       NeueRangeFormeln.Select
   Sheets("MAE").Paste
   Set NeueRangeDatum = Range(Cells(LetzteZeile + 1, 30), Cells(LetzteZeile + CCount - 2, 30))
   NeueRangeDatum.Value = AuswerteMonat
   Range("AD2").Select
   Selection.Copy
   NeueRangeDatum.Select
   Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
       SkipBlanks:=False, Transpose:=False
   Application.CutCopyMode = False
Set NeueRangeDatum2 = Range(Cells(LetzteZeile + 1, 29), Cells(LetzteZeile + CCount - 2, 29))
Range("AC2").Select
Selection.Copy
NeueRangeDatum2.Select
Sheets("MAE").Paste
   
   


End With

End Sub
Code:
Sub Daten_EWAK()


With Sheets("EWAK")

'.PivotFields("A").DataRange.Select
'Intersect(pt.PivotFields("A").PivotItems("2004").DataRange.EntireRow, pt.PivotFields("Order Date").DataRange).Select

Rcount = Sheets("EWAK").PivotTables("PivotTable2").ColumnRange.Count
CCount = Sheets("EWAK").PivotTables(1).RowRange.Count
Dim NeueRangeFormeln As Range
Dim NeueRangeDatum As Range
Dim NeueRangeDatum2 As Range
Dim LetzteZeile As Long
Dim LetzteZeilenbeschriftung As Range
Dim TableRNG As Range

' Pivotdaten kopieren und einfügen


LetzteZeile = .Cells(Rows.Count, 30).End(xlUp).Row


Set TableRNG = Range(Cells(6, 1), Cells(CCount + 3, Rcount + 1))
TableRNG.Select
TableRNG.Copy
Set LetzteZeilenbeschriftung = Range(Cells(LetzteZeile + 1, 33), Cells(LetzteZeile + 1, 33))
LetzteZeilenbeschriftung.Select
   Sheets("EWAK").Paste
   
   'Formeln kopieren und einfügen
   Set NeueRangeFormeln = Range(Cells(LetzteZeile + 1, 31), Cells(LetzteZeile + CCount - 2, 32))
       Range("AE2:AF2").Select
   Selection.Copy
       NeueRangeFormeln.Select
   Sheets("EWAK").Paste
   Set NeueRangeDatum = Range(Cells(LetzteZeile + 1, 30), Cells(LetzteZeile + CCount - 2, 30))
   NeueRangeDatum.Value = AuswerteMonat
   Range("AD2").Select
   Selection.Copy
   NeueRangeDatum.Select
   Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
       SkipBlanks:=False, Transpose:=False
   Application.CutCopyMode = False
Set NeueRangeDatum2 = Range(Cells(LetzteZeile + 1, 29), Cells(LetzteZeile + CCount - 2, 29))
Range("AC2").Select
Selection.Copy
NeueRangeDatum2.Select
Sheets("EWAK").Paste
   
   


End With
End Sub
Code:
Sub Daten_GK()

With Sheets("GK")

'.PivotFields("A").DataRange.Select
'Intersect(pt.PivotFields("A").PivotItems("2004").DataRange.EntireRow, pt.PivotFields("Order Date").DataRange).Select

Rcount = Sheets("GK").PivotTables("PivotTable2").ColumnRange.Count
CCount = Sheets("GK").PivotTables(1).RowRange.Count
Dim NeueRangeFormeln As Range
Dim NeueRangeDatum As Range
Dim NeueRangeDatum2 As Range
Dim LetzteZeile As Long
Dim LetzteZeilenbeschriftung As Range
Dim TableRNG As Range

' Pivotdaten kopieren und einfügen


LetzteZeile = .Cells(Rows.Count, 30).End(xlUp).Row


Set TableRNG = Range(Cells(6, 1), Cells(CCount + 3, Rcount + 1))
TableRNG.Select
TableRNG.Copy
Set LetzteZeilenbeschriftung = Range(Cells(LetzteZeile + 1, 33), Cells(LetzteZeile + 1, 33))
LetzteZeilenbeschriftung.Select
   Sheets("GK").Paste
   
   'Formeln kopieren und einfügen
   Set NeueRangeFormeln = Range(Cells(LetzteZeile + 1, 31), Cells(LetzteZeile + CCount - 2, 31))
       Range("AE2:AF2").Select
   Selection.Copy
       NeueRangeFormeln.Select
   Sheets("GK").Paste
   Set NeueRangeDatum = Range(Cells(LetzteZeile + 1, 30), Cells(LetzteZeile + CCount - 2, 30))
   NeueRangeDatum.Value = AuswerteMonat
   Range("AD2").Select
   Selection.Copy
   NeueRangeDatum.Select
   Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
       SkipBlanks:=False, Transpose:=False
   Application.CutCopyMode = False
Set NeueRangeDatum2 = Range(Cells(LetzteZeile + 1, 29), Cells(LetzteZeile + CCount - 2, 29))
Range("AC2").Select
Selection.Copy
NeueRangeDatum2.Select
Sheets("GK").Paste
   
   


End With


End Sub

Sub Daten_aktualisieren()
Sheets("Gesamt").Select
Call Daten_Gesamt
Sheets("MAE").Select
Call Daten_MAE


If Sheets("Frontend").Range("K5") = "Ausland" Then
'Sheets("Frontend").Range("M1") = "1"
Sheets("Frontend").Select
Exit Sub
End If

Sheets("EWAK").Select
Call Daten_EWAK
Sheets("GK").Select
Call Daten_GK
'Sheets("Frontend").Range("M1") = "2"
Sheets("Frontend").Select


End Sub
Antworten Top
#13
Hallo,

ich habe mal versucht, wenigstens in Ansätzen deinen Code zu testen. Was bei mir bemängelt wurde, sind die nicht deklarierten Variablen RCount und CCount in den Makros Daten_Gesamt, Daten_MAE, Daten_GK und Daten_EWAK. Die Zeilen mit den Pivottabellen habe ich auskommentiert. Nachdem ich das Makro DatumMonat im Einzelschrittmodus gestartet habe und die Variable Auswertemonat gefüllt wurde, ist in allen weiteren Makros die Variable richtig gefüllt.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#14
Du meinst ich sollte die varablen as Long definieren?

Vorhin hat es bei mir einigermassen funktioniert. Nun funktioniert gar nichts mehr.
Antworten Top
#15
Hallo,

(16.10.2019, 13:19)stchwint schrieb: Du meinst ich sollte die varablen as Long definieren?

ja, siehe auch

Option Explicit, Intellisense und Techniken des Schreibens

(16.10.2019, 13:19)stchwint schrieb: Vorhin hat es bei mir einigermassen funktioniert. Nun funktioniert gar nichts mehr.

Lass es halt mal im Einzelschrittmodus ablaufen.

https://www.online-excel.de/excel/singsel_vba.php?f=104
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • stchwint
Antworten Top
#16
Also ohne den Sub AuswerteMonat funktionieren die Subs Daten_Gesamt, Daten_MAE, Daten_EWAK und Daten_GK. Die geben halt das heutige Datum aus. Aber so bald ich den Sub Datummonat reinintegriere funktioniert gar nichts mehr
Antworten Top
#17
Hallo,

(16.10.2019, 13:45)stchwint schrieb: Also ohne den Sub AuswerteMonat funktionieren die Subs Daten_Gesamt, Daten_MAE, Daten_EWAK und Daten_GK. Die geben halt das heutige Datum aus. Aber so bald ich den Sub Datummonat reinintegriere funktioniert gar nichts mehr

?????? AuswerteMonat war eine Variable und zwar als Public in einem allgemeinen Modul deklariert. Jetzt sprichst Du von einer Sub.
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • stchwint
Antworten Top
#18
Es funktioniert nun. Dank euch.
Antworten Top


Gehe zu:


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