Excel VBA SetFocus

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Odpovědět
KECOnaj
nováček
Příspěvky: 4
Registrován: 26 zář 2017 20:41

Excel VBA SetFocus

Příspěvek od KECOnaj »

Čaute,

vo VBA mám vytvorený formulár a nefunguje mi zvýraznenie tlačítka Button_Dalej.SetFocus, keď ho volám z funkcie Private Sub ComboBox_Firma_Exit(ByVal Cancel As MSForms.ReturnBoolean).

Tlačítko mám nastavené dobre (keby som to zavolal z Private Sub UserForm_Initialize(), tak je to OK).
Problém je v tom, že tlačítko sa mi nenastaví, keď opustím ComboBox stlačením "tab", alebo "Enter", keď sa prepnem myškou je to OK. Pri tom "tab", alebo "Enter" to funguje len pokiaľ neopustím funkciu Private Sub ComboBox_Firma_Exit, potom ma to hodí o jednu hodnotu TabIndex ďalej (namiesto 2 na 3, napr. keby som nemal použité Button_Dalej.SetFocus, tak ma to po stlačení Enter hodí na pozíciu 2, keď to použijem hodí ma to na pozíciu 3).

Vôbec tomu nechápem a už som z toho zúfalý... :(

Celý kód:

Kód: Vybrat vše

Private Sub ComboBox_Firma_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim SuborDatabazaNazov As String 'Premena s nazvom databazi
SuborDatabazaNazov = "Databaza Firiem.xlsx" 'Zadame nazov databazi do premennej

On Error Resume Next 'Nezobrazime err
'Zistime ci je subor otvoreny
Set SuborDatabaza = Workbooks(SuborDatabazaNazov) 'Nacitame subor
SuborDatabazaOtvoreny = Not SuborDatabaza Is Nothing 'Zistime ci je otvoreny

If SuborDatabazaOtvoreny = True Then 'Ak je otvoreny
Workbooks(SuborDatabazaNazov).Activate 'Aktivujeme subor

With Range("Nazov_DatabazaFirmy") 'Prehladavame v nazvoch firiem
Set Rng = .Find(FormFirma.ComboBox_Firma.Value, MatchCase:=True) 'Hladame ci je zadana firma v databaze
If Not Rng Is Nothing Then 'Ak je nastavime hodnoty z databazy
FirmaZDatabazy = True 'Firma sa nachadza v databaze

TextBox_Adresa.Value = Rng.Offset(0, 1).Value
TextBox_PSC.Value = Rng.Offset(0, 2).Value
TextBox_Mesto.Value = Rng.Offset(0, 3).Value
TextBox_ICO.Value = Rng.Offset(0, 4).Value
TextBox_DIC.Value = Rng.Offset(0, 5).Value
Button_Dalej.SetFocus

Else 'Ak nie je vymazeme hodnoty
TextBox_Adresa.Value = ""
TextBox_PSC.Value = ""
TextBox_Mesto.Value = ""
TextBox_DIC.Value = ""
TextBox_ICO.Value = ""
End If
ThisWorkbook.Activate 'Nastavime aktivny, aktualny zosit, aby nas nepreplo do databazy
End With
End If
End Sub
Private Sub UserForm_Initialize()
ComboBox_Firma.SetFocus 'Na zaciatku nastavime kurzor na nazov firmy
End Sub
Uživatelský avatar
elninoslov
Level 2.5
Level 2.5
Příspěvky: 386
Registrován: 12 čer 2013 23:40

Re: Excel VBA SetFocus

Příspěvek od elninoslov »

A čo keby ste nastavil TabIndex toho buttonu o jedno vyšší ako ma TabIndex ten combobox ? Tak by to malo fungovať... aspoň u mňa to v tom prípade funguje aj pri Enter aj pri Tab.
KECOnaj
nováček
Příspěvky: 4
Registrován: 26 zář 2017 20:41

Re: Excel VBA SetFocus

Příspěvek od KECOnaj »

Ďakujem za odpoveď. Toto mi robilo problém v tom, že na tlačítko som chcel skočiť iba ak sa mi formulár vyplnil automaticky. Ale už to mám: overovanie som zmenil z funkcie _Exit na _Change a tam mením TabIndex, ako píšete, podľa toho či sa mi formulár automaticky vyplnil. Potom vo funkcií ComboBox_Firma_Exit naspäť nastavím TabIndex na pôvodné číslo, aby následne fungoval tab normálnym poradím.
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Přechod z Excel 21 na Excel 24
    od Snekment » » v Kancelářské balíky
    2 Odpovědi
    14486 Zobrazení
    Poslední příspěvek od Snekment
  • Pohoda a excel
    od brownwld » » v Kancelářské balíky
    1 Odpovědi
    7406 Zobrazení
    Poslední příspěvek od atari
  • Tisk sloupců vedle sebe na A4 - Excel
    od atari » » v Kancelářské balíky
    5 Odpovědi
    5985 Zobrazení
    Poslední příspěvek od atari
  • Excel 2016 - vzorec kombinace podmínek
    od MK_Vs » » v Kancelářské balíky
    5 Odpovědi
    6202 Zobrazení
    Poslední příspěvek od lubo.

Zpět na „Kancelářské balíky“