Note: The other languages of the website are Google-translated. Back to English
Přihlásit se  \/ 
x
or
x
Registrace  \/ 
x

or

Jak zabránit uložení, pokud je konkrétní buňka v aplikaci Excel prázdná?

Například jste navrhli formulář v listu a sdíleli se svými kolegy. Doufáte, že vaši kolegové vyplní svá jména do konkrétní buňky, aby určili, kdo vstoupil do tohoto formuláře, jinak by jim zabránili v uložení formuláře, jak byste mohli? Zde představím makro VBA, které zabrání uložení sešitu, pokud je konkrétní buňka v aplikaci Excel prázdná.

Karta Office Povolte úpravy a procházení na kartách v Office a vaše práce bude mnohem jednodušší ...
Kutools pro Excel řeší většinu vašich problémů a zvyšuje vaši produktivitu o 80%
  • Znovu použít cokoli: Přidejte do svých oblíbených nejpoužívanější nebo nejsložitější vzorce, grafy a cokoli jiného a rychle je v budoucnu znovu použijte.
  • Více než 20 textových funkcí: Extrahovat číslo z textového řetězce; Extrahovat nebo odebrat část textů; Převádějte čísla a měny na anglická slova.
  • Sloučit nástroje: Více sešitů a listů do jednoho; Sloučit více buněk / řádků / sloupců bez ztráty dat; Sloučit duplicitní řádky a součet.
  • Rozdělené nástroje: Rozdělit data do více listů na základě hodnoty; Jeden sešit pro více souborů Excel, PDF nebo CSV; Jeden sloupec na více sloupců.
  • Vložit přeskakování Skryté / filtrované řádky; Count And Sum podle barvy pozadí; Posílejte hromadně osobní e-maily více příjemcům.
  • Super filtr: Vytvořte pokročilá schémata filtrů a použijte je na jakékoli listy; Typ podle týdne, dne, frekvence a dalších; Filtr tučně, vzorce, komentovat ...
  • Více než 300 výkonných funkcí; Funguje s Office 2007-2019 a 365; Podporuje všechny jazyky; Snadné nasazení ve vašem podniku nebo organizaci.


šipka modrá pravá bublinaZabraňte ukládání, pokud je konkrétní buňka v aplikaci Excel prázdná

Chcete-li zabránit uložení aktuálního sešitu, pokud je konkrétní buňka v aplikaci Excel prázdná, můžete snadno použít následující makro VBA.

Krok 1: Stisknutím tlačítka otevřete okno Microsoft Visual Basic for Applications Další + F11 klíče mezitím.

Krok 2: V Průzkumníkovi projektu rozbalte VBAProject (Your workbook name.xlsm) a Objekty aplikace Microsoft Excela potom dvakrát klikněte na ikonu Tato pracovní kniha. Viz snímek obrazovky vlevo:

Krok 3: V úvodním okně ThisWorkbook vložte následující makro VBA:

Makro VBA: Zabraňte ukládání, pokud je konkrétní buňka prázdná

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Application.Sheets("TEST").Range("A1").Value = "" Then
Cancel = True
MsgBox "Save cancelled"
End If
End Sub
Poznámka: V kódu VBA je „TEST“ konkrétní název listu a „A1„je konkrétní buňka a můžete je měnit podle potřeby.

Pokud je konkrétní buňka v aktuálním sešitu prázdná, po uložení se zobrazí varovné dialogové okno a řekne vám „Uložit zrušeno". Viz následující snímek obrazovky:


šipka modrá pravá bublinaSouvisející články


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
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Fatos Gaxha · 19 days ago
    @kellytte Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    With Sheets("Sheet1")
    If WorksheetFunction.CountA(.Range("A1:A4")) <> WorksheetFunction.CountA(.Range("B1:C4")) / 2 Then
    Cancel = True
    MsgBox "Please enter a values in columns B and C", vbCritical, "Error!"
    End If
    End With

    End Sub


    Just change the range from a to c, and from b to o and p
    hope it will help
  • To post as a guest, your comment is unpublished.
    Fatos Gaxha · 19 days ago
    @kellytte Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    With Sheets("Sheet1")
    If WorksheetFunction.CountA(.Range("A1:A4")) <> WorksheetFunction.CountA(.Range("B1:C4")) / 2 Then
    Cancel = True
    MsgBox "Please enter a values in columns B and C", vbCritical, "Error!"
    End If
    End With

    End Sub


    Just change the range from a to c, and from b to o and p
    hope it will help
  • To post as a guest, your comment is unpublished.
    kellytte · 2 months ago
    @Aditya
    Note: In the VBA code, the "TEST" is the specific worksheet name, and the "A1" is the specific cell, and you can change them as you need.

    For example, your sheet is named as "Sheet1", and the specified cell is B2, you need to change the sheet name and cell address in the VBA code before running it
  • To post as a guest, your comment is unpublished.
    Aditya · 2 months ago
    This is not working, it states save cancelled but still ends up saving the workbook
  • To post as a guest, your comment is unpublished.
    kellytte · 7 months ago
    @Happy Hi Happy,
    Just replace the empty value “Sheets("TEST").Range("A1").Value = ""” to the specified text “Sheets("TEST").Range("A1").Value = "Please select"
    And the whole code will be changed as below:

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Application.Sheets("TEST").Range("A1").Value = "Please select" Then Cancel = True MsgBox "Save cancelled" End If End Sub


  • To post as a guest, your comment is unpublished.
    Happy · 7 months ago
    I tried above formula which works. May i know is there any formula can force user to fill in before they can save? As i set the pull down menu "Please select", "Yes" or "No" for them to select. But they always forgot to select that field and remain "Please select". If i add this VBA code only apply cell is blank. Much appreciate you can advise. Thank you
  • To post as a guest, your comment is unpublished.
    Happy · 7 months ago
    Hi, I tried above formula which works. May i know is there any formula can force user to fill in before they can save? As i set the pull down menu "Please select", "Yes" or "No" for them to select. But they always forgot to select that field and remain "Please select". If i add this VBA code only apply cell is blank. Much appreciate you can advise. Thank you
  • To post as a guest, your comment is unpublished.
    Am1n · 7 months ago
    Hi
    I have a VBA code that sorts and filters data from one excel table and save 48 different reports on my desktop. but based on those filters, some generated reports have only 1 row (headers) and no data. How can I add some VBA code to my file that prevents to save files that has just one row (header) and no data?
    Thank you
  • To post as a guest, your comment is unpublished.
    Amin · 7 months ago
    Hi
    I have a VBA code that sorts and filters data from one excel table and save 48 different reports on my desktop. but based on those filters, some generated reports have only 1 row (headers) and no data. How can I add some VBA code to my file that prevents to save files that has just one row (header) and no data?
    Thank you
  • To post as a guest, your comment is unpublished.
    Benjamin · 1 years ago
    good afternoon, I used the code above and it worked perfectly. my question is what should the code look like if I want to test on 2 cells? I am quite desperate. thanking you I advance for your assistance
  • To post as a guest, your comment is unpublished.
    kellytte · 1 years ago
    @Yzelle Hi Yzelle,
    Please remember to place below code into “ThisWorkbook” script window, and rename the worksheet name “Test” in the below code based on your condition.

    Dim xIRg As Range
    Dim xSRg As Range
    Dim xBol As Boolean
    Dim xInt As Integer
    Dim xStr As String
    If ActiveSheet.Name = "Test" Then
    Set xRg = Range("C:C")
    Set xRRg = Intersect(xRg.Worksheet.UsedRange, xRg)
    xBol = False
    On Error Resume Next
    For xInt = 1 To xRRg.Count
    Set xIRg = xRRg.Item(xInt)
    If xIRg.Value2 <> "" Then
    Set xSRg = Nothing
    If (Range("O" & xIRg.Row) = "") Or (Range("P" & xIRg.Row) = "") Then
    xBol = True
    Exit For
    End If
    End If
    Next
    If xBol Then
    Cancel = True
    MsgBox "Save cancelled"
    End If
    End If
    End Sub
  • To post as a guest, your comment is unpublished.
    Yzelle · 1 years ago
    I have a very big spreadsheet that contains a lot of info.
    Can someone please help me with a code to copy into VBA - I want it to be that if Cell C2-C1000+ have any info in them then cell O2-O1000+ and P2-P1000+ requires user input - however if a cell in Column C is empty then the cell in Column O & P can be empty as well. (for example) if cell C3 doesn't have any data input then cell O3-P3 can be empty.

    Thank you :)
  • To post as a guest, your comment is unpublished.
    kellytte · 1 years ago
    @Wkai Hi Wkai,
    Try this VBA code:
    (This VBA code will detect Range A2:E5 in the Sheet “Test”, and cancel saving if there are blank cells existing in the range.)

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim xWSName As String
    Dim xRgAddress As String
    Dim xRg As Range
    Dim xWs As Worksheet
    Dim xFNRg As Range
    xWSName = "TEST"
    xRgAddress = "A2:E5"
    Set xWs = Application.ActiveWorkbook.Worksheets.Item(xWSName)
    Set xRg = xWs.Range(xRgAddress)
    Set xFNRg = Nothing
    On Error Resume Next
    Set xFNRg = xRg.SpecialCells(xlCellTypeBlanks, 23)
    If Not TypeName(xFNRg.count) = "Nothing" Then
    Cancel = True
    MsgBox "Save cancelled"
    End If
    End Sub
  • To post as a guest, your comment is unpublished.
    andrewgonzales048@gmail.com · 1 years ago
    This is really great. Do you know what I can do to make this work for a range of sheets and a number of cells? Also, these cells cannot always be the same, as there are sheets generated in this specific workbook which may not have the same cell needing to be filled each time. The cells will always be in the same column, just above the page border which is also generated. Thanks!
  • To post as a guest, your comment is unpublished.
    mhoferica@gmail.com · 1 years ago
    Hi, very useful. BUT there is a problem when I use it for files on the sharepoint. The changes are not saved but a new version is created that is displayed when reopening which is quite confusing. Is it possible to disable these new versions ?
  • To post as a guest, your comment is unpublished.
    Wkai · 2 years ago
    Hi i want to ask if it is from A2 to U2. what should i write?
  • To post as a guest, your comment is unpublished.
    kelly.extendoffice@gmail.com · 3 years ago
    @edusuro Hi Eduardo,
    What about typing a space in the specified cell to pretend to a blank cell? Please remind to remove the space in future!
  • To post as a guest, your comment is unpublished.
    edusuro · 3 years ago
    hi - this was super helpful... Just had one question, how do I save the file without a value in that field? As I try to save, the VBA code will pop the "Save Cancelled" message which is the intended response, however, need to save once without a value to create the form to be reused.

    Thanks!