Zellenkopieren funktioniert nicht

zyclop

Erfahrenes Mitglied
Ich habe nun ein anderes Problem...ich werde es versuchen so gut wie möglich zu beschreiben.

Ausgangslage:

Ich lese aus einem Sheet Daten aus. Diese trage ich dann in ein anderes Sheet. Jedoch gibt mir das nun ganz komische Phänomene oder wie man das schreibt. auf jeden Fall habe ich eine Prozedur welche das macht.

Code:
Sub Spesen_EXPORT()

'Deklaration der Variablen
Dim Spe_Spalt_Counter As Integer
Dim Spe_Zeile_Counter As Integer
Dim BereichExport As String

Dim MonatText As String
Dim TagZahl As Integer
Dim intJahr As Integer
Dim Counter As Integer

Spe_Zeile_Counter = 28
Spe_Spalt_Counter = 5
Counter = 1
'-------------------------------------------------------------

'Funktion zum sagen wieviele Tage dieser Monat hat
MonatText = ActiveSheet.Name
    Select Case MonatText
        Case "Januar":          TagZahl = 31
        Case "Februar":         TagZahl = 28
        Case "März":            TagZahl = 31
        Case "April":           TagZahl = 30
        Case "Mai":             TagZahl = 31
        Case "Juni":            TagZahl = 30
        Case "Juli":            TagZahl = 31
        Case "August":          TagZahl = 31
        Case "September":       TagZahl = 30
        Case "Oktober":         TagZahl = 31
        Case "November":        TagZahl = 30
        Case "Dezember":        TagZahl = 31
        Case Else
                MsgBox "Achtung dieser Monat " & "''" & MonatText & "''" & " existiert nicht." & vbCrLf & vbCrLf _
                       & "Folgende Monate existieren: Januar, Februar, März, April, Mai, Juni," _
                       & "Juli, August, September, Oktober, November und Dezember. Bitte Passen" _
                       & " Sie den Arbeitsblatt-Namen unten an."
    End Select
'-------------------------------------------------------------
     
    'Falls Februar kontrollieren ob Schaltjahr
    If MonatText = "Februar" Then
        intJahr = Range("AF6").Text
        Schalt = fncSchaltjahr(intJahr)
        If Schalt = True Then
            TagZahl = "29"
            Else
            TagZahl = "28"
        End If
        Else
    End If
    '-------------------------------------------------------------
    
    TagZahl = TagZahl + 5
Do While Spe_Zeile_Counter < 37
    Spe_Spalt_Counter = 5
    
    'Überprüfung ob Zeile 32, falls Ja Counter Plus eins damit die Zeile übersprungen wird
    If Spe_Zeile_Counter = 32 Then
        Spe_Zeile_Counter = Spe_Zeile_Counter + 1
    End If
    '-------------------------------------------------------------
        std_summe = Cells(Spe_Zeile_Counter, 5)
            

            If std_summe = 0 Then
            Else
                Do While Spe_Spalt_Counter < TagZahl
                        
                    Spesen = Cells(Spe_Zeile_Counter, Spe_Spalt_Counter)
                    If Spesen > 0.1 Then
                       
                        Spe_Spalt_Counter_verw = Spe_Spalt_Counter + 1
                        Spe_Zeile_Counter_verw = 20
                        
                        Do While Spe_Zeile_Counter_verw > 7
                            
                            

                            Stunden = Cells(Spe_Zeile_Counter_verw, Spe_Spalt_Counter_verw)
                            std_summe = Cells(Spe_Zeile_Counter, 5)
                            
                            If Stunden > 0.1 Then
                                Exp_BST = Cells(Spe_Zeile_Counter_verw, 3) 'schreibe bst in variable
                                Exp_KST = Cells(Spe_Zeile_Counter, 4) 'schreibe kst in variable
                                Exp_ANZ = std_summe 'schreibe anzahl in variable
                                Exp_DAT = LastFri 'schreibe datum in variable
                                Exp_NAM = Range("AF3").Text 'schreibe namen in variable
                                Exp_MNR = Range("AF4").Text 'schreibe mitarbnr in variable
                                
                                'Funktion zur überprüfung wo ins Export geschrieben werden soll
                                Do While LeerZeil = False
                                    BereichImport = "A" & Counter
                                    test = Sheets("Export").Range(BereichImport)
                                    If test = "" Then
                                        LeerZeil = True
                                        LeeresA = "A" & Counter
                                        Else
                                        Counter = Counter + 1
                                    End If
                                Loop
                                '-------------------------------------------------------------
                                
                                'Schreiben dieser Info in die Exporttabelle
                                BereichImport = "B" & Counter
                                Sheets("Export").Range(BereichImport) = Exp_KST
                                BereichImport = "A" & Counter
                                Sheets("Export").Range(BereichImport) = Exp_BST
                                BereichImport = "C" & Counter
                                Sheets("Export").Range(BereichImport) = Exp_MNR
                                BereichImport = "D" & Counter
                                Sheets("Export").Range(BereichImport) = Exp_NAM
                                BereichImport = "E" & Counter
                                Sheets("Export").Range(BereichImport) = Exp_DAT
                                BereichImport = "F" & Counter
                                Sheets("Export").Range(BereichImport) = Exp_ANZ
                                '-------------------------------------------------------------
                                
                                Counter = Counter + 1
                                Spe_Zeile_Counter_verw = Spe_Zeile_Counter_verw - 1
                                Spe_Zeile_Counter = Spe_Zeile_Counter + 1
                                Else
                                Spe_Zeile_Counter_verw = Spe_Zeile_Counter_verw - 1
                                
                            End If
                            'Spe_Zeile_Counter_verw = Spe_Zeile_Counter_verw - 1
                        Loop
                    End If
                    
                    Spe_Spalt_Counter = Spe_Spalt_Counter + 1
                Loop
                
            End If
            
    Spe_Zeile_Counter = Spe_Zeile_Counter + 1
Loop

End Sub


Code:
1	1.1	1337	Herr TEST	        26.12.2008	1
2	2.2	1337	Herr TEST	        26.12.2008	2
3	3.3	1337	Herr TEST	        26.12.2008	3
4	4.4	1337	Herr TEST	        26.12.2008	4
1	1050/5	1337	Herr TEST	        26.12.2008	1.1
3	1070/5	1337	Herr TEST	        26.12.2008	1.2
4	1080/5	1337	Herr TEST	        26.12.2008	1.3
1	1062	1337	Herr TEST	        26.12.2008	1.11
3	1060	1337	Herr TEST	        26.12.2008	1.22
4	1710	1337	Herr TEST	        26.12.2008	1.33
Hier stimmt das Ergebnis nicht weil das 2 Fehlt. Auf Linie 6 müsste in der ersten Spalte 2 stehen und nicht drei. Das selbe gilt für die anderen Spalten. Sie sind verschoben.


Wenn ich nun bei

Code:
Spe_Spalt_Counter_verw = Spe_Spalt_Counter + 1

das + 1 wegnehme bekomme ich folgendes Resultat

Code:
1	1.1	1337	Herr TEST	        26.12.2008	1
2	2.2	1337	Herr TEST	        26.12.2008	2
3	3.3	1337	Herr TEST	        26.12.2008	3
4	4.4	1337	Herr TEST	        26.12.2008	4
4	1050/5	1337	Herr TEST	        26.12.2008	1.1
3	1070/5	1337	Herr TEST	        26.12.2008	1.2
2	1080/5	1337	Herr TEST	        26.12.2008	1.3
1	1050/5	1337	Herr TEST	        26.12.2008	1.4
4	1062	1337	Herr TEST	        26.12.2008	1.11
3	1060	1337	Herr TEST	        26.12.2008	1.22
2	1710	1337	Herr TEST	        26.12.2008	1.33
1	1063	1337	Herr TEST	        26.12.2008	1.44

Hier scheint auf den ersten blick alles gut, aber wenn Ihr genau hinschaut ist ab der vierten Linie in der ersten Spalte alles verkehrt. Das 4 müsste drei Zeilen weiter unten sein.

Hat jemand eine Ahnung wie ich das Problem lösen kann Komme wirklich nicht weiter. Bei bedarf lade ich auch die ganze xls Datei rauf.

grz zyclop
 
Hi,

wenn ich das jetzt richtig verstehe, dann schreibt der deinen BST-Wert falsch. So eine Trockenübung ist immer blöd, das beste wäre wirklich eine Beispieldatei. Und wie es am Ende aussehen soll (immer nur 123412341234 in der ersten spalte?)

-DD-
 
Ja also eigentlich sind die BSt ab Zeile 4 verkehrt...hab die datei raufgeladen. PS: PW per PN
 

Anhänge

  • Arbeitsrapport_work_2007_makro.zip
    53,7 KB · Aufrufe: 11
Folgendes wurde geändert!!

vorher: Code:
Code:
                        Spe_Zeile_Counter_verw = 20
                        
                        Do While Spe_Zeile_Counter_verw > 7

nachher: Code:
Code:
                        Spe_Zeile_Counter_verw = 8 
                        
                        Do While Spe_Zeile_Counter_verw < 21

und vorher: Code:
Code:
                               Counter = Counter + 1
                                Spe_Zeile_Counter_verw = Spe_Zeile_Counter_verw - 1
                                Spe_Zeile_Counter = Spe_Zeile_Counter + 1
                                Else
                                Spe_Zeile_Counter_verw = Spe_Zeile_Counter_verw - 1
                                
                            End If

nachher: Code:
Code:
                                Counter = Counter + 1
                                Spe_Zeile_Counter_verw = Spe_Zeile_Counter_verw + 1
                                Spe_Zeile_Counter = Spe_Zeile_Counter + 1
                                Else
                                Spe_Zeile_Counter_verw = Spe_Zeile_Counter_verw + 1
                                
                            End If


und eine kleine Codeoptimierung beim ermitteln der letzten beschriebenen Zelle: Code:
Code:
Counter = Sheets("Export").Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row + 1


SUPER DANK AN DUCKDONALD!
 
Zurück