Clever-Excel-Forum

Normale Version: Schaltfläche dynamisch wieder löschen - Objektorientierte Programmierung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Uwe,
ich war so nah dran und doch völlig daneben. Bis zum ActiveControl.Name bin ich gekommen, aber das Userform1 fehlte.
Wäre einfach nicht drauf gekommen.

Deshalb:
Code:
Sub Danke()
Dim i As Integer
For i = 1 To 32000
Debug.Print "Danke, lieber Uwe. Danke!"
Next
End Sub


Aber es gibt noch ein Problem. Ich habe die SelectCase - Anweisung an die vorhandenen Schaltflächen angepaßt.
Für die Schaltflächen 1 bis 6 funktioniert der Code von dir einwandfrei. Für die Schaltflächen 7 bis 20 überspringt
das Programm einfach die Zeilen. Das habe ich im Einzelmodus mit F8  feststellen müssen.  Ich kann beim besten
Willen keinen Programmierfehler von Dir hier feststellen. Habe den Code dann auf einem anderen Rechner laufen
lassen, wieder gleiches Problem. Dann tausche ich die Anweisungen aus und schreibe statt der Select Case folgenden Code in die
Klassenanweisung:


Code:
If UserForm1.ActiveControl.Name = 7 Then
Knöpfe.BackColor = vbYellow
Knöpfe.Font.Bold = True
Knöpfe.Caption = "Du hast mich gedrückt. Ich bin ganz gelb geworden!"
Knöpfe.AutoSize = True
End If

If UserForm1.ActiveControl.Name < 12 And UserForm1.ActiveControl.Name > 7 Then
Knöpfe.BackColor = vbBlue
Knöpfe.Font.Bold = True
Knöpfe.Caption = "Du hast mich gedrückt. Ich bin ganz blau geworden!"
Knöpfe.AutoSize = True
End If

If UserForm1.ActiveControl.Name <= 20 And UserForm1.ActiveControl.Name > 12 Then
Knöpfe.BackColor = vbWhite
Knöpfe.Font.Bold = True
Knöpfe.Caption = "Du hast mich gedrückt. Ich bin ganz weiß geworden!"
Knöpfe.AutoSize = True
End If


Und alles funktioniert perfekt! Ich weiß nicht was hier falsch läuft. Die entsprechende Datei habe ich deshalb wieder mal hochgeladen.
Die Sache eilt nicht, aber mich würde interessieren was hier falsch läuft. Logisch ist alles richtig und trotzdem eine solche Spinnerei
vom Programm. Wie ist so etwa möglich?
Hallo,

das liegt daran, dass "15" im Alphabet vor "7" liegt. Numerisch behandelt klappt es wie gewollt:

Option Explicit
Public WithEvents Knöpfe As MSForms.CommandButton
Private Sub Knöpfe_Click()

Debug.Print UserForm1.ActiveControl.Name

Select Case CLng(UserForm1.ActiveControl.Name)
  Case 1 To 3
    Knöpfe.BackColor = vbGreen
    Knöpfe.Font.Bold = True
    Knöpfe.Caption = "Du hast mich gedrückt. Ich bin ganz grün geworden!"
    Knöpfe.AutoSize = True
  Case 4 To 6
    Knöpfe.BackColor = vbRed
    Knöpfe.Font.Bold = True
    Knöpfe.Caption = "Du hast mich gedrückt. Ich bin ganz rot geworden!"
    Knöpfe.AutoSize = True
  Case 7 To 15
    Knöpfe.BackColor = vbYellow
    Knöpfe.Font.Bold = True
    Knöpfe.Caption = "Du hast mich gedrückt. Ich bin ganz gelb geworden!"
    Knöpfe.AutoSize = True
  Case 16 To 20
    Knöpfe.BackColor = vbBlue
    Knöpfe.Font.Bold = True
    Knöpfe.Caption = "Du hast mich gedrückt. Ich bin ganz blau geworden!"
    Knöpfe.AutoSize = True
End Select

End Sub

Gruß Uwe
Danke, jetzt funktioniert alles einwandfrei.

Anbei für andere interessierte Forenmitglieder und fürs Archiv die vollständig funktionierende Endlösung als Attachment zum Download.
Seiten: 1 2