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

Arbeiten mit With

Arbeiten mit With
27.03.2020 18:04:05
Steve
Moin Leute,
ich habe mir mal einen Rat zu Herzen genommen und versuche nun mehr mit With zu arbeiten.
Ich habe einen mit dem Makrorecorder aufgenommenen Code bearbeitet und versucht so gut es geht WITH zu benutzen. Der Code funktioniert. Aber wäre es möglich jemand könnte sich diesen mal anschauen und mir sagen, was ich wohl noch, vor allem im Hinblick auf WITH, verbessern kann.
Sub Austausch ()
With Sheets("LISTE").Cells
.Delete Shift:=xlUp
With Range("A1")
Application.CutCopyMode = False
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1"), , xlYes).Name = "Tabelle1"
End With
End With
With Windows("QUELLE.xlsm").Activate
Sheets("LISTE").Range("TESTOUT[#All]").Copy
End With
With Windows("AUSTAUSCH.xlsm").Activate
Sheets("LISTE").Range("A1").Select
ActiveSheet.Paste
End With
Range("TESTOUT[[#Headers],[1]]").Select
ActiveSheet.ListObjects("TESTOUT").Name = "TESTIN"
ActiveSheet.ListObjects("TESTIN").ShowAutoFilterDropDown = False
Application.CutCopyMode = False
ActiveWorkbook.Close SaveChanges:=True
Application.DisplayAlerts = True
End Sub
Ziel des Makros soll sein Daten zwischen einer Datei und einer anderen auszutauschen. Dabei wird die vorher bestehende Tabelle gelöscht, eine neue intelligente Tabelle eingefügt, die Daten eingefügt und der Tabellennamen geändert. Anschließend wird die Austauschdatei gespeichert und geschlossen.
Ich danke schon einmal für die Hilfe
Liebe Grüße
Steve

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeiten mit With
27.03.2020 19:13:34
Daniel
Hi
Das entscheidende ist nicht die With-Klammer, sondern dass man vollständig referenziert, dh immer die Objektkette verwendet
Workbook.WorkSheet.Range
Dh workbook und worksheet immer benennen und den Ausdruck AcktiveSheet möglichst nicht zu verwenden (im Prinzip nur dann denn der Anwender vor Makrostart das zu bearbeitende Sheet auswählen soll)
Beim Einfügen von Excelzellen sollte man das PasteSpecial anstelle des allgemeinem Paste verwenden, denn dann muss man nichts selektieren. Das .Paste verwendet man für Objekte wie Bilder aus der Windows-Zwischenablage.
Sub Austausch ()
With Workbooks("AUSTAUSCH.xlsm")
With.Sheets("LISTE")
.Cells.Delete Shift:=xlUp
.ListObjects.Add(xlSrcRange, .Range("$A$1"), , xlYes).Name = "Tabelle1"
Workbooks("QUELLE.xlsm").Sheets("LISTE").Range("TESTOUT[#All]").Copy
.Range("A1").PasteSpecial xlpasteall
.ListObjects("TESTOUT").Name = "TESTIN"
.ListObjects("TESTIN").ShowAutoFilterDropDown = False
Application.CutCopyMode = False
End with
.Close SaveChanges:=True
End with
Application.DisplayAlerts = True
End Sub
Gruß Daniel
PS code ist nicht auf Tippfehler geprüft.
Bitte nicht kopieren, sondern lesen, verstehen und dann selber schreiben.
Anzeige
AW: Arbeiten mit With
29.03.2020 19:52:11
Steve
Moin Daniel,
Ich komme erst morgen dazu das zu testen, aber danke schon einmal für deine Hilfe. Ich sehe da war bei mir noch viel zum nachbessern. Dabei hatte ich eigentlich ein gutes Gefühl bei der Sache. Nungut, ich versuche mir das zu merken und in Zukunft umzusetzen.
Aber wenn ich das richtig lese und es mir versuche ein wenig laienhaft bildlich vorzustellen, dann springt mein code immer von Blatt zu Blatt. Deiner hingegen bleibt bei der Austauschdatei und greift von dort auf die andere Datei zu.
Hat mein Code, von der Lesbarkeit abgesehen eigentlich noch andere Nachteile? Benötigt der mehr Arbeitsspeicher oder dauert er - bei diesem code vielleicht nicht relevant - länger?
Ich werde morgen also mal versuchen den den Code umzusetzen und dann berichten.
Bis dahin noch einen schönen Sonntagabend und vielen dank.
Liebe Grüße
Steve
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige