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?
(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 :(
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.
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.
Hi,
das hat funktioniert, danke!
Was bewirkt warum das "-4163"?
Wo ist das dokumentiert?
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