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

3 Fragen :-)

3 Fragen :-)
31.03.2021 13:21:42
Eisi
Hallo zusammen,
nachfolgender Code funktioniert. Trotzdem habe ich 3 Fragen:
1. Warum funktioniert diese Variante nicht? ("D1:D" & .Rows.Count)
2. Ist der Code halbwegs vernünftig strukturiert?
3. Ich gebe der Copy die Formatierung "m²" mit. Ist diese Vorgehensweise üblich in Excel, oder bereitet es mir später im Programm Probleme? Ich könnte die "m²" natürlich auch in eine eigene Spalte schreiben.
Vielen Dank für das Feedback.
VG Eisi :-)
Sub SpalteCompleteCopy()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' Diese Variante 1 funktioniert
tbl_Quelle.Range("D1:D48576").Offset(1, 0).Copy Destination:=tbl_Ziel.Range("F2")
'    ' Diese Variante 2 funktioniert nicht
'    tbl_Quelle.Range("D1:D" & .Rows.Count).Offset(1, 0).Copy Destination:=tbl_Ziel.Range(" _
F2")
tbl_Ziel.Range("F2:F48576").NumberFormat = "General ""m²"""
tbl_Ziel.Columns("F:F").AutoFit
endmacro:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "Complete"
End Sub


6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
1) ".Eigenschaft" erfordert With
31.03.2021 13:23:37
lupo1

AW: 1) ".Eigenschaft" erfordert With
31.03.2021 13:35:24
Eisi
Danke für Dein Feedback :-)
So war es wohl nicht gemeint, weil es nicht funktioniert?
Sub SpalteCompleteCopy_Feedback()
With tbl_Quelle
' Diese Variante 2 funktioniert nicht
.Range("D1:D" & .Rows.Count).Offset(1, 0).Copy Destination:=tbl_Ziel.Range("F2")
End With
End Sub


3) Format ist nur Format, Zahl unverändert! orT
31.03.2021 13:36:11
Luc:-?
Gruß, Luc :-?

AW: 3) Format ist nur Format, Zahl unverändert! orT
31.03.2021 13:43:54
Eisi
Das bedeutet es gibt keine Probleme, weil ich ja die Zahl ohne Formatierung weiter verarbeiten kann, wenn ich nur die Zahl haben will.
Ich hatte nur im Internet gelesen, dass die Formate durcheinander geworfen wurden und aufwändig wieder gelöscht werden mussten.
Da war ich mir jetzt nicht sicher, ob es in der Programmierung üblich ist das Ganze zu trennen.
Danke Dir für das Feedback.
VG Eisi :-)

Anzeige
AW: 3 Fragen :-)
31.03.2021 13:44:49
Daniel
Hi
1. du schreibst den Punkt, dann brauchst du aber auch eine WITH-Klammer, in welcher du definierst, welches das Objekt sein soll, das eingesetzt wird wenn die Objektkette mit einem Punkt beginnt.
alternativ kannst du auch schreiben "tbl_Quelle.Rows.Count"
oder einfach nur nur "Rows.Count", da im Prinzip alle Tabellenblätter die gleiche Anzahl zeilen haben, ist es auch egal, auf welchem gezählt wird.
hierfür gibt es aber zwei Ausnahmen, bzw Fälle, in welchen man das Tabellenblatt vor Rows.Count angeben muss:
a) du arbeitest gleichzeitig mit Dateien mit dem alten 2003er-Format (xls) und dem neuen 2007er-Format (xlsx, xlsm, xlsb)
b) du hast Diagrammblätter, welche zufällig aktiv sein könnten und dann versuchst auf diesen die Zeilen zu zählen.
btw, da ist auch nicht nur der Punkt ohne WITH falsch.
mit tbl_Quelle.Range("D1:D" & .Rows.Count) hast du die ganze Spalte und könntest auch einfach ...Range("D:D") schreiben
ebenso kann man eine ganze Spalte nicht um 1 nach unten versetzen (.Offset), weil darunter nichts ist.
Außerdem muss man eine ganze Spalte immer in Zeile 1 einfügen, sonst hat sie keinen Platz und letzten Zellen des einzufügenden Bereichs würden über den unteren Rand des Blattes hinausragen.
Du meinst wahrscheinlich:
 tbl_Quelle.Range("D2:D" & tblQuelle.Cells(Rows.Count, 4).end(xlup).row).Copy

2. im Prinzip ja.
ist ja nicht viel drin. Screenupdating und DisplayAlerts musst du da nicht ausschalten.
ScreenUpdating aus bringt nur was, wenn man noch viel mit Select und Activate arbeitet (was du nicht machst)
Aktionen, die eine Systemrückfrage bewirken könnten, sollten auch nicht dabei sein.
3. ist wumpe.
Formeln schauen immer auf den Unformatierten Zellewert. VBA-Auswertungen mit .Value auch.
höchsten wenn du .Text einsetzt und dann versuchst den Text in eine Zahl zu wandeln, könnte es probleme geben.
Gruß Daniel

Anzeige
AW: 3 Fragen :-)
31.03.2021 14:43:14
Eisi
Hallo Daniel,
vielen herzlichen Dank für Deine umfangreiche Erklärung. Sehr wertvoll.
Ziel ist tatsächlich eine Spalte ab Zeile 2 in eine andere Tabelle ab Zeile 2 zu kopieren.
Da die Spalte nicht komplett gefüllt ist, kann ich - denke ich mal - nur die gesamte Spalte kopieren.
So habe ich einen sauberen Code und streiche die Variante mit Offset.
VG Eisi :-)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige