Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1160to1164
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Frage an die Profis -- Enwicklung von Userform

Frage an die Profis -- Enwicklung von Userform
Userform
Hallo Profis,
ich steht vor der Herausforderung, eine komplette Kundendatenbank auf Excelbasis zu programieren. Soweit kein Problem für mich. Ich stell mir aber folgende Frage die ich gern an die Profiprogrammierer richten möchte, die das tagtäglich machen.
Wie programiert ihr die Userform? Da gäbe es ja 2 Arten meiner Meinung nach. Nur was ist die bessere? Oder gibt es da noch eine 3 Art?
Möglichkeit 1:
Lasst ich durch das Makro --UserForm_Initialize-- alles programmiert entstehen (Labels, Textboxen, Commondbuttons etc.) incl. Positionen, was auf die UF drauf muss. Hätte den Charme, dass wenn nachträglich noch was dazu käme die Anpassung nicht ganz so Zeitraubend wäre.
oder
Möglichkeit 2:
baut ihr alles im Vorfeld auf die UF und füllt dann die Objekte mit Leben? Kommt was dazu wäre das meiner Meinung nach ein ganz schöner Act mit der Anpassung von Positionen, Namen, Controls etc.
Oder sehe ich das falsch?
Wie macht ihr das dann mit den Captions und Names von den Objekten? Lasst ihr den Standart drin der mir vorgegeben wird oder benutz ihr eine bestimmte Logik für die Namen von Objekten?
Wäre über eure Ratschläge sehr dankbar.
Gruß Ron
UserForm desginen - Philosophie-Frage
10.06.2010 12:28:06
NoNet
Hallo Ron,
das ist eine Frage der Philosophie :
die erste Methode (UF per VBA erstellen) erfordert etwas mehr abstraktes Denkvermögen, da man das Ergebnis ja zunächst nicht visualisiert erstellt.
Diese Methode hat den Vorteil, dass man Objekte sehr schnell ergänzen kann und das UF sehr variabel gestalten kann (z.B. Captions sprachenabhängig etc.).
Nachteil : Der Aufbau des UF zur Laufzeit benötigt etwas mehr Zeit
Die Methode 2 (UF per Designer erstellen), ist etwas einfacher (visuelle Vorschau) und für kleinere Projekte/UFs absolut ausreichend. Hier muss man nur die Aktivierungsreihenfolge bei nachträglich eingefügten Controls beachten !
Vorteil : Das UF wird schnell geladen und kann in der VBE auch exportiert werden.
Bzgl. der Namen für die Controls empfehle ich die Verwendung eigener Bezeichnungen, damit diese Controls später bzw. im Code leichter identifiziert werden können (txtVorname klingt doch verständlicher als TextBox7, oder ? ;-)
Ich persönlich verwende zumeist Methode2 (im Formular-Designer erstellt).
Gruß und viel Spaß beim Designen, NoNet
Anzeige
AW: UserForm desginen - Philosophie-Frage
10.06.2010 12:41:12
Maxer
@NoNet
Eine weitere Frage kommt bei mir auf. In wie weit ist die Aktivierungsreihenfolge in der Anwendung entscheidend? Oder hat diese nur Sinn im Formulardesigner?
Aktivieren der Controls per TAB-Taste _oT
10.06.2010 12:48:17
NoNet
_oT = "ohne Text"
AW: Aktivieren der Controls per TAB-Taste _oT
10.06.2010 15:30:54
Maxer
ok verstanden. Nun eine weitere Frage. Was kann ich in den Klassenmoduls organisieren? Ich war bis heute nicht in der Verlegenheit diese benutzen zu müssen. Gibt es da im Netz ne gute Seite wo das genaustens erklärt wird?
AW: Frage an die Profis -- Enwicklung von Userform
10.06.2010 16:55:08
Userform
ich hätte da eine weitere Frage.
Über diesen Code erzeuge ich einen Button
Private Sub UserForm_Initialize()
Set oCmb = Controls.Add("Forms.CommandButton.1", "DB_Beenden")
oCmb.Move Left:=780, Top:=5, Width:=30, Height:=30
oCmb.Visible = True
End Sub
Der Button erscheit auch auf meiner Userform. Soweit so gut.
Nun bin ich aber im Moment mit meinem Latein am Ende. Wenn ich nun auf diesen Button klicke soll er z.B. diesen einfachen Code ausführen (dieser liegt übrigens auf der Userform)
Private Sub DB_Beenden_click()
Unload Me
End Sub
Doch da passiert garnichts. Was mach ich falsch?
Gruß Ron
Anzeige
AW: Frage an die Profis -- Enwicklung von Userform
11.06.2010 08:47:36
Userform
Kenn einer mein oben beschriebenes Problem und wie ich es lösen kann?
AW: Frage an die Profis -- Enwicklung von Userform
11.06.2010 09:57:04
Userform
Hallo,
zur Laufzeit erzeugte Steuerelemente musst du einer eigenen Klasse zuweisen.
In der UF:
Dim oButtons(1 To 5) As New MeineKlasse
Private Sub UserForm_Activate()
Dim i As Integer
For i = 1 To 5
Set oButtons(i).MeinButton = Controls.Add("forms.commandbutton.1")
With oButtons(i).MeinButton
.Caption = "Test " & i
.Name = "TestButton " & i
.Height = 20
.Top = 25 * i
.Left = 20
End With
Next
End Sub

Klassenmodul 'MeineKlasse':
Option Explicit
Public WithEvents MeinButton As MSForms.CommandButton
Private Sub MeinButton_Click()
MsgBox MeinButton.Name
End Sub

Gruß
Rudi
Anzeige
etwas tiefer gehend
11.06.2010 10:38:28
Rudi
Hallo,
in eine neue UF 'MeinForm':
Private Sub UserForm_Activate()
Dim i As Integer, arrAction, iArrAction As Integer
arrAction = Array("Makro2", "Makro1", "Makro3", "Makro6", "Makro4", "prcClose")
iArrAction = UBound(arrAction)
ReDim oButtons(iArrAction)
'Buttons einfügen
For i = 0 To UBound(arrAction)
Set oButtons(i).MeinButton = Controls.Add("forms.commandbutton.1")
With oButtons(i).MeinButton
.Caption = IIf(i = iArrAction, "Schließen", arrAction(i))
.Name = "TestButton " & i
.Height = 20
.Width = 60
.Top = 30 * i + 20 - 30 * (i = iArrAction)
.Left = 20
.Tag = arrAction(i)
End With
Next
'Größe UF anpassen
Height = oButtons(iArrAction).MeinButton.Top + oButtons(iArrAction).MeinButton.Height + 40
Width = oButtons(iArrAction).MeinButton.Left * 2 + oButtons(iArrAction).MeinButton.Width
Caption = "TestForm"
End Sub

Klassenmodul 'MeineKlasse':
Option Explicit
Public WithEvents MeinButton As MSForms.CommandButton
Private Sub MeinButton_Click()
Application.Run MeinButton.Tag
End Sub

In ein Modul:
Option Explicit
Sub prcClose()
MeinForm.Hide
Unload MeinForm
End Sub
Sub Makro1()
MsgBox "Test 1"
End Sub
Sub Makro2()
MsgBox "Hallo", , ""
End Sub
Sub Makro3()
MsgBox "Test 3"
End Sub
Sub Makro4()
MsgBox "Test 4"
End Sub
Sub Makro6()
MsgBox "Test 6"
End Sub

Gruß
Rudi
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige