Registriert seit: 29.09.2015
Version(en): 2030,5
08.06.2018, 11:43
(Dieser Beitrag wurde zuletzt bearbeitet: 08.06.2018, 11: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, 12:13
(Dieser Beitrag wurde zuletzt bearbeitet: 08.06.2018, 12: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, 12: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, 10:52
(Dieser Beitrag wurde zuletzt bearbeitet: 11.06.2018, 10: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, 12:23
(Dieser Beitrag wurde zuletzt bearbeitet: 11.06.2018, 12: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, 13:14
(Dieser Beitrag wurde zuletzt bearbeitet: 11.06.2018, 13: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:=xlPasteValues
Da kam ja eine Fehlermeldung.
siehe #5
Registriert seit: 29.09.2015
Version(en): 2030,5
VBEditor Alt F11
ObjectBrowser F2
|