UserForm Initialize

Informationen und Beispiele zu den hier genannten Dialog-Elementen:


Excel-Version: 9.0 (Office 2000)
nach unten

Betrifft: UserForm Initialize
von: Daniele
Geschrieben am: 04.06.2002 - 13:26:00

Hallo

brauche mal wieder hilfe

Ich habe mehrere UserForm die ich entsprechend inizialisieren möchte. nun hat sich herausgestellt, dass beim 2. und folgende UF die mit UserForm_Initialize() überhaupt nicht starten ("Laufzeitfehler 424: Objekt erforderlich"), und wenn ich ändere zu: UserForm4_Initialize(), dann erscheint die UF ohne Fehlermeldungen, jedoch rein gar nicht initialisiert.

was ist mein fehler?
(habe auch versucht dem UF ein eigener Name zu geben, nützt nichts).

Danke, Daniele

nach oben   nach unten

Re: UserForm Initialize
von: guenter
Geschrieben am: 04.06.2002 - 13:36:05

hallo
starten must die userform mit

Sub Start()
Userform1.Show
End Sub

als beispiel initialze wird dann beim start automatisch ausgeführt
mfg guenter

nach oben   nach unten

Re: UserForm Initialize
von: Michael Scheffler
Geschrieben am: 04.06.2002 - 13:40:37

Hallo,

besser ist - wenn auch "veraltet" - wenn Du etwas intialisieren möchtest, erst:

Load UserForm1
Load UserForm2

etc.

und dann

UserForm1.Show
UserForm2.Show
etc.

Gruß

Micha


nach oben   nach unten

Re: UserForm Initialize
von: Daniele
Geschrieben am: 04.06.2002 - 14:23:50

Hallo Michael und Guenter

Sub Start()
Userform1.Show
End Sub

mache ich bereits und

mit Load klappt es auch nicht.

Erklährung: Private Sub UserForm_Initialize() steht im Code der UserFormX
Ich wiederhohle: bei der ersten UserForm klappt es, bei den anderen nicht. könnte es sein dass der Grund dafür ist das ich die Elemente (und Codes, natürlich angepasst) von einer UF in die andere kopiert habe (einige Elemente und Formate sollen gleich bleiben). Wenn ich eine grundlegend neue UF erstelle wiederholen sich die Bezeichnungen der Elemente ja auch immer wieder, zb. TextBox1 usw.

nach oben   nach unten

Re: UserForm Initialize
von: Michael Scheffler
Geschrieben am: 04.06.2002 - 14:33:45

Hallo,

das ist schietegal, wie die Controls heißen. Da sie nicht öffentlich deklariert sind, werden ihre Bezeichnungen und Daten in der jeweiligen Form "gekapselt" .

Kann es sein, dass die Form1 stehen beleint und damit auch der Code? Und Du letzten Endes nichts anderse lädst?

Poste doch mal den Code!

Gruß

Micha


nach oben   nach unten

Re: UserForm Initialize
von: Daniele
Geschrieben am: 04.06.2002 - 15:03:31

Hi Micha

hier der Code, hoffe du siehst durch. dieser Gleiche code mit anderen Datenbankverweise funktioniert einwandfrei in der ersten UF.
Wie kann es sein dass die andere Form stehen bleibt, sie ist gar nicht geladen!

'abbrechen
Private Sub CommandButton3_Click()
Unload Me
Tabelle3.Select
End Sub
'neuerfassung lieferant
Private Sub CommandButton1_Click()
Unload Me
UserForm4.Show
End Sub
'zurück
Private Sub CommandButton2_Click()
Unload Me
SortReag
Tabelle3.ListBox1.ListFillRange = Intersect(Sheets("DB_Reag").[A1:C1].CurrentRegion, Sheets("DB_Reag").[a2:c1000]).Address(external:=True)
Tabelle3.Select
End Sub
'Produkt auswählen & Textboxen füllen
Private Sub ComboBox2_Change()
Dim r%
r = ComboBox2.ListIndex + 2
Me.TextBox1.Text = Sheets("DB_Reag").Cells(r, 2)
Me.TextBox2.Text = Sheets("DB_Reag").Cells(r, 3)
Me.TextBox4.Text = Sheets("DB_Reag").Cells(r, 5)
Me.TextBox5.Text = Sheets("DB_Reag").Cells(r, 6)
Me.TextBox6.Text = Sheets("DB_Reag").Cells(r, 7)
Me.ComboBox3.Text = Sheets("DB_Reag").Cells(r, 4)
If Range("sel_4") = Sheets("DB_Reag").Cells(r, 8) Then CheckBox1.Value = True
If Range("sel_20") = Sheets("DB_Reag").Cells(r, 8) Then CheckBox2.Value = True
If Range("sel_RT") = Sheets("DB_Reag").Cells(r, 8) Then CheckBox3.Value = True

End Sub
'Firma auswählen
Private Sub ComboBox3_Change()
End Sub
'änderungen speichern
Private Sub CommandButton4_Click()
Dim mldg, stil, titel, grc
Dim r&
If ComboBox2.Value = "" Then
MsgBox "Dies ist keine Änderung, sie haben kein Produkt ausgewählt"
Call UserForm_Initialize
Exit Sub
Else:
mldg = "Sollen die Änderungen angenommen werden ?"
stil = vbYesNo
titel = "Frage"
grc = MsgBox(mldg, stil, titel)
If grc = vbYes Then
Else
Exit Sub
End If
r = ComboBox2.ListIndex + 2
Sheets("DB_Reag").Cells(r, 2) = TextBox1.Text
Sheets("DB_Reag").Cells(r, 3) = TextBox2.Text
Sheets("DB_Reag").Cells(r, 5) = TextBox4.Text
Sheets("DB_Reag").Cells(r, 6) = TextBox5.Text
Sheets("DB_Reag").Cells(r, 7) = TextBox6.Text
Sheets("DB_Reag").Cells(r, 8) = TextBox8.Text
Sheets("DB_Reag").Cells(r, 4) = ComboBox3.Text
If CheckBox1.Value = True Then Sheets("DB_Reag").Cells(r, 8) = Range("sel_4")
If CheckBox2.Value = True Then Sheets("DB_Reag").Cells(r, 8) = Range("sel_20")
If CheckBox1.Value = True Then Sheets("DB_Reag").Cells(r, 8) = Range("sel_RT")
End If
Call UserForm_Initialize
End Sub
'Neuerfassung speichern
Private Sub CommandButton6_Click()
If ComboBox2.Value <> "" Then
MsgBox "Dies ist keine Neuerfassung, sie haben ein Produkt ausgewählt"
Call UserForm_Initialize
Exit Sub
Else:
Call Eintrag
Call UserForm_Initialize
End If
End Sub
'eintrag vornehmen
Sub Eintrag()
Set anchor_cell = Range("R_neu").End(xlDown).Offset(1, 0)
anchor_cell.Offset(0, 1).Value = TextBox1.Text
anchor_cell.Offset(0, 2).Value = TextBox2.Text
anchor_cell.Offset(0, 3).Value = ComboBox3.Text
anchor_cell.Offset(0, 4).Value = TextBox4.Text
anchor_cell.Offset(0, 5).Value = TextBox5.Text
anchor_cell.Offset(0, 6).Value = TextBox6.Text
anchor_cell.Offset(0, 7).Value = TextBox8.Text
If CheckBox1.Value = True Then anchor_cell.Offset(0, 8).Value = Range("sel_4")
If CheckBox2.Value = True Then anchor_cell.Offset(0, 8).Value = Range("sel_20")
If CheckBox1.Value = True Then anchor_cell.Offset(0, 8).Value = Range("sel_RT")

' ID-Nummer eintragen
Ro = 5000
Co = 30
Erg = Sheets("DB_Reag").Cells(Ro, Co).Value
LZe = Sheets("DB_Reag").Range("A:A").End(xlDown).Row
NEintrag = Sheets("DB_Reag").Cells(LZe + 1, 2).Value
If NEintrag <> "" Then
With Sheets("DB_Reag").Cells(LZe + 1, 1)
.Value = Erg + 1
.NumberFormat = """V""0000"
End With
End If
Sheets("DB_Reag").Cells(Ro, Co).Value = Erg + 1

End Sub
'Löschen
Private Sub CommandButton5_Click()
Dim mldg, stil, titel, grc
mldg = "soll dieser Artikel wirklich gelöscht werden ?"
stil = vbYesNo
titel = "Obligate Frage:"
grc = MsgBox(mldg, stil, titel)
If grc = vbYes Then
Else
Exit Sub
End If
Dim r%
r = ComboBox2.ListIndex + 2
Sheets("DB_Reag").Cells(r, 1).EntireRow.Delete
Call UserForm_Initialize
End Sub
'initalisieren
Private Sub UserForm_Initialize()

CommandButton5.Caption = "Ausgewählten Datensatz" & vbNewLine & "Löschen"
CheckBox1.Value = False
CheckBox2.Value = False
CheckBox3.Value = False

ComboBox2.Clear
ComboBox3.Clear

TextBox1.Value = ""
TextBox2.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
TextBox8.Value = ""
ComboBox3.Value = ""
ComboBox2.Value = ""

Dim i%
i = 2
Do Until IsEmpty(Sheets("DB_Reag").Cells(i, 1))
ComboBox2.AddItem Sheets("DB_Reag").Cells(i, 2) & " " & Sheets("DB_Reag").Cells(i, 3)
i = i + 1
Loop
i = 2
Do Until IsEmpty(Sheets("DB_Namen").Cells(i, 1))
ComboBox3.AddItem Sheets("DB_Namen").Cells(i, 2)
i = i + 1
Loop

End Sub


nach oben   nach unten

Re: UserForm Initialize
von: Daniele
Geschrieben am: 04.06.2002 - 15:20:29

Stopp!

Problem hat sich gelöst. Die TextBox8 existiert nicht in diesem UF.

... das hat jetzt lange gedauert. dachte auch nicht das das etwas ausmachen würde beim laden.

trotzdem vielen dank für deine Hilfe. ohne dich hätte ich es nicht nochmals so genau angeschaut.

vielleicht hast du mir aber noch ein tipp für ein wirklich ungelöstes problem:

suche ein methode (code) um bei jedem neueintrag eine einmalige! Zufallszahl in der ersten spalte zu generieren. das verfahren wie im code das ich gesendet habe ist nicht allzu verlässlich da es vorkommt dass aus irgenwelchem grund auch immer eine zahl generiert wird die schon in der spalte existiert. (es muss nicht zufallszahl sein (auch fortlaufend) jedenfalls einmalig.

danke, daniele

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "UserForm Initialize"