Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

CommandButton Code zur laufzeit erstellen

Betrifft: CommandButton Code zur laufzeit erstellen von: Reinhard
Geschrieben am: 10.06.2008 16:12:31

Hallo Wissende,

mit nachstehendem Code wird eine UF mit 2 CommandButton und Click-Code für die CBs erstellt.

Klappt auch bestens. Die erzeugten Codes sehen so aus:

Private Sub CB1_Click()
MsgBox "Hallo, ich bin CB"
End Sub

Private Sub CB2_Click()
MsgBox "Hallo, ich bin CB"
End Sub

Ich hätte es aber gerne so:

Private Sub CB1_Click()
MsgBox "Hallo, ich bin CB 1"
End Sub

Private Sub CB2_Click()
MsgBox "Hallo, ich bin CB 2"
End Sub

Was muß ich an der Codezeile:

.InsertLines intRow + 1, "MsgBox ""Hallo, ich bin CB"""

abändern? Mit gelang es nicht die Variable j dort korrekt einzubasteln.

Danke ^ Gruß
Reinhard

Option Explicit
'
Sub UserForm()
Dim frmCommandButton, VBComp, strName
Dim intRow, jj, j, S, T, myCommand
jj = 2
Set VBComp = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
With VBComp
   .Properties("Caption") = "Meine Userform"
   .Properties("Width") = 400
   .Properties("Height") = 500
   strName = .Properties("Name")
End With
For j = 1 To jj
   S = "CB" & j
   Set myCommand = VBComp.Designer.Controls.Add("Forms.commandbutton.1", S)
   With myCommand
      .Caption = "Write!" & j
      .Left = 0
      .Top = T
      .Height = 60
      .Width = 40
   End With
   T = T + 70
   With VBComp.CodeModule
      intRow = .CreateEventProc("Click", S)
      .InsertLines intRow + 1, "MsgBox ""Hallo, ich bin CB"""
   End With
Next j
VBA.UserForms.Add(strName).Show
End Sub


  

Betrifft: AW: CommandButton Code zur laufzeit erstellen von: Rudi Maintaire
Geschrieben am: 10.06.2008 16:23:49

Hallo,

      .InsertLines intRow + 1, "MsgBox ""Hallo, ich bin CB" & j & """"


Gruß
Rudi


  

Betrifft: AW: CommandButton Code zur laufzeit erstellen von: Johannes D.
Geschrieben am: 10.06.2008 16:30:02

Hi Reinhard,

probiers mal mit:

.InsertLines intRow + 1, " MsgBox ""Hallo, ich bin " & S & """"



Gruesse,
Johannes


  

Betrifft: Huch, zu spaet ... von: Johannes D.
Geschrieben am: 10.06.2008 16:34:00

Das hat man nun davon, wenn man mitten im Posting schreiben ein Telefonat annimmt. Ist aber auch ein "-Mischmasch im .CodeModule Objekt. :-)

Gruesse


  

Betrifft: AW: Huch, zu spaet ... von: Reinhard
Geschrieben am: 10.06.2008 19:27:16

Hallo Johannes,

du solltest deine Grundeinstellung zum Forum hier nochmal überprüfen. Wem ein Telefonanruf von Claudia Schiffer dir wichtiger ist als hier eine Anfrage zu beantworten gehört du hier nicht her du Lüstling *find* *kicher grien*

Ich habe meine Anfrage auf noch offen gestellt, weil ich gerne wissen würde

a) was meinst du genau mit "-Mischmasch im .CodeModule Objekt" ? Wie ginge es besser?

b) warum ich VBComp nicht als VBComponent deklarieren kann? Fehlt da noch ein Verweis?

Danke ^ Gruß
Reinhard


Sub UserForm()
' Verweis auf Microsoft Visual basic 5.0 Extensibility muß gesetzt sein bei XL2000
' Ebenfalls Verweis auf Microsoft Forms 2.0 Object Library
' Normal setzt Vba selbst den Verweis auf Forms2.0 bei Einfügen einer UF aber man weiß ja nie
' Typename(VBComm) ergibt VbComponent, aber dies bei Dim anzugeben klappt nicht!?
Dim frmCommandButton As CommandButton, strName As String, VBComp ' As VBComponent
Dim intRow As Integer, jj As Integer, j As Integer, S As String, T As Integer, myCommand As  _
Control
jj = 2
Set VBComp = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
With VBComp
   .Properties("Caption") = "Meine Userform"
   .Properties("Width") = 400
   .Properties("Height") = 500
   strName = .Properties("Name")
End With
For j = 1 To jj
   S = "CB" & j
   Set myCommand = VBComp.Designer.Controls.Add("Forms.commandbutton.1", S)
   With myCommand
      .Caption = "Write!" & j
      .Left = 0
      .Top = T
      .Height = 60
      .Width = 40
   End With
   T = T + 70
   With VBComp.CodeModule
      intRow = .CreateEventProc("Click", S)
      .InsertLines intRow + 1, "MsgBox ""Hallo, ich bin CB" & j & """"
   End With
Next j
VBA.UserForms.Add(strName).Show
End Sub




  

Betrifft: AW: Huch, zu spaet ... von: Johannes D.
Geschrieben am: 10.06.2008 19:33:52

Hallo Reinhard,

nein - ist alles in bester Ordnung. Das "Huch, zu spaet ..." war nur eine dahingehende Aussage, dass Rudi das Thema schon laengst beantwortet und ichs nicht bemerkt hatte.

Wie gesagt ... alles in bestern Ordnung - auch mit Frau Schiffer. ;-)

Gruesse,
Johannes


  

Betrifft: Ok, bliebe noch Frage b offen... von: Reinhard
Geschrieben am: 10.06.2008 19:38:52

Hallo interessierte Wissende,

b) warum ich VBComp nicht als VBComponent deklarieren kann? Fehlt da noch ein Verweis?

Der Code:

Sub UserForm()
' Verweis auf Microsoft Visual basic 5.0 Extensibility muß gesetzt sein bei XL2000
' Ebenfalls Verweis auf Microsoft Forms 2.0 Object Library
' Normal setzt Vba selbst den Verweis auf Forms2.0 bei Einfügen einer UF aber man weiß ja nie
' Typename(VBComm) ergibt VbComponent, aber dies bei Dim anzugeben klappt nicht!?
Dim frmCommandButton As CommandButton, strName As String, VBComp ' As VBComponent
Dim intRow As Integer, jj As Integer, j As Integer, S As String, T As Integer, myCommand As  _
Control
jj = 2
Set VBComp = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
With VBComp
   .Properties("Caption") = "Meine Userform"
   .Properties("Width") = 400
   .Properties("Height") = 500
   strName = .Properties("Name")
End With
For j = 1 To jj
   S = "CB" & j
   Set myCommand = VBComp.Designer.Controls.Add("Forms.commandbutton.1", S)
   With myCommand
      .Caption = "Write!" & j
      .Left = 0
      .Top = T
      .Height = 60
      .Width = 40
   End With
   T = T + 70
   With VBComp.CodeModule
      intRow = .CreateEventProc("Click", S)
      .InsertLines intRow + 1, "MsgBox ""Hallo, ich bin CB" & j & """"
   End With
Next j
VBA.UserForms.Add(strName).Show
End Sub



Danke ^ Gruß
Reinhard


  

Betrifft: AW: Ok, bliebe noch Frage b offen... von: Uduuh
Geschrieben am: 10.06.2008 22:28:49

Hallo,
kein Prob unter XP. Rennt.

Gruß aus’m Pott
Udo



 

Beiträge aus den Excel-Beispielen zum Thema "CommandButton Code zur laufzeit erstellen"