Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1324to1328
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

Inhalte zusammenkopieren

Inhalte zusammenkopieren
19.08.2013 20:14:49
Claudia
Hallo zusammen,
ich habe folgendes Makro gebastelt:
Sub Daten_auslesen_für_alle_roten_Reiter()
Dim blatt As Worksheet
For Each blatt In ActiveWorkbook.Worksheets
If blatt.Tab.ColorIndex = 3 Then
blatt.Select
Run "Makro5"
End If
Next blatt
End Sub
Sub Makro5()
wert = 3
If Range("h" & wert) = "fehlerhaft" Then
Range("E" & wert & ":" & "I" & wert).CopySelection.Copy
Sheets("zusammen").Select
Range("a65536").End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
End If
End Sub
Ziel soll sein, dass aus allen roten Reiter der Bereich E:I der betreffenden Zeile kopiert wird, wenn H Wert = fehlerhaft. Die Prüfung auf H funktioniert, aber das kopieren des Bereiches - fett markiert - nicht.
Wer kann mir weiterhelfen? Da ich noch in den Anfängen bin, wäre mir eine Hilfe bei diesem Makro lieber als ein Top-Makro, was zwar toll wäre, mir aber nicht helfen würde (werde es vermutlich nicht verstehen).
LG
Claudia

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

Betreff
Datum
Anwender
Anzeige
AW: Inhalte zusammenkopieren
19.08.2013 20:19:35
Claudia
Siuper wäre es allerdings, wenn mir jemand von Euch zusätzlich eine Schleife von Zeile 3 bis 10
einbauen könnte. Danke!

AW: Inhalte zusammenkopieren
19.08.2013 21:26:48
fcs
Hallo Claudia,
eines jener Dinge bei VBA unter Excel, die du auch als Anfängering schon beherzigen solltest ist das Vermeiden von
...Select
Selection...
Sequenzen.
Deshalb von mir zwei Versionen.
1. deine Version etwas optimiert
2. wie ich es machen würde
Gruß
Franz
Sub Daten_auslesen_für_alle_roten_Reiter()
Dim blatt As Worksheet
For Each blatt In ActiveWorkbook.Worksheets
If blatt.Tab.ColorIndex = 3 Then
blatt.Select
Call Makro5(wks:=blatt)
End If
Next blatt
End Sub
Sub Makro5(wks As Worksheet)
Dim wert
For wert = 3 To 10
If wks.Range("h" & wert) = "fehlerhaft" Then
wks.Range("E" & wert & ":" & "I" & wert).Copy
Sheets("zusammen").Select
Range("a65536").End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
End If
Next
End Sub
Meine Version:
'Code in einem allgemeinen Modul
Sub Daten_auslesen_für_alle_roten_Reiter()
Dim blatt As Worksheet
For Each blatt In ActiveWorkbook.Worksheets
If blatt.Tab.ColorIndex = 3 Then
Call Makro5(wksQuelle:=blatt)
End If
Next blatt
End Sub
Private Sub Makro5(wksQuelle As Worksheet)
Dim lngZeile As Long, Zeile_Ziel As Long
Dim wksZiel As Worksheet
Set wksZiel = Worksheets("zusammen")
With wksQuelle
For lngZeile = 3 To 10
If .Cells(lngZeile, 8) = "fehlerhaft" Then
With wksZiel
Zeile_Ziel = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
End With
.Range(.Cells(lngZeile, 5), .Cells(lngZeile, 9)).Copy _
Destination:=wksZiel.Cells(Zeile_Ziel, 1)
End If
Next lngZeile
End With
wksZiel.Activate
End Sub

Anzeige
AW: Inhalte zusammenkopieren
19.08.2013 21:42:34
Claudia
Hallo Franz,
das überarbeite Makro funktioniert prima. Was hat es mit dem Zusatz (wks As Worksheet) auf sich?
Kann man das auch in den COde selbst reinschreiben?
Dein eigenes Makro schaue ich mir morgen in Ruhe an. Ich weiß, ich muss noch viel üben. Leider mache ich die meisten Makros noch per Recorder und schreibe sie dann nur um.
Danke schön!
LG
Claudia

AW: Inhalte zusammenkopieren
19.08.2013 22:15:28
fcs
Hallo Claudia,
das 2. Makro muss ja wissen in welchem Blatt es die Werte prüfen soll. Diese Information wird mit dem Parameter wks übergeben.
In deiner 1. Version, in der nur der Wert in der 3. Zeile geprüft wurde konntest du das mit dem Aktivieren der Blätter noch steuern.
Jetzt, da du mehrere Zeilen prüfen willst, ist das Blatt "zusammen" ständig das aktuelle Blatt. Deshalb muss für die zu prüfenden und kopierenden Zellen die Referenz auf das andere Tabellenblatt mit angegeben werden. Deshalb der zusätzliche Parameter.
Gruß
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige