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, 09:43
(Dieser Beitrag wurde zuletzt bearbeitet: 16.10.2019, 09: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, 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: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, 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: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.
|