Note: The other languages of the website are Google-translated. Back to English

Jak zobrazit první položku v rozevíracím seznamu namísto prázdného?

výchozí rozevírací seznam dokumentů na začátek 1

Rozevírací seznam v listu nám může pomoci usnadnit zadávání dat, stačí jen vybrat položky, aniž byste je museli psát jeden po druhém. Ale někdy, když kliknete na rozevírací seznam, nejprve přeskočí na prázdné položky namísto první datové položky, jak ukazuje následující snímek obrazovky, což může být způsobeno odstraněním zdrojových dat na konci seznamu. Může být nepříjemné, že musíte posunout zpět na začátek dlouhého seznamu pro každou prázdnou buňku pro ověření dat. V tomto článku budu hovořit o tom, jak vždy zobrazit první položku v rozevíracím seznamu.

Zobrazit první položku v rozevíracím seznamu místo prázdné pomocí funkce ověření dat

Automaticky zobrazit první položku v rozevíracím seznamu namísto prázdné pomocí kódu VBA


šipka modrá pravá bublina Zobrazit první položku v rozevíracím seznamu místo prázdné pomocí funkce ověření dat


Ve skutečnosti k dosažení této úlohy stačí použít konkrétní vzorec při vytváření rozevíracího seznamu, postupujte takto:

1. Vyberte buňky, do kterých chcete vložit rozevírací seznam, a klikněte Data > Ověření dat > Ověření dat, viz screenshot:

výchozí rozevírací seznam dokumentů na začátek 2

2. Ve vyskočené Ověření dat v dialogovém okně pod Nastavení kartu, vyberte Seznam z povolit a poté zadejte tento vzorec: = OFFSET (List3! $ A $ 1,0,0, COUNTA (List3! $ A: $ A) -1,1) do Zdroj textové pole, viz screenshot:

Poznámka: V tomto vzorci Sheet3 je list obsahuje seznam zdrojových dat a A1 je první hodnota buňky v seznamu.

výchozí rozevírací seznam dokumentů na začátek 3

3. Pak klikněte na tlačítko OK Tlačítko, nyní, když kliknete na buňky rozevíracího seznamu, první datová položka se vždy zobrazí nahoře, zda jsou na konci zdrojových dat odstraněny hodnoty buněk, viz screenshot:

výchozí rozevírací seznam dokumentů na začátek 4


šipka modrá pravá bublina Automaticky zobrazit první položku v rozevíracím seznamu namísto prázdné pomocí kódu VBA

Tady mohu také představit kód VBA, který vám pomůže automaticky zobrazit první položku v rozevíracím seznamu, když kliknete na buňky pro ověření dat.

1. Po vložení rozevíracího seznamu vyberte kartu listu, která obsahuje rozevírací seznam, a vyberte kliknutím pravým tlačítkem Zobrazit kód z kontextového menu přejděte do Microsoft Visual Basic pro aplikace okno a poté zkopírujte a vložte následující kód do modulu:

Kód VBA: Automaticky zobrazit první datovou položku v rozevíracím seznamu:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updateby Extendoffice 20160725
    Dim xFormula As String
    On Error GoTo Out:
    xFormula = Target.Cells(1).Validation.Formula1
    If Left(xFormula, 1) = "=" Then
        Target.Cells(1) = Range(Mid(xFormula, 1)).Cells(1).Value
    End If
Out:
End Sub

výchozí rozevírací seznam dokumentů na začátek 5

2. Poté uložte a zavřete okno kódu a nyní, když kliknete na buňku rozevíracího seznamu, zobrazí se najednou první datová položka.


Nejlepší kancelářské nástroje produktivity

Kutools pro Excel řeší většinu vašich problémů a zvyšuje vaši produktivitu o 80%

  • Opakované použití: Rychle vložte složité vzorce, grafy a cokoli, co jste dříve používali; Šifrovat buňky s heslem; Vytvořte seznam adresátů a posílat e-maily ...
  • Super Formula Bar (snadno upravit více řádků textu a vzorce); Rozložení pro čtení (snadno číst a upravovat velké množství buněk); Vložit do filtrovaného rozsahu...
  • Sloučit buňky / řádky / sloupce bez ztráty dat; Rozdělit obsah buněk; Zkombinujte duplicitní řádky / sloupce... Zabraňte duplicitním buňkám; Porovnat rozsahy...
  • Vyberte možnost Duplikovat nebo Jedinečný Řádky; Vyberte prázdné řádky (všechny buňky jsou prázdné); Super hledání a fuzzy hledání v mnoha sešitech; Náhodný výběr ...
  • Přesná kopie Více buněk beze změny odkazu na vzorec; Automaticky vytvářet reference do více listů; Vložte odrážky, Zaškrtávací políčka a další ...
  • Extrahujte text, Přidat text, Odebrat podle pozice, Odebrat mezeru; Vytváření a tisk mezisoučtů stránkování; Převod mezi obsahem buněk a komentáři...
  • Super filtr (uložit a použít schémata filtrů na jiné listy); Rozšířené řazení podle měsíce / týdne / dne, frekvence a dalších; Speciální filtr tučnou kurzívou ...
  • Kombinujte sešity a pracovní listy; Sloučit tabulky na základě klíčových sloupců; Rozdělte data do více listů; Dávkový převod xls, xlsx a PDF...
  • Více než 300 výkonných funkcí. Podporuje Office / Excel 2007-2019 a 365. Podporuje všechny jazyky. Snadné nasazení ve vašem podniku nebo organizaci. Kompletní funkce 30denní bezplatná zkušební verze. 60denní záruka vrácení peněz.
karta kte 201905

Office Tab přináší do Office rozhraní s kartami a usnadňuje vám práci

  • Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
  • Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
  • Zvyšuje vaši produktivitu o 50% a omezuje stovky kliknutí myší každý den!
officetab dno
Komentáře (9)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
Po posunutí dolů vyberte na buňky číselná data nepřicházejí v sérii pouze data první buňky přijdou vybrat 1,2 různých buněk a přejděte dolů hodnota nepřichází 1,2,3,4,5....... přichází pouze hodnota první buňky 1,1,1,1,....
Tento komentář byl moderátorem webu minimalizován
vyberte buňku, do které jste umístili položku seznamu
rozsah pro položku seznamu je "Opleiding"
ve vašem kódu VBA:

selection.Value = Range("opleiding").Cells(2, 1)

výsledkem je, že vybraná položka seznamuItem je druhá položka v rozsahu "Opleiding"
Tento komentář byl moderátorem webu minimalizován
Jak mohu nastavit ověřovací seznam dat tak, že pokud je rozbalovací hodnota v buňce odstraněna, buňka automaticky zobrazí výchozí hodnotu (tj. "-Vybrat-")?

Například mám list s více rozevíracími seznamy, u kterých chci po otevření listu zobrazit výchozí hodnotu "-Select-". Uživatel vybere hodnoty ze seznamů, které ovlivní výsledek výpočtů v celé tabulce. Uživatel může omylem „smazat“ obsah buňky. Pokud k tomu dojde, místo aby se buňka vyprázdnila, chci, aby buňka zobrazovala výchozí hodnotu "-Select-". Tento scénář se vyskytuje na více náhodných místech v tabulce, nikoli pouze na jednom lokalizovaném místě.

Dosud jsem byl schopen přijít s následujícím kódem VBA, ale přišel jsem pouze na to, jak tento koncept aplikovat na určitý rozsah, nikoli pouze na buňky, které obsahují rozevírací seznam. Problém s tím, co jsem zatím kódoval, je ten, že každá prázdná buňka v rozsahu končí s "-Select-".

Možnost explicitní

Soukromá dílčí tabulka_Změna (ByVal Target As Range)
Dim cel As Range
' Pokud Target.Cells.Count > 1, pak Exit Sub
If Not Intersect(Target, Range("f2:p17")) Is Nothing Then
Pro každou buňku v rozsahu("f2:p17")
Application.EnableEvents = False
If IsEmpty(cel.Value) Then cel.Value = "-Select-"
Další cel
End If
Application.EnableEvents = True
End Sub
Tento komentář byl moderátorem webu minimalizován
Dobrý den!

Jak mohu nastavit ověřovací seznam dat tak, že pokud je rozbalovací hodnota v buňce odstraněna, buňka automaticky zobrazí výchozí hodnotu (tj. "-Select-")?

Například mám list s více rozevíracími seznamy, u kterých chci po otevření listu zobrazit výchozí hodnotu "-Select-". Uživatel vybere hodnoty ze seznamů, které ovlivní výsledek výpočtů v celé tabulce. Uživatel může omylem „smazat“ obsah buněk v seznamech. Pokud k tomu dojde, místo aby se buňka vyprázdnila, chci, aby buňka zobrazovala výchozí hodnotu "-Select-". Tento scénář se vyskytuje na více náhodných místech v tabulce, nikoli pouze na jednom lokalizovaném místě.

Doposud jsem byl schopen najít následující kód VBA, ale tento koncept se vztahuje pouze na určitý rozsah, nikoli pouze na jednotlivé buňky, které obsahují rozevírací seznamy. Problém s tím, co jsem zatím kódoval, je ten, že každá prázdná buňka v rozsahu končí s "-Select-". Některé seznamy jsou v rozsazích, ale některé jsou také roztroušeny po celém listu. Problém, který mám s mým současným kódem, je ten, že každá prázdná buňka v rozsahu končí s "-Select-". Snažím se, aby se to vztahovalo na celý list POUZE na buňky, které jsou rozevíracími seznamy.

Je to, čeho se snažím dosáhnout, vůbec možné?

Příklad souboru naleznete zde:
https://drive.google.com/file/d/1VoO8VgFs3IJ0ALwqfk0i8gt69UE4vEKW/view?usp=sharing

Příklad kódu:

Možnost explicitní

Soukromá dílčí tabulka_Změna (ByVal Target As Range)
Dim Cel As Range
' If Target.Cells.Count > 1 Then Exit Sub 'vypnutím tohoto nastavení lze vybrat a odstranit více buněk současně
If Not Intersect(Target, Range("f2:p17")) Is Nothing Then
Pro každou buňku v rozsahu("f2:p17")
Application.EnableEvents = False
If IsEmpty(cel.Value) Then cel.Value = "-Select-"
Další cel
End If
Application.EnableEvents = True
End Sub


Díky předem!
Tento komentář byl moderátorem webu minimalizován
Nefunguje mi to. Stále se mi zobrazuje chybová zpráva, která říká: "S tímto vzorcem je problém. Nepokoušíte se napsat vzorec? Když je první znak rovnítko (+) nebo mínus (-), Exel si myslí, že jde o vzorec.... Chcete-li to obejít, zadejte nejprve apostrof (')...“
Tento komentář byl moderátorem webu minimalizován
Ještě jednou, zachráníte den! Dík!
Tento komentář byl moderátorem webu minimalizován
Lepší, ale ne tak docela. Použitím metody =OFFSET(List3!$A$1,0,0,COUNTA(List3!$A:$A)-1,1) se odstraní mezery, ale přesto se dostanete na konec velmi dlouhého seznamu. Chci, aby to začalo na začátku seznamu.
Tento komentář byl moderátorem webu minimalizován
Jak mohu u kódu VDA nastavit, aby se první položka v rozevíracím seznamu zobrazovala pouze v určitém rozsahu buněk? Děkuji předem.
Tento komentář byl moderátorem webu minimalizován
Ahoj, Akrupo, k vyřešení vašeho problému vám možná může pomoci následující kód VBA:

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
'Aktualizovat Extendoffice 20211206
Dim xFormula jako řetězec
Dim xRg jako rozsah
Dim xStr jako řetězec
Dim xIndex jako celé číslo
xIndex = 2 'Zde označuje číslo buňky původních dat, například původní data jsou A1:A10, pro zobrazení hodnoty buňky A2 napište 2.
Při chybě GoTo Out:
xFormula = Target.Cells(1).Validation.Formula1
If Left(xFormula, 1) = "=" Pak
Pokud Target.Value <> "" Pak Exit Sub
xStr = Mid(xFormula, 2)
Nastavit xRg = Application.Range(xStr)
Target.Cells(1) = xRg.Cells(xIndex).Value
End If
Ven:
End Sub
Zkuste to prosím, doufám, že vám to pomůže!
Zatím zde nejsou žádné komentáře
Zanechat své připomínky
Odesílání jako host
×
Ohodnoťte tento příspěvek:
0   Postavy
Doporučená umístění