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

Jak zajistit, aby byla konkrétní buňka povinně zadána před uzavřením sešitu?

Když například sdílíte sešit jiným uživatelům za provedení průzkumu, který vyžaduje registraci skutečného jména, musí každý vyšetřovaný uživatel zadat své jméno v B1. Ale v některých případech mohou někteří uživatelé po prošetření sešit zavřít, aniž by zadali své jméno. V tomto článku představuji VBA, aby byla určitá buňka povinná před uzavřením sešitu.

Zajistěte, aby byla buňka povinným vstupem pomocí VBA


šipka modrá pravá bublina Zajistěte, aby byla buňka povinným vstupem pomocí VBA

1. Povolte sešit, který obsahuje povinnou buňku, a stiskněte Alt + F11 klíče k otevření Microsoft Visual Basic pro aplikace okno.

2. V Projekt v podokně poklepejte Tato pracovní knihaa přejděte na výběr Cvičebnice a PředZavřít ze seznamu v pravé části a poté vložte pod kód do skriptu. Viz screenshot:

VBA: Uveďte buňku jako povinnou

    If Cells(1, 2).Value = "" Then
        MsgBox "Cell B1 requires user input", vbInformation, "Kutools for Excel"
        Cancel = True
    End If

povinný dokument zadejte 1

3. Poté tento kód uložte a zavřete toto vyskakovací okno. Nyní, pokud je buňka B1 prázdná, když zavřete sešit, vyskočí následující dialogové okno, které vám připomene, abyste něco zadali do B1. Viz screenshot:
povinný dokument zadejte 2

Tip: Můžete změnit buňku B1 na jiné požadované buňky.


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 (27)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
jak nastavím sloupec D16-D300 jako povinný, pokud má sloupec B16-300 hodnoty? Použil jsem níže uvedený kód pro řádek 16 a vyzkoušel jsem varianty, ale nefunguje to. jakákoli pomoc je velmi oceňována! 'us business jako povinné pole – je třeba opravit, pokud tam žádné nejsou a objeví se okno Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Krok 1: Zkontrolujte, zda je buňka A1 prázdná If Sheets("Sensitive Leave Tracker").Rozsah ("B16").Value "" And Sheets("Sensitive Leave Tracker").Range("D16").Value = "" Potom 'Krok 2: Prázdné: zrušte uzavření a sdělte uživateli Cancel = True MsgBox "Cant povinné pole" 'Krok 3: Není prázdné; Uložit a zavřít Else ActiveWorkbook.Close SaveChanges:=True End If End Sub
Tento komentář byl moderátorem webu minimalizován
Dobrý den, omlouvám se, že odpovídám tak pozdě. Zde je kód makra, který možná budete potřebovat. Pokud to funguje, dejte mi prosím vědět. Dík!

Pokud Application.WorksheetFunction.CountA(Range("B16:B300")) > 0 Pak

If Application.WorksheetFunction.CountA(Range("D16:D300")) <> Range("D16:D300").Count Then

MsgBox "Buňka D16:D300 vyžaduje vstup uživatele", vbInformation, "Kutools pro Excel"

Zrušit = True

End If

End If
Tento komentář byl moderátorem webu minimalizován
jak nastavím sloupec Q7-Q500 jako povinný, pokud má sloupec B7-B500 hodnoty

Nechci ukládat flle před dokončením povinného souboru.

např.
Pokud do sloupce D7 až D500 vložím jakoukoli hodnotu / text, sloupce Q7 až Q500 by měly být povinné. (vyskakovací okno)
Pokud jsem do sloupce D7 až D500 nevložil žádnou hodnotu/text, měl by být Q7 až Q500 prázdný
Tento komentář byl moderátorem webu minimalizován
Ahoj, zkuste výše VBA a změňte odkaz podle vlastních potřeb.
Tento komentář byl moderátorem webu minimalizován
Dostal jsi někdy pokutu za odpověď na tohle?
Tento komentář byl moderátorem webu minimalizován
Pardon, kterou otázku máte na mysli?
Tento komentář byl moderátorem webu minimalizován
Dobrý den, děkuji za tento vzorec, funguje!

Nyní jsem však vytvořil šablonu, ve které je povinné vyplnit několik buněk. Ale po vytvoření šablony a zadání makra ji nemohu zavřít, protože musím vyplnit buňky :) Takže nemohu odeslat šablonu...(kde povinné buňky musí být stále prázdné)


Můžeš mi pomoci?

Díky!
Tento komentář byl moderátorem webu minimalizován
Všechny aktualizace o tom myslíte?
Tento komentář byl moderátorem webu minimalizován
Taky mě to zajímá, díky!
Tento komentář byl moderátorem webu minimalizován
Mám stejný problém. Existuje způsob, jak nastavit buňku jako povinnou, ale prázdnou pro šablonu?
Tento komentář byl moderátorem webu minimalizován
Ahoj všichni, řešením bylo pozastavit makro na obrazovce alt+f11. Poté jej lze uložit a při příštím otevření se restartuje. Chcete-li to provést, stiskněte alt + f11 a poté v řadě ikon nad oknem (stejná jako v případě malé modré ikony disku se soubory) uvidíte zelené a modré ikony Přehrát, Pozastavit, Zastavit (měly by být pod položkou Debug and Run možnosti). Klikněte na prostřední tlačítko pauzy a můžete uložit.
Tento komentář byl moderátorem webu minimalizován
Ahoj všichni, řešením bylo pozastavit makro na obrazovce alt+f11. Poté jej lze uložit a při příštím otevření se restartuje. Chcete-li to provést, stiskněte alt + f11 a poté v řadě ikon nad oknem (stejná jako v případě malé modré ikony disku se soubory) uvidíte zelené a modré ikony Přehrát, Pozastavit, Zastavit (měly by být pod položkou Debug and Run možnosti). Klikněte na prostřední tlačítko pauzy a můžete uložit.
Tento komentář byl moderátorem webu minimalizován
Ahoj, vyzkoušejte níže uvedený kód, který donutí ostatní uživatele zadat hodnotu v rozsahu A7:M7 před zavřením sešitu, ale dovolte si sešit zabalit bez vyplňování.
Upozornění: změňte slunečnici na své uživatelské jméno. Chcete-li najít a upravit své uživatelské jméno, klikněte na Soubor > Možnosti > Obecné > Uživatelské jméno.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim rg As Range
Dim rgs As Range
Set rgs = Application.Range("A7:M7")
If Application.UserName = "sunflower" Then
Exit Sub
End If
    For Each rg In rgs
        If rg.Value = "" Then
        MsgBox "Range A7:M7 requires user input", vbInformation, "Kutools for Excel"
        Cancel = True
        Exit Sub
       End If
    Next
End Sub

Doufám, že vám tento kód může pomoci.
Tento komentář byl moderátorem webu minimalizován
Existuje nějaký způsob, jak mohu mít požadované buňky f4 a F5 data před zavřením nebo uložením?
Tento komentář byl moderátorem webu minimalizován
Stačí změnit B1 na F4 a F5 v textovém poli, abyste to uživatelům připomněli.
Tento komentář byl moderátorem webu minimalizován
Chci, aby byly řádky C2 až C7 povinné a C13 až C19 povinné?

Nějaká pomoc?

2 sady rozsahů jsou zde, ale ve stejném sloupci.
Tento komentář byl moderátorem webu minimalizován
Chci, aby byly značky zaškrtnutí v listu povinné
Tento komentář byl moderátorem webu minimalizován
Existuje způsob, jak učinit vstup buněk povinným, než bude možné použít příkazové tlačítko Active X? Mám nastavení příkazového tlačítka pro odeslání formuláře e-mailem, ale chci, aby některé buňky byly povinné, než tlačítko odešle e-mail.
Tento komentář byl moderátorem webu minimalizován
Ahoj, Craigu, je nám líto, tento problém zde nelze vyřešit, možná vám pomůže někdo jiný.
Tento komentář byl moderátorem webu minimalizován
Otázka, kód fungoval, ale jak lze vybrat rozsah od A7:M7 až po poslední řádek?

a kdykoli uživatel uloží nebo zavře sešit, povinné pole musí být vyplněno
Tento komentář byl moderátorem webu minimalizován
Ahoj, Lestere, zde je kód, který jsme upravili, může vám pomoci, změňte rozsah A2:F2 na rozsah, jak potřebujete.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'UpdatebyExtend20220916
Dim xRgCount As Integer

Dim xURg As Range

Dim xStr As String

Dim xWSh As Worksheet

Dim xRg, xRg1, xRg2, xRg3 As Range

xStr = "A2:F2"

 

Set xWSh = Application.ActiveSheet

Set xRg = xWSh.Range(xStr)

Set xURg = xWSh.UsedRange

Set xRg1 = xWSh.Cells.Item(xRg.Row + xRg.Rows.Count, 1)

Set xRg2 = xURg.Item(xURg.Count)

Set xRg3 = xWSh.Range(xRg1, xRg2)

Debug.Print xRg3.Address

If (xURg.Row + xURg.Rows.Count - 1) > (xRg.Row + xRg.Rows.Count - 1) Then

   If Application.WorksheetFunction.CountA(xRg3) <> xRg3.Count Then

    MsgBox "There are blank cells under range A2:F2", vbInformation, "Kutools for Excel"

Cancel = True

   End If

End If

End Sub


Tento komentář byl moderátorem webu minimalizován
Je možné vytvořit kód v nově vygenerovaném sešitu? scénář je takový, že vygeneruji nový sešit a tento vygenerovaný sešit musí mít povinné pole k vyplnění, uživatel nemůže uložit, pokud není vyplněno povinné pole. Již jsem vytvořil, vygeneroval nový sešit. můj problém je, že nově vygenerovaný sešit nemá kód.
Tento komentář byl moderátorem webu minimalizován
Je het mogelijk om als regel erin te zetten dat als C1 een bepaalde tekst bevat dan D1 ook ingevuld moet worden. Dit moet gelden voor circa 2.000 regels. Het best wordt elke keer aangevuld dus het moet alleen gelden voor het aantal regels die nu zijn ingevuld.

Wanneer ik volgende functie erin zet werkt het net zoals ik wil omdat ik dan meldingen krijg van cellen die nog aangevuld moeten worden en ik wil een tekst als waarde en geen cijfer.

Als Application.WorksheetFunction.CountA(Range("B16:B300")) > 0 pak

If Application.WorksheetFunction.CountA(Range("D16:D300")) <> Range("D16:D300").Count Then

MsgBox "Cell D16:D300 vereist gebruikersinvoer", vbInformation, "Kutools pro Excel"

Annuleren = Waar

End If

End If

Gr emma
Tento komentář byl moderátorem webu minimalizován
Mohu vám poslat dokument e-mailem, abyste mi mohli nejlépe poradit, jak implementovat kód VBA, aby se soubor nemohl uložit, pokud každý řádek není plně vyplněn? Ten můj je trochu ošemetný. Oceníme pomoc, snažím se tak dlouho.
Tento komentář byl moderátorem webu minimalizován
Ahoj, zde je kód, zobrazí se dialogové okno, které uživateli připomene, kterou buňku je potřeba zadat, a sešit nelze zavřít a uložit, dokud nebudou všechny buňky v rozsahu a1:c3 naplněny obsahem.
Upravte prosím skript v kódu:
1. změňte rozsah, jak potřebujete,
2. změňte uživatelské jméno „Kutools for Excel“ v kódu na své vlastní uživatelské jméno (ujistěte se prosím, že jiný uživatel nemá stejné uživatelské jméno jako vy)

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    
    If Application.UserName <> "Kutools for Excel" Then

        Set Rg = Sheets("Sheet2").Range("a1:c3")

        If WorksheetFunction.CountBlank(Rg) > 0 Then

            MsgBox Rg.Parent.Name & " " & Rg.Address & " requires user input", vbInformation, "Kutools for Excel"
            Cancel = True
        End If
    End If

End Sub
Tento komentář byl moderátorem webu minimalizován
Promiňte pane,

Pro někoho, kdo používá VBA poprvé, můžete prosím poskytnout nějaké pokyny, jak to spustit? Chci, aby každý řádek měl stejnou funkci IE (dokud jeden nedokončí všechny informace na řádku)
Tento komentář byl moderátorem webu minimalizován
Ahoj, PM, postupujte podle kroků v tomto článku, poté nahraďte kód kódem, který jsem vám poskytl, a poté jej uložte. A když sešit sdílíte s ostatními, jejichž uživatelské jméno se od vás liší, budou požádáni, aby vyplnili každou buňku v rozsahu (a1:c3, můžete to změnit v kódu), dokud nevyplní všechny.
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í