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

Codvereinfachung

Codvereinfachung
16.03.2018 13:00:08
Daniel
Geschätzte Excel-Liebhaber
Ich stehe vor folgendem Problem: Im Zuge einer Code-Vereinfachung möchte ich z.B. folgenden Codeblock auf das Wesentliche reduzieren:
'löscht vorgängig alle Daten, Quellenhinweise, Kommentarfelder und Positionen
Sheets("GR").Select
If MsgBox("Wollen Sie die Tabelle wirklich mit dem Beispiel befüllen lassen? Wenn Sie auf 'Ja' drücken, werden alle bisher eingetragenen Daten in sämtlichen Tabellenblättern unwiderruflich gelöscht!", vbYesNo + vbQuestion, "Warnhinweis") vbYes Then Exit Sub
Range("DataPersons").ClearContents
Range("Aliments").ClearContents
Range("Sources").ClearContents
Range("NeedsSide1").ClearContents
Range("NeedsSide2").ClearContents
Range("WhiteCells").ClearContents
Range("Incomes").ClearContents
Range("NeedsPlus").ClearContents
Range("OverflowGR").ClearContents
Sheets("RawData").Range("E1:F20,I1:J20,M1:N20").ClearContents
Wie kann ich mir die mehrfache Erwähnung von ClearContents sparen? Habt Ihr da eine Idee?
Vielen Dank für eure Hilfe

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Codvereinfachung
16.03.2018 13:14:39
EtoPHG
Hallo Daniel,
Wieso ist das ein Problem?
Du hast den Code schon und er läuft. Was soll denn hier noch optimiert werden.
Jeder Umbau, macht den Code unverständlicher für andere.
Du kannst nicht Methoden (Ausführungen auf verschiedene Objekte) 'komprimieren'.
Gruess Hansueli
AW: Codvereinfachung
16.03.2018 13:21:12
Daniel
Salü Hansueli
Danke für deine Antwort. Das Problem ist, dass es ein Excel-Projekt mit sehr viel Code ist und ich nun versuche, an jeder möglichen Stelle den Code zu vereinfachen, damit das Programm schneller läuft. Gewisse Tipps und Tricks sind mir schon bekannt, aber ich wollte eben wissen, ob auch eine Möglichkeit der Vereinfachung besteht wenn die gleiche Methode auf verschiedene Objekte angewandt wird.
Mit der EndWith-Struktur kann man verschiedene Methoden für das gleiche Objekt vereinfachen, gibt es das also auch umgekehrt?
Beste Grüsse - Daniel
Anzeige
oder mit Union
16.03.2018 13:40:42
Werner
Hallo Daniel,
Union(Range("DataPersons"), Range("Aliments"), Range("Sources"), Range("NeedsSide1"), _
Range("NeedsSide2"), Range("WhiteCells"), Range("Incomes"), Range("NeedsPlus"), _
Range("OverflowGR")).ClearContents
Sheets("RawData").Range("E1:F20,I1:J20,M1:N20").ClearContents
Gruß Werner
AW: oder mit Union
16.03.2018 14:03:36
snb
Verwende:
Sub M_snb()
Range("datapersons,Aliments,Sources").ClearContents
End Sub

Danke-wieder zu kompliziert gedacht. o.w.T.
16.03.2018 14:11:53
Werner
AW: oder mit Union
16.03.2018 14:11:08
Luschi
Hallo Daniel,
noch weniger Schreibarbeit hast Du mit diesem Code:
Dim rg As Range
Set rg = Range("DataPersons,Aliments,Sources,NeedsSide1,NeedsSide2,WhiteCells,Incomes,NeedsPlus,OverflowGR")
rg.ClearContents
'weitere Code
set rg = Nothing
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Codvereinfachung um Leistung zu steigern
16.03.2018 14:31:13
EtoPHG
Hallo Daniel,
Zitat: ...damit das Programm schneller läuft.
Das ist nun eine ganz andere Anforderung, als nur den Code zu vereinfachen.
Da hast du dir ein denkbar schlechten Ausschnitt aus dem Code gewählt.
Jeglicher Umbau würde IMHO diesen Code nicht verschnellern.
Was es aber zu beachten gibt:
Das Löschen von Bereichen, löst oft eine Neuberechnung aus, falls Formeln sich auf diese Bereiche beziehen. Suche nach getMoreSpeed im Forum, das u.a. die Bildschirmaktualisierung und Neukalkulation vorübergehende ausschaltet.
Zudem wendest du noch .Select an, ein denkbar überflüssiger und verlangsamender Befehl in VBA, dazu lese bitte Achtung Makrorekorder oder...
Gruess Hansueli
Anzeige
AW: Codvereinfachung
16.03.2018 13:23:26
ChrisL
Hi Daniel
Sehr sinnvoll erachte ich den Umbau hier auch nicht, aber dennoch eine Variante.
Sub t()
Dim ar As Variant, i As Integer
ar = Array("DataPersons", "Aliments", "Sources") ' weiter ergänzen
For i = LBound(ar) To UBound(ar)
Range(ar(i)).ClearContents
Next i
End Sub
cu
Chris
AW: Codvereinfachung
16.03.2018 19:39:51
Daniel
Herzlichen Dank euch allen, ich bin begeistert, was da alles zusammengekommen ist :)
Wenngleich die Umbauten in dem Fall offenbar womöglich keinen grossen Gewinn an Geschwindigkeit bringen, bin ich doch sehr froh um die Inputs, gerade auch um "schlankere" Codes zu schreiben.
Beste Grüsse und habe nochmals vielen Dank - Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige