Makro zu Zeilen kopieren

Hallo, ich möchte ganze Zeilen aus Tabellenblätter wenn die 1 Bedingung ist, kopieren.

Folgendes Marko steht schon, nur kopiert es mir nicht die ganze Zeile, sondern nur die Zelle :frowning:

Kann mir jemand helfen?
Danke und gruss,
christian

Sub kopi()

Dim lngZeilenIndex As Long
Dim intSpaltenindex As Integer
Sheets(„31231 Schötmar“).Select
For intSpaltenindex = 3 To 4
For lngZeilenIndex = 1 To 10
Cells(lngZeilenIndex, intSpaltenindex).Select
If Selection.Value = „a“ Then
Selection.Copy
Sheets(„Priorität“).Select
Cells(lngZeilenIndex, intSpaltenindex).Select
ActiveSheet.Paste
End If
Next
Next
Sheets(„Priorität“).Select
End Sub

wenn du das hier abänderst:
Cells(lngZeilenIndex, intSpaltenindex).Select

sollte es gehen…

Cells(lngZeilenIndex, intSpaltenindex). Entirerow. Select
bzw Entirecolumn statt row…
Cells ist eben nunmal nur eine Zelle ^^

Superschnelle Antwort, vielen Dank.

Jedoch würde es mir mehr helfen, wenn Du mir das direkt in das Marko schreibst. Ich habe es probiert und es kopiert dann einfach die einte Zelle mit dem a in das Sheet Priorität in ALLE Zellen :frowning:

Gruss Christian

Hallo?

Gibts da noch welche Excel-Cracks? :smile:

gruess christian

Hi Christian,

Gibts da noch welche Excel-Cracks? :smile:

k.A. probiers mal so (ungetestet):

Option Explicit
'
Sub kopi()
Dim lngZeilenIndex As Long, intSpaltenindex As Integer
With Sheets("31231 Schötmar")
 For intSpaltenindex = 3 To 4
 For lngZeilenIndex = 1 To 10
 If .Cells(lngZeilenIndex, intSpaltenindex).Value = "a" Then
 .Cells(lngZeilenIndex, intSpaltenindex).EntireRow.Copy \_
 Destination:=Sheets("Priorität").Cells(lngZeilenIndex, 1)
 End If
 Next lngZeilenIndex
 Next intSpaltenindex
End With
Sheets("Priorität").Activate
End Sub

Gruß
Reinhard

Ui, danke es funktioniert!

Und jetzt noch eine Steigerung :smile:
Tabellenblätter:
Priorität
Schötmar
Allgemein
Baden

–> Priorität sollen alle a-Prios aus den Tabellenblätter kopiert werden. (nihct nur schötmar)
Und zwar ohne dabei andere zu überschreiben (das ist ja nun der Fall)

[Sicher irgendein kurzer Befehl „wenn die Zeile nicht beschrieben ist“]

Gibt es auch dafür eine Lösung?
Dankeschöööön

Und jetzt noch eine Steigerung :smile:
Tabellenblätter:
Priorität
Schötmar
Allgemein
Baden
–> Priorität sollen alle a-Prios aus den Tabellenblätter
kopiert werden. (nihct nur schötmar)
Und zwar ohne dabei andere zu überschreiben (das ist ja nun
der Fall)

Grüezi Christian,

Option Explicit
'
Sub kopi()
Dim lngZei As Long, lngFrei As Long, wks As Worksheet, Blatt, B As Integer
Blatt = Array("Schötmar", "Allgemein", "Baden")
Set wks = Worksheets("Priorität")
lngFrei = IIf(wks.Range("A1") "", wks.Range("A" & Rows.Count).End(xlUp).Row + 1, 1)
If lngFrei = Rows.Count Then GoTo Fehler
For B = 0 To UBound(Blatt)
 With Worksheets(Blatt(B))
 For lngZei = 1 To 10
 If .Cells(lngZei, 3) = "a" Or .Cells(lngZei, 4) = "a" Then
 .Cells(lngZei, 3).EntireRow.Copy Destination:=wks.Cells(lngFrei, 1)
 If lngFrei = Rows.Count Then GoTo Fehler
 End If
 Next lngZei
 End With
Next B
wks.Activate
Exit Sub
Fehler:
 MsgBox "Blatt voll"
End Sub

Gruß
Reinhard

Hmm…jetzt kopiert es nur aus einem Tabellenblatt anstatt von allen 3en und auch nicht alle Zellen mit a, sondern nur 1ne.

Ausgangslage:
Allgemein= 2xa (z.b. Zelle C4, C6)
Schötmar= 1xa (z.b. Zelle C2)
Forbach= 3xa (z.b. Zelle C4, C5,C6)

Wunsch:
Alle Zeilen mit „a“ kopieren.

geht das?

Hi Christian,

Hmm…jetzt kopiert es nur aus einem Tabellenblatt anstatt von
allen 3en und auch nicht alle Zellen mit a, sondern nur 1ne.

jain, der Code kopiert schon mehr, aber überschreibt sich immer wieder selbst, ändere das :

.Cells(lngZei, 3).EntireRow.Copy Destination:=wks.Cells(lngFrei, 1)
If lngFrei = Rows.Count Then GoTo Fehler

mal ab in dieses:

.Cells(lngZei, 3).EntireRow.Copy Destination:=wks.Cells(lngFrei, 1)
lngFrei=lngFrei+1
If lngFrei = Rows.Count Then GoTo Fehler

Gruß
Reinhard

Ausgangslage:
Allgemein= 2xa (z.b. Zelle C4, C6)
Schötmar= 1xa (z.b. Zelle C2)
Forbach= 3xa (z.b. Zelle C4, C5,C6)

Wunsch:
Alle Zeilen mit „a“ kopieren.

geht das?

Hi Reinhard

Hey! Herzlichen Dank, nun funktioniert es.

ABER :smile: Wenn ich das Excelsheet mit weiteren Tabellenblätter erweitere, kommt Debug…
so in etwa:

Blatt = Array(„Schötmar“, „Allgemein“, „Forbach“, „PKN Orlen“, „PKN Orlen GPZ-2“)

erscheint Debug bei:

With Worksheets(Blatt(B))

Was bedeudet dieser Befehl (Blatt(B)) ?
Und was muss ich nun anpassen?
(Nachher bin ich dann fertig :wink:

Thanks a lot !!

Hi Chriistian,

ABER :smile: Wenn ich das Excelsheet mit weiteren Tabellenblätter
erweitere, kommt Debug…
so in etwa:

tsts, welche Fehlermeldung kommt denn, sind zwar oft immer die gleichen, aber die weisen schon die Richtung wo man schauen muß,
steht da was von Index?

Blatt = Array(„Schötmar“, „Allgemein“, „Forbach“, „PKN Orlen“,
„PKN Orlen GPZ-2“)
erscheint Debug bei:
With Worksheets(Blatt(B))
Was bedeudet dieser Befehl (Blatt(B)) ?
Und was muss ich nun anpassen?

Ich tippe mal auf Schreibfehler in den Blattnamen. Blatt ist ein Array, eine Matrix, so wie A1:A5 auch ein Array ist. Beide haben 5 Einzelelemente, A1 ist das erste, A2 das zweite usw.
Bei Blatt ist das so Blatt(0) ist das erste, Blatt(1) das zweite Element usw.

Wenn wieder ma der Debugger kommt und eine Zeile gelb unterlegt, gehe mal mit der Maus langsam über Variablen wie z.B. „B“, es wird der aktuelle Wert von B angezeigt, z.B. 3, da die Zählung bei Blatt bei 0 beginnt, bedeutet die 3 das vierte Blatt, hier also „PKN Orlen“, das gibt es nicht, es ist falsch geschrieben, sonstwas.

(Nachher bin ich dann fertig :wink:

Schauen wir mal :smile:

Gruß
Reinhard

-)

Tiptop!
Nun gehts, war ein Bezeichnungsfehler im Tabellenblatt.

Hey Reinhar, vielen vielen DANK!!

gruess.
christian