Schaltfläche dynamisch wieder löschen - Objektorientierte Programmierung
#11
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?


Angehängte Dateien
.xls   Button in Klasse ermitteln (Select Case).xls (Größe: 39,5 KB / Downloads: 2)
Top
#12
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
Top
#13
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.


Angehängte Dateien
.xls   000 Button in Klasse ermitteln (Endlösung).xls (Größe: 39,5 KB / Downloads: 1)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste