AW: VBA Kopie Daten in anderes Tabellenblatt
15.09.2011 09:54:10
Ronald
Super, danke Franz!
Ich habe so keine Ahnung von VBA, wollte den Code trotzdem mal versuchen zu verstehen. Aus diesem Grund habe ich mal versucht jede Zeile zu dokumentieren, bin aber jetzt stecken geblieben. Wahrscheinlich habe ich schon Teile falsch interpretiert. Kann mir jemand weiterhelfen?
Sub DatenNachAuswertung()
Dim wksQuelle As Worksheet
Dim wksZiel As Worksheet
Dim lngZeileQ As Long, lngSpalteQ As Long
Dim lngZeileZ As Long, lngSpalteZ As Long
Const varMarker As Variant = "x" 'Markierung für bereits übertragene Zeilen
Const lngSpalteQ_Marker As Long = 8 'Spalte für Markierung
Set wksQuelle = Worksheets("Eingabe")
Set wksZiel = Worksheets("Auswertung A")
With wksQuelle
For lngZeileQ = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row '.Cells(.Rows.Count, 1).End(xlUp). _
Row sucht die letzte Zeile - was macht "2 To"?
If .Cells(lngZeileQ, lngSpalteQ_Marker).Value varMarker Then 'wenn in der Zelle ( _
letzteZeile, SpalteMarker) der Wert ungleich der Variable Marker ist dann
With wksZiel 'gehe in wksZiel (gleich Tabellenblatt "Auswertung A")
lngZeileZ = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 'suche die letzte Zeile und gehe _
dann eins tiefer
For lngSpalteQ = 1 To 7 'Schleife beginnt, und IngSpalteQ wird Spalte1 bis Spalte7 _
zugeordnet - welches Tabellenblatt?
Select Case lngSpalteQ 'Case gilt für IngSpalteQ, also Spalte1 bis Spalte7
Case 1 To 3: lngSpalteZ = lngSpalteQ 'Spalte 1 bis 3:
Case 5, 6: lngSpalteZ = lngSpalteQ - 1
Case Else: lngSpalteZ = 0
End Select
If lngSpalteZ > 0 Then
.Cells(lngZeileZ, lngSpalteZ).Value = wksQuelle.Cells(lngZeileQ, lngSpalteQ). _
Value
End If
Next
End With
.Cells(lngZeileQ, lngSpalteQ_Marker).Value = varMarker
End If
Next
End With
End Sub
Gruß
Ronald