title image


Smiley Re: VBA, CommandButtons reagieren nicht, wenn man sie anklickt.
Hallo HeinrichNun der Trick ist, dass Du die Controls speziell deklariren musst, wenn diese Ereignisse haben sollen. VBA muss Eingangs wissen, dass es Ereignisprozeduren gibt, sonst kannst Du gar keine solchen schreiben.Wenn Du genau beobachtest, erkennst Du, dass mit der ursprünglichen Version, der Code welcher eigentlich eine Ereignisprozedur darstellen müsste, im Editor in den allgemeinen Teil geschupst wird und dort gehört er nicht hin.Die VBA-Hilfe, welche im Allgemeine ein gutes Arbeitsinstrumet darstellt, versagt in diesem Bereich fast völlig. Ich glaube nur mit dieser Hilfe, wärst Du auch in 100 Jahren nicht auf die Lösung gekommen *Mitleid ausstrahlt.Ein Teil der Dynamik, welche Du im Code klugerweise eingebaut hast, geht leider vor die Hunde. Ich habe mal vor Monaten versucht, das Ganze mit einer Schleife zu lösen, bin allerdings auf halber Strecke stecken geblieben. Entweder gibts ein Syntaxfehler, oder aber die Ereignisprozeduren sprechen nicht mehr an.Trotzdem funktionell ist der folgende Code nun völlig ok und arbeitet zuverlässig:GrussSilviaPrivate WithEvents cmd1 As CommandButtonPrivate WithEvents cmd2 As CommandButtonPrivate WithEvents cmd3 As CommandButtonPrivate WithEvents cmd4 As CommandButtonPrivate CB(4) As ControlPrivate Sub UserForm_Initialize() Dim i As Integer For i = 1 To 4 Set CB(i) = Controls.Add("Forms.CommandButton.1", "cmd" & i) CB(i).Visible = True CB(i).Enabled = True CB(i).Left = 20 CB(i).Top = 5 + 30 * (i - 1) CB(i).Width = 100 CB(i).Height = 25 Select Case i Case 1: CB(i).Caption = "Wasser" Case 2: CB(i).Caption = "Salzsäure" Case 3: CB(i).Caption = "Schwefelsäure" Case 4: CB(i).Caption = "Kohlensäre" End Select 'frmRollen.Height = 60 + 30 * (i - 1) Next Set cmd1 = CB(1) Set cmd2 = CB(2) Set cmd3 = CB(3) Set cmd4 = CB(4)End SubPrivate Sub cmd1_Click() Selection.TypeText Text:="H2O" & vbCrLfEnd SubPrivate Sub cmd2_Click() Selection.TypeText Text:="HCL" & vbCrLfEnd SubPrivate Sub cmd3_Click() Selection.TypeText Text:="H2SO4" & vbCrLfEnd SubPrivate Sub cmd4_Click() Selection.TypeText Text:="H2CO3" & vbCrLfEnd SubZur Sicherheit nochmals der gleich Code ohne HTML-FOrmatierung:Private WithEvents cmd1 As CommandButtonPrivate WithEvents cmd2 As CommandButtonPrivate WithEvents cmd3 As CommandButtonPrivate WithEvents cmd4 As CommandButtonPrivate CB(4) As ControlPrivate Sub UserForm_Initialize() Dim i As Integer For i = 1 To 4 Set CB(i) = Controls.Add("Forms.CommandButton.1", "cmd" & i) CB(i).Visible = True CB(i).Enabled = True CB(i).Left = 20 CB(i).Top = 5 + 30 * (i - 1) CB(i).Width = 100 CB(i).Height = 25 Select Case i Case 1: CB(i).Caption = "Wasser" Case 2: CB(i).Caption = "Salzsäure" Case 3: CB(i).Caption = "Schwefelsäure" Case 4: CB(i).Caption = "Kohlensäre" End Select 'frmRollen.Height = 60 + 30 * (i - 1) Next Set cmd1 = CB(1) Set cmd2 = CB(2) Set cmd3 = CB(3) Set cmd4 = CB(4)End SubPrivate Sub cmd1_Click() Selection.TypeText Text:="H2O" & vbCrLfEnd SubPrivate Sub cmd2_Click() Selection.TypeText Text:="HCL" & vbCrLfEnd SubPrivate Sub cmd3_Click() Selection.TypeText Text:="H2SO4" & vbCrLfEnd SubPrivate Sub cmd4_Click() Selection.TypeText Text:="H2CO3" & vbCrLfEnd Sub

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: