Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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)
Antworten 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
Antworten 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)
Antworten Top


Gehe zu:


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