Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1172to1176
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kopiermakro

Kopiermakro
stefan
Hallo Excel Experten,
ich brauche mal wieder eure Hilfe habe hier ein Kopier Makro welches Daten aus einem Tabellenblatt in eine anderes überträgt.
1 Problem : Die zu übertragenen Daten werden nicht ausdem Datenblatt ausgetragen bleiben erhalten
die sollen aber gelöscht werden.
2.Problem: Die daten die ausgetragen werden haben leer zeilen zwischen den einzelenen Datensätzen, und
in dem Datenblett wo sie hin sollen werden sie nicht an die erste Zeile im Datenblatt übergeben, sondern an die Position wo sie in dem Datenblatt stehen wo sie rauskopiert werden.
Hier mein bisschen Code ich brauche eure Hilfe das wäre Super Danke im vorraus:)

Private Sub CommandButton1_Click()
Dim a As Long, i As Long
Application.ScreenUpdating = False
a = 1
For i = 1 To 100
With Worksheets("Tabelle1")
If .Cells(i, "B") = "+" Then
.Rows(i).Copy _
Destination:=Worksheets("Tabelle2").Rows(a)
a = a + 1
Else
.Cells(i, "B") = "-"
.Rows(i).Copy _
Destination:=Worksheets("Tabelle3").Rows(a)
a = a + 1
End If
End With
Next i
Application.ScreenUpdating = True
End Sub

1000 Dank !!!!!!!!!111

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Kopiermakro
15.08.2010 17:06:39
fcs
Hallo Stefan,
du muss für jedes Zielblatt einen eigenen Zeilenzähler einführen.
Kopieren heißt eben Kopieren und nicht Kopieren und löschen.
Entweder muss du die Zeilen Verschien oder nach dem Kopieren Inhalte Löschen.
Ausserdem sollte man in Cells(Zeile,Spalte) die Spalte nicht durch den Buchstaben (als Text) sondern mit der Nummer (als Zahl) angeben. Der VBA-Compiler ist da zwar ziemlich tolerant, aber ich hab damit zumindest bei älteren Excelversionen schon Schiffbruch erlitten.
Nachfolgend dein Makro etwas angepasst.
Gruß
Franz
Private Sub CommandButton1_Click()
Dim a As Long, b As Long, i As Long
Application.ScreenUpdating = False
a = 1
b = 1
With Worksheets("Tabelle1")
For i = 1 To 100
If .Cells(i, 2) = "+" Then
.Rows(i).Copy _
Destination:=Worksheets("Tabelle2").Rows(a)
a = a + 1
.Rows(i).ClearContents
Else
.Cells(i, 2) = "-"
.Rows(i).Copy _
Destination:=Worksheets("Tabelle3").Rows(b)
b = b + 1
.Rows(i).ClearContents
End If
Next i
End With
Application.ScreenUpdating = True
End Sub

Anzeige
@fFranz-ginge auch Cut statt Copy?-owT
15.08.2010 17:24:21
Jonka
AW: @fFranz-ginge auch Cut statt Copy?-owT
15.08.2010 18:13:18
stefan
Hallo Franz,
Danke erstmal für die schnelle Lösung wunderbar auch tausend Dank für Erklärung super.
Eine Frage habe ich noch das Datenblett ist ja denn leer wenn ich neue Einträge habe werden die
alten überschrieben gibt es die Möglichleit die neuen Daten anzuhängen.
Danke
Ich liebe dieses Forum
AW: @fFranz-ginge auch Cut statt Copy?-owT
15.08.2010 23:18:50
fcs
Hallo Stefan,
dann muss man den Startwert des Zeilenzählers bei jedem Makrostart ermitteln.
Gruß
Farnz
Private Sub CommandButton1_Click()
Dim a As Long, b As Long, i As Long
Application.ScreenUpdating = False
'Startzeilen ermitteln
With Worksheets("Tabelle2")
If IsEmpty(.UsedRange) Then
a = 1
Else
a = .Cells.SpecialCells(xlCellTypeLastCell).Row + 1
End If
End With
With Worksheets("Tabelle3")
If IsEmpty(.UsedRange) Then
b = 1
Else
b = .Cells.SpecialCells(xlCellTypeLastCell).Row + 1
End If
End With
With Worksheets("Tabelle1")
For i = 1 To 100
If .Cells(i, 2) = "+" Then
.Rows(i).Copy _
Destination:=Worksheets("Tabelle2").Rows(a)
a = a + 1
.Rows(i).ClearContents
Else
.Cells(i, 2) = "-"
.Rows(i).Copy _
Destination:=Worksheets("Tabelle3").Rows(b)
b = b + 1
.Rows(i).ClearContents
End If
Next i
End With
Application.ScreenUpdating = True
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige