rozbalovací seznam - aby byl pořád vidět
rozbalovací seznam - aby byl pořád vidět
Ve sloupci C mám vytvořený rozbalovací seznam (pomocí ověření dat). Pokud ho chci použít tak musím nejdříve na buňku vložit kurzor (zdržuje to), a pak teprve kliknu na šipku, co jsou dva úkony. Potřebuji nějak zrušit ten první klik umístění kurzoru, prostě aby ta šipečka byla aktivní pořád a mohl na ní klikat bez umístování kurzoru. Je to možné nějak vymyslet?
- Přílohy
-
- Vydaje15.xlsx
- (10.73 KiB) Staženo 42 x
-
- Pohlaví:
Re: rozbalovací seznam - aby byl pořád vidět
a) Ne, s Data / Ověření ne. Jak funguje, víte - po aktivaci buňky. Nečekáte, že se buňka aktivuje na "hover", tj. po najetí kurzoru myši, že ne? Teoreticky lze odchytávat událost Selection_Change a po aktivaci buňky rozbalit roletku (ALT + šipka dolů).
b) Použijte ActiveX prvky Seznam nebo Pole se seznamem (ListBox, ComboBox).
Dovedu si představit, že se tohle vlákno rozroste - vyhledávání v prvku, prvky nebudou držet na místě, problémy s tiskem, počet zobrazených položek, ...
b) Použijte ActiveX prvky Seznam nebo Pole se seznamem (ListBox, ComboBox).
Dovedu si představit, že se tohle vlákno rozroste - vyhledávání v prvku, prvky nebudou držet na místě, problémy s tiskem, počet zobrazených položek, ...
Re: rozbalovací seznam - aby byl pořád vidět
Děkuji za odpověď.
Co setýče ActiveX, tak jsem to zkoušel, a to není řešení, protože ovládací prvek lze propojit jenom s jednou buňkou, a já to potřebuji na celý sloupec (alespoň mě se to tedy na celý sloupec nepovedlo). EDIT - dodatečná oprava: lze to, ale já to neumím !!
Jako schůdné se mi jeví zachytávat událost Selection_Change, ale zatím se mi nepovedlo, aby VBA uměl udělat ALT + šipka dolů. Tak teď laboruji s použitím Userform.
Ohledně DATA / "Ověření dat" (možná u toho skončím, pokud nic nevymyslím) jsem ještě zjistil jednu "závadu", a sice když se kukrzorem vrátim na již vyplněnou buňku, tak se obsah buňky automaticky vymaže.
Co setýče ActiveX, tak jsem to zkoušel, a to není řešení, protože ovládací prvek lze propojit jenom s jednou buňkou, a já to potřebuji na celý sloupec (alespoň mě se to tedy na celý sloupec nepovedlo). EDIT - dodatečná oprava: lze to, ale já to neumím !!
Jako schůdné se mi jeví zachytávat událost Selection_Change, ale zatím se mi nepovedlo, aby VBA uměl udělat ALT + šipka dolů. Tak teď laboruji s použitím Userform.
Ohledně DATA / "Ověření dat" (možná u toho skončím, pokud nic nevymyslím) jsem ještě zjistil jednu "závadu", a sice když se kukrzorem vrátim na již vyplněnou buňku, tak se obsah buňky automaticky vymaže.
Naposledy upravil(a) atari dne 07 dub 2015 16:10, celkem upraveno 2 x.
Re: rozbalovací seznam - aby byl pořád vidět
atari píše:Co setýče ActiveX, tak jsem to zkoušel, a to není řešení, protože ovládací prvek lze propojit jenom s jednou buňkou, a já to potřebuji na celý sloupec (alespoň mě se to tedy na celý sloupec nepovedlo).
Nepište, že něco lze nebo nelze, pokud si tím nejste jistý a jen si to myslíte. Někdo si to přečte a bude si to myslet také.
Např. ListBox nebo ComboBox mají vlastnost ListFillRange
Takže koukněte na ListBox ve spojení s touto vlastností.
Re: rozbalovací seznam - aby byl pořád vidět
Tak to upřesním:
Vlastnost ListFillRange je oblast zdroje dat, kde lze zadat větší oblast buněk.
Vlastnost LinkedCell je buňka, se kterou je prvek propojený (neboli kam se umísťuje hodnota), a to lze opravdu propojit jen s jednou buňkou. Já to potřebuji na celý sloupec (vždy na řádek, který edituji)
.
Tak jsem zkoušel měnit hodnotu LinkedCell přes VBA:
Zápis: ListBox1.LinkedCell = "a1" funguje (zde však nemohu měnit hodnotu)
Zápis: ListBox1.LinkedCell = Cells(1, 1) nefunguje.
Jenže já tu hodnotu potřebuji měnit přes VBA. Má někdo nápad jak to vyřešit, nebo jestli něco dělám špatně?
Vlastnost ListFillRange je oblast zdroje dat, kde lze zadat větší oblast buněk.
Vlastnost LinkedCell je buňka, se kterou je prvek propojený (neboli kam se umísťuje hodnota), a to lze opravdu propojit jen s jednou buňkou. Já to potřebuji na celý sloupec (vždy na řádek, který edituji)
.
Tak jsem zkoušel měnit hodnotu LinkedCell přes VBA:
Zápis: ListBox1.LinkedCell = "a1" funguje (zde však nemohu měnit hodnotu)
Zápis: ListBox1.LinkedCell = Cells(1, 1) nefunguje.
Jenže já tu hodnotu potřebuji měnit přes VBA. Má někdo nápad jak to vyřešit, nebo jestli něco dělám špatně?
Kód: Vybrat vše
Private Sub ListBox1_Click()
'ListBox1.LinkedCell = "a1"
ListBox1.LinkedCell = Cells(1, 1)
End Sub
- Přílohy
-
- Vydaje15.xlsm
- (19.36 KiB) Staženo 49 x
Re: rozbalovací seznam - aby byl pořád vidět
Moc nerozumím, přijde mi to jako něco jiného než jste se ptal v úvodním příspěvku...
Ale zřejmě chcete
Ale zřejmě chcete
Kód: Vybrat vše
ListBox1.LinkedCell = Cells(1, 1).Address
Re: rozbalovací seznam - aby byl pořád vidět
Díky moc, to je přesně ono.
Možná jsem se v úvodu nepřesně vyjádřil. Potřebuji do A1 zadat částku, a vedle do B1 vybrat hodnotu k čemu to patří (ze seznamu předdefinovaných hodnot). A pak A2 a B2 atd. A chtěl jsem, abych při tom výběru v "B" nemusel ten seznam hodnot rozklikávat, prostě aby byl pořád otevřený.
Možná jsem se v úvodu nepřesně vyjádřil. Potřebuji do A1 zadat částku, a vedle do B1 vybrat hodnotu k čemu to patří (ze seznamu předdefinovaných hodnot). A pak A2 a B2 atd. A chtěl jsem, abych při tom výběru v "B" nemusel ten seznam hodnot rozklikávat, prostě aby byl pořád otevřený.
Re: rozbalovací seznam - aby byl pořád vidět
Tak přesně tohle jsem potřeboval (v příloze). Když kdekoliv ve sloupci D vložím kurzor, tak aby se mi u toho zobrazil již otevřený seznam hodnot, ze které si jedním kliknutím myši vyberu.
- Přílohy
-
- Vydaje15.xlsm
- (23.89 KiB) Staženo 70 x
Re: rozbalovací seznam - aby byl pořád vidět
Dobrý den
doplnil bych ještě
do yes větve ListBox1.Visible = True
a do no větve ListBox1.Visible = false
Aby poloha lisboxu nezávisela na velikosti písma v buňce tak snad
ListBox1.Top = Target.Top + ActiveCell.Height
ListBox1.Left = Target.Left + ActiveCell.Width
Prosím o vysvětlení jak se docílí toho, aby nehavarovalo, když už je v buňce jiná hodnota než se očekává.
děkuji
Milan
doplnil bych ještě
do yes větve ListBox1.Visible = True
a do no větve ListBox1.Visible = false
Aby poloha lisboxu nezávisela na velikosti písma v buňce tak snad
ListBox1.Top = Target.Top + ActiveCell.Height
ListBox1.Left = Target.Left + ActiveCell.Width
Prosím o vysvětlení jak se docílí toho, aby nehavarovalo, když už je v buňce jiná hodnota než se očekává.
děkuji
Milan
Re: rozbalovací seznam - aby byl pořád vidět
Tohle jsem nepochopil, můžeš to nějak zkonkretizovat?VOM píše:do yes větve ListBox1.Visible = True
a do no větve ListBox1.Visible = false.
Poloha je dobrý nápad, jen jsem to upravil takto:
ListBox1.Top = Target.Top
ListBox1.Left = Target.Left + ActiveCell.Width
Aby makro nehavarovalo, tak stačí ošetřit aktivní buňku, zda obsahuje jiný text než v Listboxu, a pak ji vymazat. Toto ošetření však pro mě není žádoucí, protože tato situace by teoreticky neměla nastat. A pokud nastane, tak mě alespoň chybová hláška upozorní, a já budu moci provést kontrolu, kde se stala chyba.
Re: rozbalovací seznam - aby byl pořád vidět
zdravím pěkně
takhle
If sloupec = 5 Then
ListBox1.Visible = True
ListBox1.Top = Target.Top + ActiveCell.Height
ListBox1.Left = Target.Left + ActiveCell.Width
ListBox1.LinkedCell = Cells(radek, 5).Address
Else
ListBox1.Visible = False
End If
Milan
--- Doplnění předchozího příspěvku (13 Dub 2015 13:30) ---
takhle
If sloupec = 5 Then
ListBox1.Visible = True
ListBox1.Top = Target.Top + ActiveCell.Height
ListBox1.Left = Target.Left + ActiveCell.Width
ListBox1.LinkedCell = Cells(radek, 5).Address
Else
ListBox1.Visible = False
End If
Milan
--- Doplnění předchozího příspěvku (13 Dub 2015 13:30) ---
Re: rozbalovací seznam - aby byl pořád vidět
Tak jsem zrušil Listbox jako ActiveX, a předělal to na formulář. Potřeboval jsem, abych mohl ze seznamu vybírat šipkama (abych nemusel pořád šahat na myš). Jako ActiveX se mě nepodařilo to udělat na ovládání šipkaka, formulář to dělá automaticky. Mám dotaz:
Jak to udělat, abych ten formulář mohl zavřít stiskem "ENTER" na klávesnici. To jsem nikde nenašel. (Prostě abych vůbec nemusel používat myš.)
(Zatím to dělám tak, že klávesou "Tab" si přepnu kurzor na tlačítko "Zavři" a pak už přes ENTER formulář zavřu, ale ten "TAB" je už to klik navíc.)
Poznámka: mám to udělané tak, že formulář se objevuje, jen když je kurzor ve sloupci E.
Jak to udělat, abych ten formulář mohl zavřít stiskem "ENTER" na klávesnici. To jsem nikde nenašel. (Prostě abych vůbec nemusel používat myš.)
(Zatím to dělám tak, že klávesou "Tab" si přepnu kurzor na tlačítko "Zavři" a pak už přes ENTER formulář zavřu, ale ten "TAB" je už to klik navíc.)
Poznámka: mám to udělané tak, že formulář se objevuje, jen když je kurzor ve sloupci E.
- Přílohy
-
- Vydaje15_verze_formular.xlsm
- (25.25 KiB) Staženo 57 x
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
-
NTB s Win 11 přestal vidět Choetech USB Hub 9v1 Příloha(y)
od EZumrova » 14 pro 2023 09:02 » v Problémy s hardwarem - 8
- 1000
-
od mmmartin
Zobrazit poslední příspěvek
16 pro 2023 22:28
-
-
- 4
- 1071
-
od petr22
Zobrazit poslední příspěvek
14 pro 2023 07:58
-
- 5
- 2730
-
od richchie
Zobrazit poslední příspěvek
09 bře 2024 22:12
-
- 3
- 731
-
od mmmartin
Zobrazit poslední příspěvek
25 úno 2024 11:50
-
- 1
- 3597
-
od KubaCZE
Zobrazit poslední příspěvek
21 úno 2024 20:00
Kdo je online
Uživatelé prohlížející si toto fórum: Facebook [Bot] a 14 hostů