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

Code entschlacken

Code entschlacken
22.11.2017 17:09:07
Holger
Hallo zusammen!
Ich habe ein dickes Problem.
Mein Projekt ist zu groß, d.h. ich muss den Code kompakter machen.
Ich habe mir vieles von euch abgeschaut bzw. angeeignet.
Jetzt habe ich einen Code, der Anwendung in knapp 100 Userformen finden soll.
Viele Sachen sind (denke ich) nicht optimal gelöst und könnten mit viel weniger Code
auskommen.
Zum Projekt:
Eine Userform pro Mitarbeiter.
Drei Multipages:
Page 1:
Verschiedene Schulungspunkte, die in Kombination mit Schulungsdaten in eine Tabelle geschrieben werden.
Verschiedene Abhängigkeiten zwischen Schulungsstatus, Datum, etc. .
Vielleicht nicht ganz optimal vom Code her, aber es läuft.
Page 2:
Schulungspunkte die mit einer weiteren Tabelle verknüpft sind. Hinter jedem Punkt sind 5 Varianten definiert (kein Stern, 1-4 Sterne, als Image), also knapp 180 Sterne und Varianten die definiert sind, alle einzeln. Hier ist der Hauptknackpunkt.
Genau das Laden der Sterne beim Öffnen der Form über das Activate-Ereignis.
Page 3:
Hinterlegen von Dateipfaden in eine Tabelle. Öffnen und/ oder Drucken dieser Dateien per One-Click. Funktioniert auch relativ gut.
Hier die beiden Codes:
Teil 1: Laden der Bilder (Sterne) kein Klicken auf diese, und schreiben der Werte in Zellen der Tabelle. Der folgende Codeabschnitt also knapp 50 mal, mit allen .pictures und anderen Zellen...
Private Sub Image10o1_Click()
'Erster Stern
Image10o1.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-100.ico")
Image10o2.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-0.ico")
Image10o3.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-0.ico")
Image10o4.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-0.ico")
Me.Repaint
ThisWorkbook.Worksheets("Tabelle2").Range("M2").Value = 1
End Sub
Private Sub Image10o1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'Keine Sterne
Image10o1.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-0.ico")
Image10o2.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-0.ico")
Image10o3.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-0.ico")
Image10o4.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-0.ico")
Me.Repaint
ThisWorkbook.Worksheets("Tabelle2").Range("M2").Value = 0
End Sub

Private Sub Image10o2_Click()
'Zweiter Stern
Image10o1.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-100.ico")
Image10o2.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-100.ico")
Image10o3.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-0.ico")
Image10o4.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-0.ico")
Me.Repaint
ThisWorkbook.Worksheets("Tabelle2").Range("M2").Value = 2
End Sub

Private Sub Image10o3_Click()
'Dritter Stern
Image10o1.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-100.ico")
Image10o2.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-100.ico")
Image10o3.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-100.ico")
Image10o4.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-0.ico")
Me.Repaint
ThisWorkbook.Worksheets("Tabelle2").Range("M2").Value = 3
End Sub

Private Sub Image10o4_Click()
'Vierter Stern
Image10o1.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-100.ico")
Image10o2.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-100.ico")
Image10o3.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-100.ico")
Image10o4.Picture = LoadPicture("C:\users\hoschild\desktop\Icojam-Onebit-Star-100.ico")
Me.Repaint
ThisWorkbook.Worksheets("Tabelle2").Range("M2").Value = 4
End Sub

Teil 2:
Laden für jedes Sternenpaar bei "Userform Activate", also knapp 50 mal, nur mit anderen Zellen:
If ThisWorkbook.Worksheets("tabelle2").Range("c2").Value = "1" Then
Image1o1.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-100.ico")
Image1o2.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-0.ico")
Image1o3.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-0.ico")
Image1o4.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-0.ico")
ElseIf ThisWorkbook.Worksheets("tabelle2").Range("c2").Value = "2" Then
Image1o1.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-100.ico")
Image1o2.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-100.ico")
Image1o3.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-0.ico")
Image1o4.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-0.ico")
ElseIf ThisWorkbook.Worksheets("tabelle2").Range("c2").Value = "3" Then
Image1o1.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-100.ico")
Image1o2.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-100.ico")
Image1o3.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-100.ico")
Image1o4.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-0.ico")
ElseIf ThisWorkbook.Worksheets("tabelle2").Range("c2").Value = "4" Then
Image1o1.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-100.ico")
Image1o2.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-100.ico")
Image1o3.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-100.ico")
Image1o4.Picture = LoadPicture("C:\users\hoschild\desktop\icojam-onebit-star-100.ico")
End If
Ich würde mich über eure Hilfe freuen.
Gruß,
Holger

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Crossposting ohne Hinweis
22.11.2017 17:18:27
Werner
Hallo Holger,
würdest du bitte die Posts in den verschiedenen Foren verlinken.
Gruß Werner
AW: Crossposting ohne Hinweis
22.11.2017 17:55:55
Nepumuk
Hallo Werner,
willst du von Hajo den Titel Forenblockwart übernehmen?
Wen interessiert denn deine Meldung wirklich?
Schon jetzt stürzen sich 2-3 Antworter auf jede Frage, ist das als verwerfliche Multianswer zu kennzeichnen?
Gruß
Nepumuk
AW: Code entschlacken
22.11.2017 17:33:17
onur
Wenn die selben Bilder doch JEDES MAL geladen werden, warum nicht:
v=ThisWorkbook.Worksheets("tabelle2").Range("c2").Value
If v>=1 and v

AW: Code entschlacken
22.11.2017 18:36:54
Holger
Hallo Onur,
das hilft mir leider nicht weiter, da jeder Stern separat ist, und jedes Sternenpaar die Einträge 1-4 in unterschiedliche Zellen einer Tabelle schreibt.
Zur besseren Vorstellungskraft habe ich mal ein Bild bei picload hochgeladen:
https://picload.org/view/drligwpa/2017-11-2218_15_51-mitarbeiter.jpg.html
Anzeige
AW: Code entschlacken
22.11.2017 18:58:48
onur
OOOPS, MEIN Fehler - Wer lesen kann, ist klar im Vorteil!
Ich überlege mir mal was.
Ideal wäre es , wenn du die Datei posten könntest.
AW: Code entschlacken
22.11.2017 19:48:03
Holger
Ich habe mal eine Textdatei der Userform hochgeladen.
https://www.herber.de/bbs/user/117847.txt
Zeile 704-3917 (die ganzen Imageclick Ereignisse) und Zeile 5157-6386 (Teil der UF Activate) sind die betroffenen Bereiche, wobei der Rest bestimmt auch suboptimal ist.
Gruß,
Holger
AW: Code entschlacken
22.11.2017 19:51:46
onur
Bringt mir nix, ich brauche die Datei, sonst müsste ich ja alles neu aufbauen, um den code testen zu können.
Anzeige
AW: Code entschlacken
22.11.2017 19:54:27
Holger
Ja, das verstehe ich.
Ich dachte nur, dass es dir/ euch helfen könnte auf die Schnelle.
Sind sensible Daten, Login, etc., das müsste ich erst mal rausfrickeln.
AW: Code entschlacken
22.11.2017 19:56:02
onur
Lass ruhig nur paar anonyme Musterdaten drin, es geht mir hauptsächlich um die userform.
AW: Code entschlacken
22.11.2017 21:14:30
Holger
Ich habe alles rausgemacht was geht, Formatierungen aufgehoben, gepackt u.s.w und bin bei 384 kb gelandet. Ich habe die Datei bei Filehorst zur Verfügung gestellt, hier sind ja max. 300 kb erlaubt leider.
http://filehorst.de/d/crtEsrCi
Gruß,
Holger
AW: Code entschlacken
22.11.2017 21:27:55
onur
Kannst du auch noch die beiden icons posten?
Und was ist mit meiner letzten Frage?
Anzeige
AW: Code entschlacken
22.11.2017 22:00:06
Holger
Ja klar. Hier sind die benötigten Icons.
https://www.herber.de/bbs/user/117851.zip
Ach sorry.
Eigentlich so wie es funktioniert aktuell, d.h. wenn in einem Bereich keine Fähigkeiten vorhanden sind, sollen vier graue Sterne angezeigt werden und der Wert 0 in die betreffende Zelle geschrieben werden.
Bei einem Stern sollen drei graue und ein gelber angezeigt werden (3xIcon 0 und 1xIcon 100; Zellenwert 1), u.s.w..
Die Konstellation soll beim erneuten Öffnen der Userform grafisch genau so bestehen bleiben (wie aktuell).
Gruß,
Holger
Anzeige
AW: Code entschlacken
22.11.2017 22:05:19
onur
Nein, ich meine:
Wie wäre es, wenn man statt stern 3 oder stern 2 für drei oder zwei sterne zu drücken, irgend einen Stern anklickt, und er wir umgeschaltet (aktiv oder nicht aktiv)?
Das würde den code vereinfachen.
AW: Code entschlacken
22.11.2017 22:23:34
Holger
Also würde man dann quasi Sterne für den Zellwert addieren.
Nachteil wäre dann, dass jeder Stern manuell angeklickt werden muss?
Ja, das wäre ok.
Wichtig wäre nur, dass es darstellungstechnisch so bleibt, z.b. wenn zwei Sterne ausgewählt sind, sollen die links in Reihe (gelb, ausgefüllt) stehen.
Als Laie würde mir noch einfallen:
Vielleicht den linken Stern zum abziehen (-1) und den rechten zum addieren?
Gruß,
Holger
Anzeige
AW: Code entschlacken
23.11.2017 00:17:36
onur
Ich melde mich, sobald fertig.
AW: Code entschlacken
23.11.2017 01:04:56
onur
Hier schon mal zum Testen:
https://www.dropbox.com/s/ovu5d2gs3bqa8lw/Kopie%20von%20Qualimatrixfuerherber.xlsm?dl=0
Die Pfade für star0 und star100 vorher in modul1 ändern.
AW: Code entschlacken
23.11.2017 07:51:33
Holger
Hallo Onur,
das sind ja schon mal knapp 2000 Zeilen weniger.
Allerdings haben die Änderungen an allen Sternen und Sternenpaaren zur Folge, dass ausschließlich der Wert in Zelle "C2" geändert wird. Wie kann ich das ändern?
Gruß,
Holger
AW: Code entschlacken
23.11.2017 07:53:27
onur
Schaue ich mir an, sobald ich wieder zu Hause bin.
AW: Code entschlacken
23.11.2017 20:41:11
onur
Der Fehler ist behoben.
https://www.dropbox.com/s/ovu5d2gs3bqa8lw/Kopie%20von%20Qualimatrixfuerherber.xlsm?dl=0
Da du auf tabelle2 nicht alle Skills hintereinander hast(P1.5, danach P2, wofür es keine Sterne gibt, danach erst P2.1) wie auf der Userform die Sterne, musste ich über die Label.Captions mit den Skillbezeichnungen gehen.
War etwas kompliziert, weil du leider bei den Labeln für die Skillbezeichnungen nicht so konsequent warst wie bei den Sternen.
Obwohl die Namen "Image1oX" bis "Image43oX" durchgehend sind (genau so, wie es sein sollte), sprangst du bei den zugehörigen Labels von Label17 nach Label23, danach zu Label18 usw.
Anzeige
AW: Code entschlacken
24.11.2017 20:33:06
onur
Noch kürzer:
https://www.dropbox.com/s/b9en79se4szfu4z/QualimatrixfuerherberKlassenModulV3.xlsm?dl=0
AW: Code entschlacken
24.11.2017 23:02:44
onur
Jetzt noch kürzer:
https://www.dropbox.com/s/i1pqsv9yq7rab1b/QualimatrixfuerherberKlassenModulV4.xlsm?dl=0
Kann es sein, dass dein Code noch nicht fertig ist?
Er schreibt immer nur die Daten für den gleichen Mitarbeiter.
AW: Code entschlacken
27.11.2017 17:47:45
onur
Hast du DAS eigentlich erhalten?
Jetzt noch kürzer:
https://www.dropbox.com/s/i1pqsv9yq7rab1b/QualimatrixfuerherberKlassenModulV4.xlsm?dl=0
Kann es sein, dass dein Code noch nicht fertig ist?
Er schreibt immer nur die Daten für den gleichen Mitarbeiter.
Anzeige
AW: Code entschlacken
22.11.2017 20:12:45
onur
Wie wäre es eigentlich, wenn du auf einen Stern klickst und dieser, wenn gesetzt, verschwindet und wenn nicht gesetzt, gesetzt wird (praktisch immer umgeschaltet wird).
Das wäre sehr einfach zu realisieren.
AW: Code entschlacken
22.11.2017 20:25:04
Holger
Ja, das verstehe ich.
Ich dachte nur, dass es dir/ euch helfen könnte auf die Schnelle.
Sind sensible Daten, Login, etc., das müsste ich erst mal rausfrickeln.
AW: Code entschlacken
27.11.2017 17:49:50
onur
Hast du DAS eigentlich erhalten?
Jetzt noch kürzer:
https://www.dropbox.com/s/i1pqsv9yq7rab1b/QualimatrixfuerherberKlassenModulV4.xlsm?dl=0
Kann es sein, dass dein Code noch nicht fertig ist?
Er schreibt immer nur die Daten für den gleichen Mitarbeiter.
Anzeige
AW: Code entschlacken
01.12.2017 12:39:35
Holger
Hallo Onur,
ich war leider verhindert. Vielen Dank erstmal für deine Rückmeldung.
Ich habe mal die aktuelle Datei geöffnet. Folgendes ist mir aufgefallen:
- Beim Starten der Userform werden keine Werte angezeigt (Sterne/Textboxinhalt, etc.)
- Projekt oder Bibliothek nicht gefunden (behoben durch Umbenennung von Private Sub UserForm_Activate() in Private Sub UserForm2_Activate()
- Die Spaltenköpfe der Tabellenblätter stehen jetzt Zahlen
- Beim Klick auf einen Stern erscheint: Fehler beim Kompilieren im Modul clsImage (Sub ImgXX_Click)
mit Fokus auf "Right".
AW: Code entschlacken
03.12.2017 19:32:56
Holger
Ich kriege es nicht zum laufen. Gerade noch mal probiert.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige