Formuláře   otázka

VB6/VBA

Ahoj,

potřeboval bych poradit s formulářema ve VBA excel. Moje představa je taková, že pojedu kurzorem po řádku s daty, když narazím na konkrétní buňku, potřebuji aby se mi zobrazil formulář pomocí "Worksheet_SelectionChange". Potud to není problém. Líbilo by se mi ale, abych mohl z buňky přeskočit kurzorem na další a při té přípežitosti by se formulář zase skryl. Nyní ho skyryji pouze jeho zavřením křížkem popřípadě potvrzením nějaké úlohy. Je toto proveditelné?

Předem díky za rady.

Radek

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Formulář skryjete v SelectionChange pomocí Unload

a zobrazit znovu pomocí Show nebo využijte jen Hide

metodu pro skrytí a po přechodu na další záznam data

aktualizujete na formuláři. Dost možná budete chtít

i nějakou validaci záznamu na platná data a nepovolit

přechod dále dokud nebude záznam v pořádku a s tím se

už asi potrápíte...

Event. pro zadání jedné buňky lze vyžít také jen prvku

vloženého v listu...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

děkuji, bohužel jsem asi špatně napsal otázku. Jde mi o to, že na listu mám

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.ScreenUpdating = False
On Error GoTo konec
   
            Radek = Target.Row
            Sloupec = Target.Column
            
        test2 = Cells(7, Sloupec).Text
        If test2 = "Platform" Then
            Radek = Target.Row
            Sloupec = Target.Column
            UserForm2.Show
        End If

V tom případě se mi při najetí kurzorem na definovanou buňku zobrazí formulář. Jenže, pokud potřebuji přez buňku jen přejet a nedoplňovat data do formuláře nejde to, jelikož se formulář aktivuje a dokud ho nezavřu nemohu se na listu hnout.

Výsledkem by mělo být to, že po najetí na buňku šipkou nebo myší se zobrazí formulář a uživatel má dvě možnosti, formulář doplnit a zavřít, nebo jen kurzorem přejet na další buňku a při tom by se formulář skryl.

Předem díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Používejte, prosím, pro sekce kódu tlačítko VB Code.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

S VBA jsem ještě nedělal, ale myslím že by to mělo být takto:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.ScreenUpdating = False
On Error GoTo konec
   
            Radek = Target.Row
            Sloupec = Target.Column
            
        test2 = Cells(7, Sloupec).Text
        If test2 = "Platform" Then
            Radek = Target.Row
            Sloupec = Target.Column
            UserForm2.Show
        Else
            UserForm2.Close()
            'nebo .Visible = False
        End If
 

Vážně nevím, můžete zkusit.

Ondřej Ondryáš

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

Nemůžes se hnout,neboť formulář

má výchozí zobrazení modálně.

Viz. metoda Show, zvolit:

UserForm2.Show vbModeless

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Cells(7, Target.Column).Text = "Platform" And _
        Selection.Cells.Count = 1 Then
        UserForm2.Show vbModeless
    Else
        Unload UserForm2
        'UserForm2.Hide 'varianta
    End If
End Sub

...

Při použití varianty pomocí Hide provést někde

unload formuláře např. v události před zavřením

sešitu, dále neproběhne událost Load formuláře,

kde nejspíš předáváte hodnotu buňky nějakému

prvku (např. textboxu), pak před zobrazením

pomocí Show dostat hodnotu do textboxu např. :

UserForm2.TextBox1.Text = ActiveCell.Text

Události myši nejsou dostupné, omezeno

na událost při změně výběru v listu...

Editaci buňky při zobrazeném formuláři

zamezit zřejmě zámkem, před zápisem

bude nutné buňku odemknout (Unprotect)

a poté znovu uzamknout (Protect), jinak

pokus o přepsání vyvolá chybu...

!!!

Znovu zapnout vypnuté ScreenUpdating:

Application.ScreenUpdating = True

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback