Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
984to988
984to988
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

CommandButton Code zur laufzeit erstellen

CommandButton Code zur laufzeit erstellen
10.06.2008 16:12:00
Reinhard
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


7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CommandButton Code zur laufzeit erstellen
10.06.2008 16:23:00
Rudi
Hallo,

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


Gruß
Rudi

AW: CommandButton Code zur laufzeit erstellen
10.06.2008 16:30:00
Johannes
Hi Reinhard,
probiers mal mit:

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


Gruesse,
Johannes

Huch, zu spaet ...
10.06.2008 16:34:00
Johannes
Das hat man nun davon, wenn man mitten im Posting schreiben ein Telefonat annimmt. Ist aber auch ein "-Mischmasch im .CodeModule Objekt. :-)
Gruesse

AW: Huch, zu spaet ...
10.06.2008 19:27:00
Reinhard
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


Anzeige
AW: Huch, zu spaet ...
10.06.2008 19:33:52
Johannes
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

Ok, bliebe noch Frage b offen...
10.06.2008 19:38:00
Reinhard
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

Anzeige
AW: Ok, bliebe noch Frage b offen...
10.06.2008 22:28:00
Uduuh
Hallo,
kein Prob unter XP. Rennt.
Gruß aus’m Pott
Udo

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige