Registriert seit: 29.09.2015
Version(en): 2030,5
08.06.2018, 12:43
(Dieser Beitrag wurde zuletzt bearbeitet: 08.06.2018, 12:43 von snb.)
Oder: Code: Sub M_snb() With Sheet1.UsedRange For j = 1 To 10 Sheet2.Cells(1).Resize(.Rows.Count, .Columns.Count).Columns(Choose(j, 1, 4, 22, 5, 6, 7, 10, 11, 15, 18)) = .Columns(Choose(j, 9, 4, 11, 24, 10, 8, 21, 18, 5, 28)).Value Next End With End Sub
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• Rabe
Registriert seit: 10.04.2014
Version(en): 2016 + 365
08.06.2018, 13:13
(Dieser Beitrag wurde zuletzt bearbeitet: 08.06.2018, 13:13 von Rabe.)
Hallo snb,
danke, das teste ich auch.
Nun noch eine Frage: wenn ich den Quellbereich gefilert habe, wie kann ich in dem Makro dann nur die angezeigten Werte übertragen?
Registriert seit: 29.09.2015
Version(en): 2030,5
(08.06.2018, 13:13)Rabe schrieb: wenn ich den Quellbereich gefilert habe, wie kann ich in dem Makro dann nur die angezeigten Werte übertragen? Entschuldige, aber das verstehe ich nicht ganz :(
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi snb, im Original-Code werden vor dem Kopieren die Quellspalten gefiltert (325 aus 7600 Zeilen) und nur die sichtbaren Zellen kopiert und im Ziel eingefügt. Code: ... If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData ActiveSheet.ListObjects("Tabelle1").Range.autofilter Field:=18, Criteria1:="Lager" ...
Wenn ich das folgende Makro verwende: Code: Sub M_snb() For j = 1 To 10 Workbooks("EVG.xlsb").Sheets("2001").UsedRange.Columns(Choose(j, 9, 4, 11, 24, 10, 8, 21, 18, 5, 28)).Copy Workbooks("Aktuell.xlsm").Sheets("Rohdaten").Cells(1, Choose(j, 1, 4, 22, 5, 6, 7, 10, 11, 15, 18)).PasteSpecial Paste:=xlValues Next End Sub
dann werden alle Daten der Quell-Spalten in den Zielbereich eingefügt, inklusive der ausgefilterten. Ich benötige aber nur die Daten, die in den Quellspalten nicht ausgefiltert sind, also nur die sichtbaren.
Registriert seit: 29.09.2015
Version(en): 2030,5
11.06.2018, 11:52
(Dieser Beitrag wurde zuletzt bearbeitet: 11.06.2018, 11:53 von snb.)
So geht das: Code: Sub M_snb() With ThisWorkbook.Sheets(1).ListObjects(1).Range .AutoFilter 18, "Lager" For j = 1 To 10 .Columns(Choose(j, 9, 4, 11, 24, 10, 8, 21, 18, 5, 28)).Copy Sheet2.Cells(1, Choose(j, 1, 4, 22, 5, 6, 7, 10, 11, 15, 18)).PasteSpecial -4163 Next End With End Sub
NB. man filtert nicht aus, doch man filtert. Die gefilterte Daten sind sichtbar.
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• Rabe
Registriert seit: 10.04.2014
Version(en): 2016 + 365
11.06.2018, 13:23
(Dieser Beitrag wurde zuletzt bearbeitet: 11.06.2018, 13:23 von Rabe.)
Hi,
das hat funktioniert, danke!
Was bewirkt warum das "-4163"? Wo ist das dokumentiert?
Registriert seit: 04.12.2017
Version(en): 2003-2013
Hallo Ralf, meine Googlesuche hat mich hier hin geführt: https://analysistabs.com/vba-code/range/m/pastespecial/
Registriert seit: 10.04.2014
Version(en): 2016 + 365
11.06.2018, 14:14
(Dieser Beitrag wurde zuletzt bearbeitet: 11.06.2018, 14:15 von Rabe.)
Hi, das heißt also: -4163 ist xlPasteValues When XlPasteType = xlPasteValues, Only values in the copied range are pasted. Hier steht: xlPasteValues | -4163 | Werte werden eingefügt. Das definiert doch nirgends, daß nur die gefilterten Werte kopiert werden, trotzdem klappt es mit snbs Makro. Komischerweise habe ich doch schon früher probiert, die Daten zu kopieren mit: Workbooks("aktuell.xlsm").Sheets("Rohdaten").cells(1,choose(j,1,4,22,5,6,7,10,11,15,18)). PasteSpecial Paste:=xlPasteValuesDa kam ja eine Fehlermeldung. siehe #5
Registriert seit: 29.09.2015
Version(en): 2030,5
VBEditor Alt F11 ObjectBrowser F2
|