Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

XP; Excel 2002; VBA; Cursor automatisch in Formular -Anfang





Frage

Zum Eingeben von Datensätzen mit VBA in eine Excel-Tabelle habe ich ein Formular mit 8 Feldern entworfen. Die 3 Buttons am Formularende bewirken: "Erfassen", "Schließen" und "Neuer Datensatz". Klappt alles. Nur möchte ich, daß beim Aufruf des Formulars der Cursor automatisch in Feld 1 steht. Ich muss ihn jetzt mit der auf das Feld setzen. Weiß jemand Rat? Queelun

Antwort 1 von want2cu

Hallo Klaus-Dietrich,

ich könnte dir eher mit einer Formel als mit VBA weiterhelfen. Da sich bisher aber noch niemand aus der VBA-Fraktion geäußert hat, mache ich zumindest mal einen Anfang.

Wenn dui mit VBA ein Formular zur Dateneingabe erstellt hast, dann müßte es doch auch möglich sein, den Cursor mit VBA entsprechend zu positionieren.
Du wirst sicherlich einen Frund haben, nicht die normale Datenmaske von Excel zu benutzen. Der Ciurso ist da nömlich immer im ersten Eingabefeld (was der ersten Spalte des Datenbereichs entspricht).

Mit F5 oder STRG-(Koordinate) kannst du Excel genau sagen, wo die Schreibmarke stehen soll. Das müßte man m.E. auch mit einem Makro aufzeichnen und in dein Formular einbinden können.

Ich hoffe, dass dir hier noch jemand besser helfen kann als ich (tut mir leid, dass ich es nicht besser kann ;-) )

Cu
want2cu

Antwort 2 von Queelun

Hallo Cu,
wie Du siehst, habe ich ein UserFormular verwendet, wie man es sich unter Excel herstellen kann. Du hast Recht, der Cursor müsste schon beim Aufruf des Formulars (mit F5 aus dem VBA-Programm) in Feld 1 stehen. Tut er aber nicht. Vielleicht findet jemand bei Durchsicht des untenstehenden (Teil-)Listings, wo es hakt.

Private Sub CommandButton1_Click()
Dim Ax, Ay As String, a, t As Integer, b As Boolean
Set Frm = UserForm1
With Frm
'Wert in das erste Feld des Formulars eingeben:
Ax = .TextBox1.Value
'beginnend von der Ausgangszelle A7 erste freie Zelle
in Spalte A suchen:
Range("A7").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Wend
'der eingegebene Wert für Ax wird in die freie Zelle eingeschrieben
ActiveCell.Value = Ax
ActiveCell.Offset(0, 1).Value = .TextBox2.Value
:
:
End with
:
End Sub
[\code]
Gruß Queelun


Antwort 3 von Guenter

Hallo,

ich komme nochmals auf die Anfangsfrage zurück.
Den Cursor auf ein Feld zu positionieren macht man mit ActiveControl.
Wenn man beim Aufrufen der UserForm den Cursor in der ListBox1 haben will, dann
Listbox1.ActiveControl

Weiteres Beispiel siehe Excel Hilfe ActiveControl.

Gruß
Günter

Antwort 4 von Locke

Wie wäre es wenn man einfach die Aktivierungsreihenfolge (TabIndex) der auf dem Formular besfindlichen Objekte von 0 - X richtig festlegt?

Antwort 5 von Queelun

Hallo Freunde

der Buchautor B. Held hat mir kürzlich einen Tip gegeben, wonach sich das Problem lösen lässt, indem man hinter die UserForm folgende Zeilen einfügt:

Private Sub UserForm_Initialize()
TextBox1.SetFocus
End Sub

mfg
Queelun