Registriert seit: 11.04.2014
Version(en): Office 2007
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
Registriert seit: 30.08.2019
Version(en): 2016
16.10.2019, 10:43
(Dieser Beitrag wurde zuletzt bearbeitet: 16.10.2019, 10:43 von stchwint.)
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
Registriert seit: 11.04.2014
Version(en): Office 2007
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
Registriert seit: 30.08.2019
Version(en): 2016
Du meinst ich sollte die varablen as Long definieren?
Vorhin hat es bei mir einigermassen funktioniert. Nun funktioniert gar nichts mehr.
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo, (16.10.2019, 14: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, 14: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:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28
• stchwint
Registriert seit: 30.08.2019
Version(en): 2016
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
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo, (16.10.2019, 14: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:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28
• stchwint
Registriert seit: 30.08.2019
Version(en): 2016
Es funktioniert nun. Dank euch.
|