Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
428to432
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
428to432
428to432
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

copy/paste

copy/paste
18.05.2004 16:46:01
Roland
Hallo,
ich stehe vor folgendem Problem. Ich habe in einer Arbeitsmappe mehrere Arbeitsblätter mit jeweils ca 100 Zeilen Eintragungen. In den Spalten 9 sind einx und /oderin 10 ein R oder auch keins von beidem eingetragen. Ich möchte nun gerne alle Arbeitsblätter durchlaufen, nachsehen, in welcher Zeile kein x und/oder R steht. Wenn kein Bezeichner da steht, soll die Zeile kopiert und in ein Ergebnis Arbeitsblatt eingetragen werden. Dabei soll auch nicht in allen Arbeitsblättern gesucht werden. Ich habe schon einmal begonnen, aber ich komme irgendwie nicht weiter. Ich weiß z.B nicht, wie ich die kopierte Zeile in das Ergebnisblatt eintragen soll, da ich ja immer die nächst freie Zeile nehmen muss.
Würd mich freuen, wenn sich das mal jemand ansehen könnte.
Vielen Dank.
Grüße
Roland
Dim aRow As Integer
Dim objZeile As Range
'Alle Monatsblätter durchlaufen.
'Wenn die Spalte A nicht leer ist, aber die Spalten 9 und 10, dann die Zeile kopieren und
'in das Tabellenblatt "Nicht in Rest oder Abrechnung" eintragen
Application.ScreenUpdating = False
'Für jedes Tabellenblatt in der geöffneten Mappe
For Each objBlatt In ActiveWorkbook.Worksheets
'Wenn der Tabellenblattname nicht "Nicht in Rest oder Abrechnung" ist...
If objBlatt.Name "Nicht in Rest oder Abrechnung" Then
'Wenn der Tabellenblattname nicht "Rest" ist......
If objBlatt.Name "Rest" Then
'Wenn der Tabellenblattname nicht "Abrechnung" ist...
If objBlatt.Name "Abrechnung" Then
'Für jede Zeile von 7 bis 65536 oder bis zur letzten Zeile
For aRow = 7 To Range("A65536").End(xlUp).Row
'Wenn in der Zeile "aRow" Spalte 9 kein "X" steht, dann...
If Cells(aRow, 9).Value "x" Then
'Wenn in der Zeile "aRow" Spalte 10 kein "R" steht, dann...
If Cells(aRow, 10).Value = "R" Then
'...die Zeile von Spalte 1 bis 8 kopieren...
Range(Cells(aRow, 1), Cells(aRow, 8)).Copy
Sheets("Nicht in Rest oder Abrechnung").Select
For Each objZeile In ActiveWorksheet
'Wenn leere Zeile gefunden, dann...
If IsEmpty(objZeile.Cells(1)) = True Then

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ergänzung
Roland
Hallo,
ich bins nochmal. Ich habe noch ein wenigg gebastelt, aber leider fuktioniert das irgendwie nicht so wie es soll.
Ich habe den Code mal unten angehängt.
Würd mich freuen, denn da mal jemand durchblickt.
Vielen Dnak.
Grüße
Roland

Private Sub Nicht_zu_finden_Check()
Dim aRow As Integer
Dim objZeile As Range
'Alle Monatsblätter durchlaufen.
'Wenn die Spalte A nicht leer ist, aber die Spalten 9 und 10, dann die Zeile kopieren und
'in das Tabellenblatt "Nicht in Rest oder Abrechnung" eintragen
bRow = 7
Application.ScreenUpdating = False
'Für jedes Tabellenblatt in der geöffneten Mappe
For Each objBlatt In ActiveWorkbook.Worksheets
'Wenn der Tabellenblattname nicht "Nicht in Rest oder Abrechnung" ist...
If objBlatt.Name <> "Nicht in Rest oder Abrechnung" Then
'Wenn der Tabellenblattname nicht "Rest" ist......
If objBlatt.Name <> "Rest" Then
'Wenn der Tabellenblattname nicht "Abrechnung" ist...
If objBlatt.Name <> "Abrechnung" Then
'Für jede Zeile von 7 bis 65536 oder bis zur letzten Zeile
For aRow = 6 To Range("A65536").End(xlUp).Row
If Cells(aRow, 1).Value <> "" Then
'Wenn in der Zeile "aRow" Spalte 9 kein "X" steht, dann...
If Cells(aRow, 9).Value <> "x" Then
'Wenn in der Zeile "aRow" Spalte 10 kein "R" steht, dann...
If Cells(aRow, 10).Value <> "R" Then
'...die Zeile von Spalte 1 bis 8 kopieren...
Range(Cells(aRow, 1), Cells(aRow, 8)).Copy
Sheets("Nicht in Rest oder Abrechnung").Select
If Cells(bRow, 1).Value = "" Then
If Cells(bRow, 2) = "" Then
ActiveSheet.Paste Destination:=Worksheets("Nicht in Rest oder Abrechnung").Range("A1:A8")
bRow = bRow + 1
End If
End If
End If
End If
End If
Next
End If
End If
End If
Next
End Sub

Anzeige
AW: Ergänzung
NE
Abend Roland,
probier' mal ;-) :
Option Explicit

Sub rol()
Dim aRow As Long
Dim objZeile As Range
Dim objBlatt As Worksheet
'Für jedes Tabellenblatt in der geöffneten Mappe
For Each objBlatt In ActiveWorkbook.Worksheets
'Namensprüfung
If objBlatt.Name <> "Nicht in Rest oder Abrechnung" Or _
objBlatt.Name <> "Rest" Or objBlatt.Name <> "Abrechnung" Then
'Für jede Zeile von 7 bis 65536 oder bis zur letzten Zeile
aRow = 7
While aRow < objBlatt.Range("A65536").End(xlUp).Row
'Prüfung X or R
If objBlatt.Cells(aRow, 9).Value = "X" Xor objBlatt.Cells(aRow, 10).Value = "R" Then
aRow = aRow + 1 'die nächste bitte
Else
'...die Zeile von Spalte 1 bis 8 kopieren...
Range(objBlatt.Cells(aRow, 1), objBlatt.Cells(aRow, 8)).Copy _
Sheets("Nicht in Rest oder Abrechnung").Range("A65536").End(xlUp).Offset(1, 0)
Application.CutCopyMode = 0
aRow = aRow + 1 'die nächste bitte
End If
Wend
End If
Next
End Sub

cu Nancy
Anzeige
Vielen Dank!
Roland
Hallo,
vielen Dank.
Funktioniert bestens.
Gruß
Roland

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige