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

frameexit

frame_exit
13.05.2007 15:59:50
kirsche

hallo leute,
ihr seit meine letzte hoffnung.
wieder mal habe ich ein problem, an welchem ich mir nun schon stunden lang die zähne ausbeiße und überhaupt nicht weiter komme. auch die recherche hat nichts gebracht.
ich habe eine userform, auf welcher sich ne multipage und darauf einige frame befinden.
über frame_exit prüfe ich:
ob in der textbox ein wert eingegeben wurde,
wenn ja, ist er in der datenbank vorhanden,
sonst setze den focus auf diese textbox


Private Sub Frame8_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'Benutzernummer
Dim rZelle   As Range
Dim lLetzte  As Long
lLetzte = Worksheets("Marktnummern").Range("D65536").End(xlUp).Row
If TextBox10.Value <> "" Then
If IsNumeric(TextBox10.Value) Then
Set rZelle = Worksheets("Marktnummern").Range("J2:J" & lLetzte) _
.Find(TextBox10.Value, Lookat:=xlWhole, LookIn:=xlValues)
If Not rZelle Is Nothing Then
Label20.Caption = Trim(Worksheets("Marktnummern").Cells(rZelle.Row, 11).Value)
Range("A1").Value = TextBox10.Value
Range("N1").Value = "bearbeitet von " & Label20.Caption
Else
MsgBox "Bitte geben Sie Ihre Benutzernummer ein - danke", _
48, "   Hinweis für " & Application.UserName
With TextBox10
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Cancel = True
End If
Else
MsgBox "Bitte geben Sie Ihre Benutzernummer ein - danke", _
48, "   Hinweis für " & Application.UserName
With TextBox10
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Cancel = True
End If
Else
MsgBox "Bitte geben Sie Ihre Benutzernummer ein - danke", _
48, "   Hinweis für " & Application.UserName
With TextBox10
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
End Sub


dann kann ich über einen commandbutton alle textboxen leeren, auch wenn ich mitten in einem frame stecke, die prüfung wird abgebrochen und die textboxen geleert
nun mein problem:
wenn ich nun über einen commandbutton die userform verlassen möchte, bleibe ich in dem frame stecken, wo die letzte eingabe stattfand, auch wenn alle textboxen bereits geleert wurden.
mein code für's leeren


Private Sub CommandButton12_Click() 'alle textboxen und label leeren
Application.EnableEvents = False
Dim iIndex  As Integer
For iIndex = 1 To 10
Controls("TextBox" & iIndex).Value = ""
Next iIndex
Label3.Caption = ""
Label5.Caption = ""
Label7.Caption = ""
Label8.Caption = ""
Label9.Caption = ""
Label13.Caption = ""
Label17.Caption = ""
Label20.Caption = ""
Label25.Caption = ""
Label26.Caption = ""
Label27.Caption = ""
Label28.Caption = ""
Label30.Caption = ""
Label31.Caption = ""
Label32.Caption = ""
Label36.Caption = ""
Label37.Caption = ""
Label38.Caption = ""
TextBox6.Visible = False
TextBox7.Visible = False
TextBox4.Visible = False
Application.EnableEvents = True
End Sub


mein code für's verlassen der userform


Private Sub Image1_Click()
Application.EnableEvents = False
Call CommandButton12_Click
Unload Me
Application.EnableEvents = True
End Sub


ich bekomme immer den letzten focus als fehlermeldung, warum???
kann mir jemand helfen??? ich bin schon am verzweifeln, auch über das normale schließen X geht es nicht.
gruss kirsche

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: frame_exit
13.05.2007 22:38:22
Gerd L
Hallo kirsche,
die Begrifflichkeiten bitte noch (wieder) anpassen.
Option Explicit
Public blnMachNix As Boolean


Private Sub UserForm_Activate()
blnMachNix = False
End Sub



Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
blnMachNix = True
End Sub



Private Sub Frame1_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'Benutzernummer
Dim rZelle   As Range
Dim lLetzte  As Long
If blnMachNix Then Exit Sub
lLetzte = Worksheets("Tabelle2").Range("D65536").End(xlUp).Row
If TextBox1.Value <> "" And IsNumeric(TextBox1.Value) Then
Set rZelle = Worksheets("Tabelle2").Range("J2:J" & lLetzte) _
.Find(TextBox1.Value, Lookat:=xlWhole, LookIn:=xlValues)
If Not rZelle Is Nothing Then
Label2.Caption = Trim(Worksheets("Tabelle2").Cells(rZelle.Row, 11).Value)
Range("A1").Value = TextBox1.Value
Range("N1").Value = "bearbeitet von " & Label2.Caption
Exit Sub
End If
End If
MsgBox "Bitte geben Sie Ihre Benutzernummer ein - danke", _
48, "   Hinweis für " & Application.UserName
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Cancel = True
End Sub



Private Sub CommandButton1_Click() 'alle textboxen und label leeren
Application.EnableEvents = False
blnMachNix = True
Dim iIndex  As Integer
For iIndex = 1 To Me.Controls.Count
On Error Resume Next
If Controls(iIndex).Name Like "TextBox*" Then Controls(iIndex).Value = ""
If Controls(iIndex).Name Like "Label*" Then Controls(iIndex).Caption = ""
On Error GoTo 0
Next iIndex
TextBox2.Visible = False
Application.EnableEvents = True
End Sub



Private Sub Image1_Click()
Application.EnableEvents = False
blnMachNix = True
Call CommandButton1_Click
Unload Me
Application.EnableEvents = True
End Sub


Gruß
Gerd

Anzeige
AW: frame_exit
13.05.2007 22:43:43
kirsche
hallo gerd,
danke für deine hilfe, ich werde das gleich mal testen und mich dann noch mal melden, ob es funktioniert hat. momentan habe ich getrixt und beim verlassen alle textboxen mit ner 0 füllen lassen, das hat auch funktioniert ist aber nicht die sauberste lösung.
gruss dörte

AW: frame_exit
13.05.2007 23:43:12
kirsche
hallo gerd,
ich habe den code angepasst und getestet, was soll ich sagen??? er funktioniert einwandfrei, kein debugger und gemecker mehr. freu
ich bedanke mich bei dir und auch diesem forum möchte ich ein großes lob aussprechen. es hat mir schon viel geholfen.
dieses forum ist einfach klasse und ich empfehle es immer wieder gerne weiter.
gruss kirsche

Anzeige
AW: frame_exit
17.05.2007 18:49:34
kirsche
hallo gerd,
ich habe deinen code eingebaut und er funktioniert super. nun ist aber noch ein button hinzu gekommen. mit commandbutton 2 möchte ich die textboxen 1 - 9 und einige labels leeren, die textbox 10 soll ihren wert behalten. nach dem leeren wird der focus auf frame 1 gesetzt. soweit ist auch alles ok. nur wenn nicht alle textboxen einen wert hatten, springt der cursor von frame 1 in die ehemals letztbefüllte textbox und will dort weiter machen. das kann frame 5 oder 3 sein, aber nach 1 kommt 2 drann. die aktivierreihenfolge ist irgendwie außer kraft.
was habe ich falsch gemacht???


Private Sub CommandButton2_Click() 'eingabemaske leeren
Application.EnableEvents = False
Dim iIndex  As Integer
For iIndex = 1 To 9
On Error Resume Next
Controls("TextBox" & iIndex).Value = ""
On Error GoTo 0
Next iIndex
Label3.Caption = ""
Label5.Caption = ""
Label7.Caption = ""
Label8.Caption = ""
Label9.Caption = ""
Label13.Caption = ""
Label17.Caption = ""
'Label20.Caption = ""
Label25.Caption = ""
Label26.Caption = ""
Label27.Caption = ""
Label28.Caption = ""
Label30.Caption = ""
Label31.Caption = ""
Label32.Caption = ""
Label36.Caption = ""
Label37.Caption = ""
Label38.Caption = ""
TextBox6.Visible = False
TextBox7.Visible = False
TextBox4.Visible = False
Application.EnableEvents = True
Frame1.SetFocus
End Sub


wenn ich diese zeile einfüge
blnMachNix = True
dann passiert gar nix mehr, also habe ich sie weggelassen. ich habe es auch schon versucht, die zeile drin zu lassen und dann am ende auf false zu setzten, gleiches ergebnis.
es ist doch zum heulen.
gruss kirsche

Anzeige
AW: frame_exit
17.05.2007 19:48:29
Gerd L
Hallo kirsche,
es hätte mich ja auch gewundert, falls Du nicht weitergemacht hättest. :-)
Auf den erst Blick fällt auf, dass im Commandbutton2_Click am Schluss der
Focus auf Frame1 gesetzt wird.
Falls er nun nach Frame3 oder Frame5 sollte, müsstest diese Codezeile ggf.
mit einer entsprechenden IF-Bedingung ändern.
Gruß Gerd

AW: frame_exit
17.05.2007 20:09:09
kirsche
hallo gerd,
der focus soll am ende auf frame 1 gesetzt werden, und dann die aktivierreihenfolge wieder einhalten, das macht er aber nicht. er fängt dort an, wo ich ausgestiegen bin.
ich hänge mal die datei an.
benutzernummer = 66
datum = 12,5
marktnummer = 56865
artikelnummer = 26060
dann dateneingabemaske leeren
der focus geht auf datum, soweit ok
nun verlangt er aber gleich nach der retourenmenge und das möchte ich nicht. ich möchte dann auf marktnummer.
https://www.herber.de/bbs/user/42536.zip
ich hoffe, du kannst mir helfen.
gruss kirsche

Anzeige
AW: frame_exit
17.05.2007 20:44:17
Gerd L
Hallo kirsche,
deine Datei produziert auf meinem Rechner (xl2000) leider einen Treiberfehler.
Ich stelle deshalb deine Frage mal auf noch offen, damit sich andere diese anschauen.
Gruß Gerd

AW: frame_exit
17.05.2007 20:53:52
kirsche
hallo gerd,
der treiberfehler ist nicht weiter von bedeutung. sicher hast du versucht, die abfrage zu aktualisieren. da mußt du auf deaktivieren gehen, wenn ich die datei in meiner firma benutze, wird eine abfrage an die datenbank im hintergrung gestartet, ich habe allerdings einige artikeldaten eingefügt, somit kann man testen.
gruss kirsche

AW: frame_exit
17.05.2007 23:19:06
kirsche
hallo gerd,
problem ist gelöst, dank peter f.
der code für eingabefelder leeren sieht nun so aus:


Private Sub CommandButton2_Click() 'eingabemaske leeren
Unload Vordruck
Vordruck.Show
End Sub


so klappt es wunderbar.
gruss kirsche

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige