Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
832to836
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
832to836
832to836
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

SetFocus bringt Fehler

SetFocus bringt Fehler
05.01.2007 22:16:21
René
Hallo Leutz
Ich habe auf einer UserForm mehrere Frames, die wiederrum Textboxen enthalten.
Wenn ich jetzt, in Frame1/Textbox1 eine Eingabe tätige.
In der Textbox1 gebe ich einen Wert ein (in dem Fall ein Datum) und prüfe dieses in der Private Sub Textbox1_Change() mit IsDate auf Gültigkeit.
Bei Wert True möchte ich dann in Textbox2 mit SetFocus.
Diese Textbox2 ist aber in Frame2, was dann einen Fehler verursacht.
Laufzeitfehler '2110':
Fokus kann nicht auf das Steuerelement gesetzt werden. Es ist unsichtbar, nicht aktiviert oder von einem Typ, der keinen Fokus akzeptiert.
Mir ist schon klar, das dieses verursacht wird, weil ich mich nicht in dem selben aktiven Frame befinde.
Nur soweit reicht mein Wissen nicht, um dafür eine Lösung zu finden, das eben der Sprung in die Textbox2 doch gelingt.
Gibt es irgendein Befehl, mit dem ich den Frame2 bzw. Textbox2 aktiviere, und den Fokus setzen kann?
In dem Zusammenhang noch eine Unterfrage.
Gibt es eine Möglichkeit, den Coursor dem User bei Benutzung der Userform in den Textboxen dicker dar zu stellen?
Statt dem dünnen Strich einen dicken Strich.
Gruß René

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SetFocus bringt Fehler
06.01.2007 00:22:49
Ramses
Hallo
Habe das gerade nachgebaut,... und es ist kein Problem.
Ist die Textbox Aktiv, d.h. wenn du von Hand den Cursor reinsetzt, geht das dann ?
Ist das Frame bzw. die Textbox sichtbar ?
Gruss Rainer
Korrektur
06.01.2007 00:30:54
Ramses
Hallo
Solange sich nur die beiden Textboxen in der UF befinden geht es, ... bei mehreren jedoch nicht mehr. :-(
Probiers mal so

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = True
If IsDate(TextBox1) Then
Me.Controls("Textbox2").SetFocus
End If
End Sub

So geht es zumindest bei mir ohne Fehler
Gruss Rainer
Anzeige
AW: Korrektur
06.01.2007 13:05:18
René
Hallo Rainer
Wie in deinem Code beschrieben funzt das auch, da sich beide Textboxen auf einer Userform befinden.
Bei mir befinden sich die Textboxen auch auf einer Userform, aber in unterschiedlichen Frames.
Die Aktivierreihenfolge auf der Userform ist Frame1 dann Frame2 .... Framex.
Innerhalb der Frames sind die Textboxen in Reihe aktiviert TB1 ... TBx.
Vielleicht verhält es sich ja dann auch so, wie in deinem Versuch, das ein anderer Frame wie eine andere Userform behandelt wird.
Sichtbar sind die Textboxen jedenfalls alle.
Gruß René
AW: Korrektur
06.01.2007 13:34:16
René
Hallo Rainer
Ja, ich hab das nochmal getestet mit deinem Code.
Allerdings mit [Me.Controls("Textbox").SetFocus] habe ich den selben Fehler.
Mit 2 TB's gehts, mit mehreren nicht.
*Haarerauf*
Gruß René
Anzeige
AW: SetFocus bringt Fehler
06.01.2007 14:54:29
Herby
Hallo Rene,
das Problem liegt m.E. daran, dass du für jedes Frame
definieren kannst, wie der Focus nach dem letzten Element
innerhalb des Frames weitergegeben werden soll, entweder
wieder zurück zum 1. Element oder zum nächsten Element
ausserhalb des Frames:
Frame1.Cycle = fmCycleCurrentForm
Frame1.Cycle = fmCycleAllForms
Beispiel:
Beim Aufruf der Userform:

Private Sub UserForm_Initialize()
Frame1.Cycle = fmCycleCurrentForm
End Sub

und dann beim Verlassen der letzten Textbox im Frame1:

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = True
If Len(TextBox2.Value) = 10 And IsDate(TextBox2.Value) Then
Frame1.Cycle = fmCycleAllForms
End If
End Sub

Damit könnte es doch gehen !
Viele Grüße
Herby
Anzeige
AW: SetFocus bringt Fehler
06.01.2007 15:28:36
K.Rola
Hallo,
einfach den Namen des Frames angeben:
Frame1.TextBox2.SetFocus
Gruß K.Rola
AW: SetFocus bringt Fehler
06.01.2007 17:21:38
René
Hi K.Rola
Nee, das funzt auch nicht :-(
Der bricht auch mit Fehler ab.
Was mich nur stutzig macht, wenn ich die Userform lade, habe ich in der 'Private Sub UserForm_Initialize()' auch den Befehl 'Me.Textbox2.SetFocus'.
Ohne Frameangabe oder anderem, dort klappt das.
Allerdings ist dieser Frame auf der UF in der Aktivierungsfolge auch an erster Stelle.
Also ich weiß mir keinen Rat mehr :-/
Gruß René
AW: SetFocus bringt Fehler
06.01.2007 17:27:16
K.Rola
Hallo,
ich habe das getestet. Außer, dass du die Problemmappe mal hochladen könntest,
fällt mir nix weiter ein.
Gruß K.Rola
Anzeige
AW: SetFocus bringt Fehler
06.01.2007 21:01:34
K.Rola
Hallo,
so wirds klar, du kannst den Focus nicht im Exit-Ereignis auf das selbe control
setzen. Eine mögliche Lösung, prüf den Wert z.B. so:

Private Sub EinEuro_Enter()
Call Test_Verwendung
End Sub

Sub Test_Verwendung()
Dim a As String
a = Verwendung.Value
If a = "" Then
m = MsgBox("Es wurde kein Verwendungszweck eingegeben!", vbInformation, "Eingabe Verwendungszweck")
Verwendung.SetFocus
Else
Range("Zweck").Offset.Value = a
End If
End Sub
Im Übrigen möchte ich dir empfehlen, Option Explicit zu verwenden, was dich zwingt,
alle Variablen zu deklarieren, das hilft, Fehler zu vermeiden.
Gruß K.Rola
Anzeige
AW: SetFocus bringt Fehler
06.01.2007 21:23:56
René
Hallo K.Rola
Danke, ich werd das morgen mal austesten.
Den Tip mit Option Explicit werd ich bherzigen, gelesen hab ich den schon x-mal, aber naja ...
Gruß René

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige