Hallo Lisa,
tut mir Leid, hatte nicht eher Zeit hier wieder reinzuschauen. Allerdings habe ich jetzt ein paar Verständnisfragen. Ich war am Anfang davon ausgegangen, dass es sich um Images handelt. Nun deuten allerdings die Namen cmd... (die ich jetzt erst richtig wahrnehme, sorry!) eher auf CommandButtons hin. Wenn das so ist, funktioniert die Abfrage wie in meinem Beispiel nicht.
If cmd1.Picture.Handle = 0 Then
MsgBox "Kein Bild"
End If
Unter der Voraussetzung, dass definitiv immer nur 1 CommandButton (wenn es denn welche sind) ein Bild enthält, gestaltet sich die Abfrage relativ einfach:
Dim i As Integer
i = -(CommandButton1.Picture.Handle <> 0) - _
2 * (CommandButton2.Picture.Handle <> 0) - _
3 * (CommandButton3.Picture.Handle <> 0) - _
4 * (CommandButton4.Picture.Handle <> 0)
Je nachdem, welcher Button das Bild enthält, liefert der Ausdruck 1, 2, 3 oder 4 zurück. Wenn deine 4 Berechnungsversionen in 4 verschiedenen Makros stehen, die Berechnung1, Berechnung2 usw.heißen mögen, kannst du sie so aufrufen:
Application.Run "Berechnung" & i
Die 4 Makros müssen in einem Modul stehen und Public sein.
Wenn alle Berechnungen in einem Makro stehen, rufst du es nach der Ermittlung von i so auf:
Berechnung i
Das eigentliche Makro kann dann im Modul der Userform stehen und folgenden Aufbau haben:
Private Sub Berechnung(intWert As Integer)
Select Case intWert
Case 1
' erste Version
Case 2
' zweite Version
Case 3
' dritte Version
Case 4
' vierte Version
End Select
End Sub
Wenn keine Eingabe in der Textbox erfolgt, tritt natürlich das KeyPress-Event nicht auf, deshalb musst du den Wert 0 in einer anderen Prozedur in die Zielzelle schreiben OK-Button oder auch in Userform_Terminate:
If TextBox 1 = "2 Then Worksheets("Tabelle1").Range("V26") = 0
Das war jetzt allerhand zum Ausprobieren, wenn du nach Fragen hast, melde dich einfach noch mal.
Schönes Wochenende!
|