AW: Schleife funktioniert nicht richtig
14.03.2016 21:49:16
EasyD
So
ausprobiert
mir ist ja klar, was du mir mit der kleinen MsgBox zeigen wolltest. Auf die Idee das danach laufende Makro einfach mal auszuschalten war ich noch nicht gekommen. Und wer hätte es gedacht, das kopieren funktioniert tatsächlich so wie gewünscht. Jetzt ist mein Fragezeichen allerdings noch größer geworden.
Ich muss etwas ausholen:
Nach der Schleife läuft nicht nur das ExportCSV ab, sondern noch 2 weitere. Ich habe die aber wirklich mehrfach durchgeschaut und keinen Verweis auf die ominöse Zelle A5 auf dem Blatt Eingabe gefunden bis auf einen einzigen, der aber keine Rolle spielen dürfte. Deshalb dachte ich auch nicht im Traum daran dass es daran liegen könnte.
Ich kann leider die Datei nicht einfach hochladen, da ich sonst wahnsinnig viel Arbeit mit anonymisieren hätte. Vielleicht willst du aber mal nachschauen und die Leiche in meinem Keller finden. Bitte auch Bescheid geben wenn du da keinen Bock drauf hast (was ich verstehen könnte). Jetzt wird es ziemlich viel, vielleicht poste ich mal einfach die Codes - Wenn das noch Erklärungen bedarf, natürlich gerne...
Formeln - erzeugt die Formeln auf dem Tabellenblatt Ex. Die Formeln greifen Daten ab aus dem Blatt Import. Es werden insgesamt 10 Zeilen mit Formeln gefüllt.
Sub Formeln()
'Zuerst auf dem Blatt Ex die letzte Speicherung löschen (ohne Überschriften)
Sheets("Ex").Range("A2:G50").ClearContents
'Eintragen der Formeln
'Der Betrag jeweils als Summewenns bzw Summenprodukt in Abhängigkeit von blabla und Konto
Sheets("Ex").Activate
Range("B2").Value = Sheets("Eingabe").Range("K6")
Range("A2").FormulaR1C1 = _
"=SUMPRODUCT((Import!C[5]=Eingabe!R6C1)*(Import!C[7]=Eingabe!R6C9)*(Import!C[8]=RC[1])*( _
Import!C[12]))"
Range("C2").Value = Sheets("Eingabe").Range("K3")
Range("D2").Formula = "=Import!G2"
Range("E2").Value = "blablaText"
Range("F2").FormulaR1C1 = "=MONTH(RC[-2])&""_""&YEAR(RC[-2])"
Range("B3").Value = Sheets("Eingabe").Range("K7")
Range("A3").FormulaR1C1 = _
"=SUMPRODUCT((Import!C[5]=Eingabe!R6C1)*(Import!C[7]=Eingabe!R6C9)*(Import!C[8]=RC[1])*( _
Import!C[12]))"
Range("C3").Value = Sheets("Eingabe").Range("K3")
Range("D3").Formula = "=Import!G2"
Range("E3").Value = "blablaText"
Range("F3").FormulaR1C1 = "=MONTH(RC[-2])&""_""&YEAR(RC[-2])"
Range("B4").Value = Sheets("Eingabe").Range("K8")
Range("A4").FormulaR1C1 = _
"=SUMPRODUCT((Import!C[5]=Eingabe!R6C1)*(Import!C[7]=Eingabe!R6C9)*(Import!C[8]=RC[1])*( _
Import!C[12]))"
Range("C4").Value = Sheets("Eingabe").Range("K3")
Range("D4").Formula = "=Import!G2"
Range("E4").Value = "blablaText"
Range("F4").FormulaR1C1 = "=MONTH(RC[-2])&""_""&YEAR(RC[-2])"
Range("B5").Value = Sheets("Eingabe").Range("K9")
Range("A5").FormulaR1C1 = _
"=SUMPRODUCT((Import!C[5]=Eingabe!R6C1)*(Import!C[7]=Eingabe!R6C9)*(Import!C[8]=RC[1])*( _
Import!C[12]))"
Range("C5").Value = Sheets("Eingabe").Range("K3")
Range("D5").Formula = "=Import!G2"
Range("E5").Value = "blablaText"
Range("F5").FormulaR1C1 = "=MONTH(RC[-2])&""_""&YEAR(RC[-2])"
Range("B6").Value = Sheets("Eingabe").Range("K10")
Range("A6").FormulaR1C1 = _
"=SUMPRODUCT((Import!C[5]=Eingabe!R6C1)*(Import!C[7]=Eingabe!R6C9)*(Import!C[8]=RC[1])*( _
Import!C[12]))"
Range("C6").Value = Sheets("Eingabe").Range("K3")
Range("D6").Formula = "=Import!G2"
Range("E6").Value = "blablaText"
Range("F6").FormulaR1C1 = "=MONTH(RC[-2])&""_""&YEAR(RC[-2])"
Range("B7").Value = Sheets("Eingabe").Range("K11")
Range("A7").FormulaR1C1 = _
"=SUMPRODUCT((Import!C[5]=Eingabe!R6C1)*(Import!C[7]=Eingabe!R6C9)*(Import!C[8]=RC[1])*( _
Import!C[12]))"
Range("C7").Value = Sheets("Eingabe").Range("K3")
Range("D7").Formula = "=Import!G2"
Range("E7").Value = "blablaText"
Range("F7").FormulaR1C1 = "=MONTH(RC[-2])&""_""&YEAR(RC[-2])"
Range("B8").Value = Sheets("Eingabe").Range("K12")
Range("A8").FormulaR1C1 = _
"=SUMIFS(Import!C[12],Import!C[5],Eingabe!R6C1,Import!C[7],Eingabe!R7C9)"
Range("C8").Value = Sheets("Eingabe").Range("K3")
Range("D8").Formula = "=Import!G2"
Range("E8").Value = "blablaText"
Range("F8").FormulaR1C1 = "=MONTH(RC[-2])&""_""&YEAR(RC[-2])"
Range("B9").Value = Sheets("Eingabe").Range("K13")
Range("A9").FormulaR1C1 = _
"=SUMIFS(Import!C[12],Import!C[5],Eingabe!R6C1,Import!C[7],Eingabe!R8C9)"
Range("C9").Value = Sheets("Eingabe").Range("K3")
Range("D9").Formula = "=Import!G2"
Range("E9").Value = "blablaText"
Range("F9").FormulaR1C1 = "=MONTH(RC[-2])&""_""&YEAR(RC[-2])"
Range("B10").Value = Sheets("Eingabe").Range("K14")
Range("A10").FormulaR1C1 = _
"=SUMIFS(Import!C[12],Import!C[5],Eingabe!R6C1,Import!C[7],Eingabe!R9C9)"
Range("C10").Value = Sheets("Eingabe").Range("K3")
Range("D10").Formula = "=Import!G2"
Range("E10").Value = "blablaText"
Range("F10").FormulaR1C1 = "=MONTH(RC[-2])&""_""&YEAR(RC[-2])"
'0,00-Beträge = Ganze Zeile löschen
Dim zeller As Range
a:
For Each zeller In Range("A1", "A20")
If zeller.Value = "0" Then
zeller.EntireRow.Delete
GoTo a
End If
Next zeller
End Sub
ExportCSV - erstellt csvDateien aus dem Tabellenblatt Ex
Sub ExportCSV()
Dim Bereich As Object, Zeile As Object, Zelle As Object
Dim strTemp As String
Dim strDateiname As String
Dim strTrennzeichen As String
Dim strMappenpfad As String
Dim blnAnfuehrungszeichen As Boolean
Sheets("Ex").Activate
'Kopf- und Fusszeilen bearbeiten
With Sheets("Ex").PageSetup
.LeftHeader = Sheets("Eingabe").Range("A5") 'DAS HIER IST DIE EINZIGE STELLE
.CenterHeader = Sheets("Eingabe").Range("A6") '
.RightHeader = "blablaText" & " " & Format(Worksheets("Import").Range("G2"), "mm.yyyy") _
.RightFooter = "Stand: &D, &T Uhr" '
.LeftFooter = "blablaText"
.PrintTitleRows = ""
.PrintTitleColumns = ""
.Orientation = xlLandscape
.PaperSize = xlPaperA4
End With
strMappenpfad = ActiveWorkbook.FullName
strDateiname = Worksheets("Eingabe").Range("A5") & "_" & "blablaText" & "_" & Format(Worksheets( _
"Import").Range("G2"), "mm.yyyy") & ".csv"
strTrennzeichen = ";"
blnAnfuehrungszeichen = False
Set Bereich = ActiveSheet.UsedRange
Open strDateiname For Output As #1
For Each Zeile In Bereich.Rows
For Each Zelle In Zeile.Cells
If blnAnfuehrungszeichen = True Then
strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
Else
strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
End If
Next
If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
Print #1, strTemp
strTemp = ""
Next
Close #1
Set Bereich = Nothing
End Sub
Drucken - stößt den aktiven Drucker an
Sub Drucken()
Sheets("Ex").Select
ActiveWindow.SelectedSheets.PrintOut , ActivePrinter:=sPrinter, Copies:=1, Collate:=True
End Sub
Tut mir leid, ich finde den Fehler selber nicht....
schalte ich alle drei Makro's aus, wird ordentlich in die Zelle A5 kopiert. schalte ich eines der drei (egal welches!!!) wieder an, funktioniert es wieder nicht.