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