VBA UserForm2 bezárásakor UserForm1 legyen aktív
2022-03-01T15:24:25+01:00
2022-03-03T17:07:37+01:00
2022-08-12T07:45:29+02:00
bogár
Sziasztok! A UserForm1-en lévő Labelre kattintva megnyílik fölötte a Userform2 egy infó TextBoxszal. Ha UserForm2-t bezárom egy gombbal vagy az X-jellel, a Hide eltünteti, az alatta lévő UserForm1 viszont nem veszi vissza a vezérlést (focust?), csak, ha kattintok bárhol rajta.

Hogy lehetne ezt gördülékenyebbé tenni, hogy a plusz kattintás nélkül lehessen le-fel lépegetni a UserForm1.ListBoxban? A UserForm1.ListBox1.SetFocus nem segített.
Lehet, hogy ez csupán esztétikai problémának tűnik, de rém dühítő. : )
Köszi szépen a segítséget! bogár
Mutasd a teljes hozzászólást!
Szia!
Jó lenne, ha semleges adatokkal tennél fel egy mintát. Nálam nem jelentkezik ez a probléma (Excel 2016), neked milyen verziód van.
Üdv.
Mutasd a teljes hozzászólást!

  • Szia!
    A Userform2 kódban a HIDE után  kell a Userform1-en aktíválni azt a vezérlőt, amin a fókuszt szeretnéd.
    Az X-es bezárásnál a Userform_Terminate eseménybe kell ugyanezt megtenni.
    Üdv.
    Mutasd a teljes hozzászólást!
  • Szia Fferi!

    Ez a kód van a UserForm2 Code-ban:

    Private Sub CommandButton1_Click() 'Bezár gomb Sheets("+CFG").Range("CBKeresoTilt").Value = 1 UserForm2.Hide UserForm2.FlistaDoboz.Text = "" UserForm1.CheckBox2.SetFocus End Sub Private Sub FlistaDoboz_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 'Escape gombra bezár If KeyCode = 27 Then Sheets("+CFG").Range("CBKeresoTilt").Value = 1 UserForm2.Hide UserForm2.FlistaDoboz.Text = "" UserForm1.CheckBox2.SetFocus End If End Sub Private Sub UserForm_Terminate() Sheets("+CFG").Range("CBKeresoTilt").Value = 1 UserForm2.FlistaDoboz.Text = "" UserForm1.CheckBox2.SetFocus End Sub
    Miután a Bezár gombra, Escape-re vagy az X-re hide-olódik a UserForm2, az alatta lévő UserForm1-en lévő UserForm1.CheckBox2 körül megjelenik a szaggatott vonal, tehát átvette a focust (és a nyílbillentyűkkel át is adható más vezérlőknek a focus), viszont nem kattintható át a CheckBox2, ListBox stb., csak a második kattintásra.
    A Form fejlécét sem lehet megfogni és odébb vinni, csak, miután kattintottam a formon valahol.

    Ezt a plusz kattintást szeretném megspórolni. : (
    Mutasd a teljes hozzászólást!
  • Ahogy Fferi írta, előbb aktiváld, aztán setfocus.
    Mutasd a teljes hozzászólást!
  • Szia!
    Szerintem ne a Hide-ot használd, hanem az Unload Me utasítást.
    Ezzel eltűnik a memóriából a második Userform, ami azért is hasznos lehet, mert így nem okoz memória "túltengést". 
    A CheckBoxról egy kattintással mehetsz át másik vezérlőre szerintem.
    Üdv.
    Mutasd a teljes hozzászólást!
  • Szia/Sziasztok!

    "A Userform2 kódban a HIDE után  kell a Userform1-en aktíválni azt a vezérlőt, amin a fókuszt szeretnéd."
    "előbb aktiváld, aztán setfocus."

    Mit jelent az aktiválás? A UserForm1.CheckBox2.Activate hibát ad: hogyan lehet "előbb aktiválni" a vezérlőt/UserForm1-et?

    Átírtam Unloadra a Hide-ot UserForm2 bezárásánál.

    Ugyanitt megpróbálkoztam UserForm1.Hide majd egyből Show-val: ez megoldja a kattintási problémát (egyből működnek a vezérlők a UserForm1-en), viszont nagyon béna, ahogy villan egyet. Tudom, ez nem bug, hanem feature, de hogy néz má' ki... :S
    Mutasd a teljes hozzászólást!
  • Szia!
    Jó lenne, ha semleges adatokkal tennél fel egy mintát. Nálam nem jelentkezik ez a probléma (Excel 2016), neked milyen verziód van.
    Üdv.
    Mutasd a teljes hozzászólást!
  • Szia! Próbálok egy mintát készíteni lekérdezések nélkül.

    2010-es céges Excel... tudom, ideje volna lecserélni, de amíg lehet, kapaszkodok bele: az újabb "zöld" verziók Single Document Interface motorja nem engedi, hogy egyszerre ugyanaz a fájl két példányban meg legyen nyitva, és bizonyos okokból így biztonságosabb tesztelni a munkákat.
    Mutasd a teljes hozzászólást!
  • szerintem az is jó, ha ha a form1 kódjában a form2-t modal-ként nyitod meg
    Mutasd a teljes hozzászólást!
  • Szia! Ezzel fut most is (elvileg, ha nincs külön kiírva, alapértelmezetten modal-ban jeleníti meg a Show).
    Mutasd a teljes hozzászólást!
  • Szia Fferi!
    Nagyon köszönöm a segítségedet + a tesztelést, amivel meglett a hiba oka: a DbClick-es indítás.
    Click-be áttéve a UserForm2 indítását valóban tökéletesen működik a bezárása utáni első klikk a UserForm1-en. Nem gondoltam, hogy ilyen különbség van a kétféle indítás között, ezért nem is írtam korábban, szorri ezért.
    Köszönöm szépen a megoldást!
    Köszönettel, bogár
    Mutasd a teljes hozzászólást!
abcd