07.08.2016, 10:10
(Dieser Beitrag wurde zuletzt bearbeitet: 08.08.2016, 12:00 von Rabe.
Bearbeitungsgrund: überflüssige Zeilenumbrüche entfernt
)
Hallo und einen schönen Sonntag wünsch ich Euch,
habe folgendes Problem. Ich habe folgenden funktionierenden Code mit dem ich dynamisch eine Textbox in eine UserForm schreibe. Um einen modularen und recht allgemeingültigen Code zu haben, habe ich diese dynamische Textboxkonstruktion in ein Modul geschrieben und nicht in die Userform selbst.
In diesem Modul muss ich dazu diesen Befehl benutzen:
'Problemstelle, wie gehts allgemeiner?
Set objTextbox = UserForm1.Controls.Add("Forms.TextBox.1", i, True)
Der Name "UserForm1", ist mir dabei nicht allgemein genug. Denn nehme ich meinen Code und packe diesen in ein anderes Projekt rein und dort heißt die UserForm1 nicht mehr UserForm1, sondern Tumbuktu müßte ich meine ganzen Code auf den neuen Namen Tumbuktu wieder anpassen. Da ich extrem faul bin, würde ich gerne wissen, wie ich hier allgemeiner formulieren könnte.
Anbei der gesamte Code zum Nachvollziehen zum Download und in dieser Form:
UserForm1:
Grundmodul:
Die Klasse:
habe folgendes Problem. Ich habe folgenden funktionierenden Code mit dem ich dynamisch eine Textbox in eine UserForm schreibe. Um einen modularen und recht allgemeingültigen Code zu haben, habe ich diese dynamische Textboxkonstruktion in ein Modul geschrieben und nicht in die Userform selbst.
In diesem Modul muss ich dazu diesen Befehl benutzen:
'Problemstelle, wie gehts allgemeiner?
Set objTextbox = UserForm1.Controls.Add("Forms.TextBox.1", i, True)
Der Name "UserForm1", ist mir dabei nicht allgemein genug. Denn nehme ich meinen Code und packe diesen in ein anderes Projekt rein und dort heißt die UserForm1 nicht mehr UserForm1, sondern Tumbuktu müßte ich meine ganzen Code auf den neuen Namen Tumbuktu wieder anpassen. Da ich extrem faul bin, würde ich gerne wissen, wie ich hier allgemeiner formulieren könnte.
Anbei der gesamte Code zum Nachvollziehen zum Download und in dieser Form:
UserForm1:
Code:
Sub UserForm_Initialize()
Range("A" & ActiveCell.Row).Select
'Aufruf der Funktion Konstruktion im Modul "Grundmodul" zwecks
'Konstruktion der Textbox
Konstruktion
End Sub
Code:
Option Explicit
Dim aCommands(200) As New clsButton
Sub Konstruktion()
Dim i As Integer, objTextbox As MSForms.TextBox
'Problemstelle, ist der Name der UserForm1, die
'Bezeichnung UserForm1 ist nicht allgemein genug
'Was mache ich wenn ich dieses Grundmodul in ein anderes
'Projekt einbaue, dann müßte ich den Namen UserForm1
'darin direkt an die Gegebenheiten anpassen.
Set objTextbox = UserForm1.Controls.Add("Forms.TextBox.1", i, True)
'Mit Me.Controls kann ich nur arbeiten, wenn dieser Code
'direkt in der UserForm stehen würde.
'Set obTextbox = Me.Controls.Add("Forms.TextBox.1", i, True)
objTextbox.Move 400, 200, 300, 100
Set aCommands(i).DasCmds = objTextbox
End Sub
Die Klasse:
Code:
Option Explicit
Public WithEvents DasCmds As MSForms.TextBox
Sub DasCmds_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
DasCmds.Text = "Mausklick grün, Fettschrift, probiere Doppelklick"
DasCmds.BackColor = vbGreen
DasCmds.Font.Bold = True
End Sub
Sub DasCmds_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
DasCmds.Text = "Doppelklick rot, probiere Einfachklick"
DasCmds.BackColor = vbRed
DasCmds.Font.Bold = False
End Sub