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

Kopieren nur beim bestimmten Wert

Kopieren nur beim bestimmten Wert
26.10.2013 18:00:33
Pascal
Guten Tag
Ich habe ein Problem und zwar möchte ich eine ganze Zeile (von Spalte A-L)kopieren, die einen bestimmten Wert in der Spalte L enthält.
Details:
1. "Userform" gebe ich eine belibige Zahl ein (also sie ist nicht immer dieselbe), die in der Spalte L enthalten ist und dann wird dies gefiltert (wird nur Auftrag X in der Spalte L angezeigt).
2. Mit dem VBA will ich die Werte von z.B. Spalte A10-L10 kopieren und in ein anderes Dokument einfügen.
Hinweis: Es sollen alle Zeilen kopiert werden, die den Wert in Spalte L Auftrag X enthaltet.
Beispiel:
Userbild
Ich möchte jetzt den Wert 1034581 kopieren Zeile 10&11 will ich kopieren bis Spalte L und in einer anderen Mappe bei "A9" wieder einfügen und es sollen nur werte eingefügt werden und nicht die Formel.
Vielen Dank für eure Hilfe!
Gruss Pascal

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bilder sagen mehr als,....
26.10.2013 18:50:10
Matze
Hallo Pascal,
..tausend Worte.Nun manchmal hift´s hast dir auch richtig dolle Mühe gegeben - Lach.
Du benutzt da doch den Autofilter, nutze dessen Möglichkeiten doch aus und kopiere die gefilterten Werte der SpalteL um diese dann in den Zielbereich der neuen Tabelle (in meinem Beispiel als Werte) einzufügen.
Ich kenne nicht die UserForm die du nutzen willst lege dir ein Butten auf die UF und weise diesem folgendses Makro zu:
Option Explicit
Dim letzteZ As Long
Sub AutofilterErgebnisKopieren()
'Kopiert gefilterte Daten nach Tabellenblatt"Gefiltert"
'fügt die Werte ab der letzten "benutzen" Zeile ein
Application.CutCopyMode = False
ActiveSheet.AutoFilter.Range.Offset(1). _
Resize(ActiveSheet.AutoFilter.Range.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible).copy
With Worksheets("Gefiltert") 'Zieltabelle anpassen
'letzteZ = .Range("A65536").End(xlUp).Offset(1, 0).Row '(bis Version 2003)
letzteZ = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row '(ab Version 2007)
.Cells(letzteZ, 1).PasteSpecial Paste:=xlFormulas
End With
Application.CutCopyMode = True
Sheets("Tabelle1").Activate
End Sub
Anbei eine simple Musterdatei: https://www.herber.de/bbs/user/87821.xlsm
Matze

Anzeige
AW: Bilder sagen mehr als,....
26.10.2013 20:25:11
Pascal
Hallo Matze
Danke für das Schnelle erstellen dieser VBA. Ich habe noch ein kleines Problem. Den Code funktioniert nicht ganz, wegen 2 verschiedener Excel-Mappen vielleicht weiss du da eine Lösung für das Problem.
Vielen Dank.
Den Code noch in Textform:
Option Explicit
Dim letzteZ As Long
Sub AutofilterErgebnisKopieren()
'Kopiert gefilterte Daten nach Tabellenblatt"Gefiltert"
'fügt die Werte ab der letzten "benutzen" Zeile ein
Application.CutCopyMode = False
ActiveSheet.AutoFilter.Range.Offset(1). _
Resize(ActiveSheet.AutoFilter.Range.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible).Copy
Workbooks.Open "C:\Users\Pascal\Desktop\QS-PVProd-pk32-FlasherdatenAnKunden-PVwxyz_v5. _
xltm"
With Worksheets("1-FlasherdatenKundeAusgewaehlt").Select
Range("A9").Select  'Zieltabelle anpassen
'letzteZ = .Range("A65536").End(xlUp).Offset(1, 0).Row '(bis Version 2003)
letzteZ = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row '(ab Version 2007)
.Cells(letzteZ, 1).PasteSpecial Paste:=xlFormulas
End With
Application.CutCopyMode = True
Windows("Modulleistungsdaten-MSII-Mono-170W-20130528-Aktuell-v0.2.xls"). _
Activate
Sheets("DatenTransferAnKunden").Activate
End Sub
Gruss Pascal
Userbild
Userbild

Anzeige
Rückfragen:...
26.10.2013 21:35:59
Matze
Hallo Pascal
klare Definitionen sind das A und O
a) wie ist der Pfad? Beide Dateien im selben Verzeichnis?
b) Name der Zieldatei
c) Name der Quelldatei (enthält dieses Makro)
d) im Dateinamen hast du v0.2.xls muss der . vor der 2 sein? verwirrend!
e) Quelldatei hast du im Format xls? ist das korrekt? arbeitet ihr noch mit 2003
ansonsten anpassen als .xlsm oder .xltm
Option Explicit
'Diese Sub in ein Modul in der Mappe wo gefiltert wird
'und einem Button zuweisen
Sub AutofilterErgebnisKopierenAndereDatei()
Dim letzteZ As Long
Dim WkbZiel As Workbook 'Zieldateivariable
Dim WkbQuelle As Workbook ' Quelldatei
Set WkbZiel = "C:\Users\Pascal\Desktop\QS-PVProd-pk32-FlasherdatenAnKunden-PVwxyz_v5.xltm "
Set WkbQuelle = "C:\Users\Pascal\Desktop\Modulleistungsdaten-MSII-Mono-170W-20130528-Aktuell-v0. _
2.xls"
Application.CutCopyMode = False
With ThisWorkbook.Worksheets("DatenTransferAnKunden") 'mit der Quelldatei
.ActiveSheet.AutoFilter.Range.Offset(1). _
Resize(.ActiveSheet.AutoFilter.Range.Rows.Count - 1).SpecialCells(xlCellTypeVisible).copy
End With
With Wkb.Worksheets("1-FlasherdatenKundeAusgewaehlt") 'mit der Zieldatei
'ermitteln der letzten benutzen Zeile der Spalte A und Offset1 nach unten
letzteZ = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'einfügen der Werte ab letzteZ Spalte A
.Cells(letzteZ, 1).PasteSpecial Paste:=xlFormulas
End With
Application.CutCopyMode = True
Windows.Application.ThisWorkbook.Activate 'bist ja mit dem Makro in der Datei
Sheets("DatenTransferAnKunden").Activate
End Sub
Rückmeldung wäre nett!
Gruß Matze
So bin wech...
Anderenfalls deinen Beitrag auf "offen" setzten

Anzeige
AW: Rückfragen:...
26.10.2013 22:58:24
Pascal
Hallo Matze
Ja sorry da steht es.
2. Mit dem VBA will ich die Werte von z.B. Spalte A10-L10 kopieren und in ein anderes Dokument einfügen.
a) wie ist der Pfad? Beide Dateien im selben Verzeichnis?
- "C:\Users\Pascal\Desktop\" Ja beide im gleichen.
b) Name der Zieldatei
- QS-PVProd-pk32-FlasherdatenAnKunden-PVwxyz_v5.xltm (wxyz = ThisWorkbook.Worksheets("2-FlashDatenAnKunde").Range("C4").Value & "_v5_" & Format(Now(), "dd.mm.yyyy"))
c) Name der Quelldatei (enthält dieses Makro)
- Modulleistungsdaten-MSII-Mono-170W-20130528-Aktuell-v0.2 (ja enthählt Makro)
d) im Dateinamen hast du v0.2.xls muss der . vor der 2 sein? verwirrend!
- Nicht zwingend steht für Version 0.2
e) Quelldatei hast du im Format xls? ist das korrekt? arbeitet ihr noch mit 2003
ansonsten anpassen als .xlsm oder .xltm
- Ja bei uns gibts noch Computer mit Office 2003, aber hauptsächlich haben wir 2007.
Den Code habe ich ausprobiert und hatte folgende Fehlermeldung:
Userbild
Meine Aufgabe, die ich habe!
Ok wenn die Angaben das A&O sind, werde ich meine Gedanken ganz offen legen was ich machen möchte.
Resp. mit Abbildungen.
Schritt 1: Auftrag eingeben Kopieren -- Filtert die Aufträge
Userbild

Schritt 2:
Kopiert dies in "C:\Users\Pascal\Desktop\QS-PVProd-pk32-FlasherdatenAnKunden-PVwxyz_v5.xltm" -- Register "1-FlasherdatenKundeAusgewaehlt"
Userbild
$
Schritt 3: C4 nehmen beim Speichern als ersatz von ....wxyz(Auftrag)_V5_26.10.2013(Datum)
Userbild
Schritt 4: Nur Register "2-FlashDatenAnKunde" als PDF speichern und nur so weit wie die Zahlen gehen (ohne Nullen) -- Gleiches Ziel wie Quelle
Userbild
Schritt 5: Dazu auch als CSV (MS-DOS) speichern. -- Gleiches Ziel wie Quelle
Userbild
Schritt 6: Nun zum Schluss diese beide Datei (PDF,CSV) als E-Mail Anhang senden.
Userbild
So das wars das sind meine Überlegungen und wenn dir etwas fehlt bite fragen.
Vielen Dank und wenn du eine andere idee hast kannst du dies einbringen.
Gruss Pascal

Anzeige
AW: Rückfragen:...
26.10.2013 23:01:41
Pascal
Dieser Thread offen!

AW: Kopieren nur beim bestimmten Wert
31.10.2013 08:57:19
EtoPHG
Hallo zusammen,
Der erste Fehler "Objekt erforderlich" tritt auf, weil Rows.Count nicht qualifiziert ist! _ Der Fehler müsste verschwinden, wenn die Referenzierung auf das With-Objekt gemacht wird, sprich:

letzteZ = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Row '(ab Version 2007)

...ein kleines . und schon ist referenziert ;-)
Der zweite Fehler "Type unverträglich" ergibt sich aus den beiden Zeilen:Set WkbZiel = "String"
Set WkbQuelle = "String"
, da dieses beiden Variablen als Workbook-Objekte definiert sind, kann man ihnen nicht einen einfachen String zuordnen. Für diese Zuweisung ist das Objekt einer 'geöffneten' Arbeitsmappe zwingende Voraussetzung. Die zweite Zeile könnte also lauten:
Set WkbQuelle = Workbooks.Open "C:\Verzeichnis\Dateiname.xltm"

Die Zielmappe ist vermutlich die Mappe, in welcher der Code abläuft. Dann:
Set WkbZiel = ThisWorkbook

, andernfalls ebenfalls wie die Quellmappe setzen.
Im Code ist strikt darauf zu achten, dass immer die ganze Hierarchie der Referenzierung mitgegeben wird,
also z.B. Workbooks().Worksheets().Range... etc,
oder WkbZiel.Worksheets("Blattname").. etc.!
P.S. @Pascal:Bilder sind halt nur manchmal hilfreich. Leider lassen sich keine Codes aus Bildern direkt in den VB-Editor zu kopieren und anonymisiert und auf das Problem reduzierte Beispielmappen sind hier wesentlich effizienter zur Fehleranalyse!!
Gruess Hansueli

Anzeige
AW: Kopieren nur beim bestimmten Wert
05.11.2013 19:51:41
Pascal
Hallo EtoPHG
Danke viel mal, aber ich habe wieder ein Problem.
Dieser Abschnitt macht Probleme was ist da den los?
Vielen Dank und gruss
Pascal
With WkbQuelle.Worksheets("DatenTransferAnKunden") 'mit der Quelldatei
.ActiveSheet.AutoFilter.Range.Offset(1). _
Resize(.ActiveSheet.AutoFilter.Range.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy
End With
Den ganzen Code:
Option Explicit
'Diese Sub in ein Modul in der Mappe wo gefiltert wird
'und einem Button zuweisen
Sub AutofilterErgebnisKopierenAndereDatei()
Dim letzteZ As Long
Dim WkbZiel As Workbook 'Zieldateivariable
Dim WkbQuelle As Workbook ' Quelldatei
Set WkbQuelle = ThisWorkbook
Application.CutCopyMode = False
With WkbQuelle.Worksheets("DatenTransferAnKunden") 'mit der Quelldatei
.ActiveSheet.AutoFilter.Range.Offset(1). _
Resize(.ActiveSheet.AutoFilter.Range.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy
End With
Set WkbZiel = Workbooks.Open("C:\Users\Pascal\Desktop\QS-PVProd-pk32-FlasherdatenAnKunden- _
PVwxyz_v5.xltm")
With WkbZiel.Worksheets("1-FlasherdatenKundeAusgewaehlt") 'mit der Zieldatei
'ermitteln der letzten benutzen Zeile der Spalte A und Offset1 nach unten
letzteZ = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'einfügen der Werte ab letzteZ Spalte A
.Cells(letzteZ, 1).PasteSpecial Paste:=xlFormulas
End With
Application.CutCopyMode = True
Windows.Application.ThisWorkbook.Activate 'bist ja mit dem Makro in der Datei
Sheets("DatenTransferAnKunden").Activate
End Sub

Anzeige
AW: Kopieren nur beim bestimmten Wert
07.11.2013 20:01:50
Pascal
Dieser Thread ist wieder offen bitte weitere Vorschläge oder Antworten, Danke
Und Gruss
Pascal

Bitte weitere Vorschläge
07.11.2013 20:03:09
Pascal
Dieser Thread ist wieder offen bitte weitere Vorschläge oder Antworten, Danke
Und Gruss
Pascal

AW: Bitte weitere Vorschläge
07.11.2013 20:04:43
Pascal
Bitte Vorschläge machen
Vielen Dank

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige