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

Hoe kan ik voorkomen dat een bepaalde cel leeg is in Excel?

U hebt bijvoorbeeld een formulier in een werkblad ontworpen en met uw collega's gedeeld. U hoopt dat uw collega's hun naam invullen in de specifieke cel om aan te geven wie dit formulier heeft ingevuld, anders voorkomen dat ze het formulier opslaan, hoe zou u dat kunnen doen? Hier zal ik een VBA-macro introduceren om te voorkomen dat een werkmap wordt opgeslagen als de specifieke cel leeg is in Excel.

Tabblad Office Bewerking en browsen met tabbladen in Office inschakelen en uw werk veel gemakkelijker maken ...
Kutools voor Excel lost de meeste van uw problemen op en verhoogt uw productiviteit met 80%
  • Hergebruik alles: Voeg de meest gebruikte of complexe formules, grafieken en al het andere toe aan uw favorieten en gebruik ze in de toekomst snel opnieuw.
  • Meer dan 20 tekstfuncties: Nummer uit tekststring halen; Extract of verwijder een deel van teksten; Converteer cijfers en valuta's naar Engelse woorden.
  • Tools samenvoegen: Meerdere werkmappen en bladen in één; Meerdere cellen / rijen / kolommen samenvoegen zonder gegevens te verliezen; Voeg dubbele rijen en som samen.
  • Hulpmiddelen splitsen: Gegevens splitsen in meerdere bladen op basis van waarde; Eén werkmap naar meerdere Excel-, PDF- of CSV-bestanden; Eén kolom naar meerdere kolommen.
  • Plakken overslaan Verborgen / gefilterde rijen; Tel en som op achtergrondkleur; Stuur gepersonaliseerde e-mails in bulk naar meerdere ontvangers.
  • Superfilter: Maak geavanceerde filterschema's en pas deze toe op elk blad Sorteer per week, dag, frequentie en meer; Filteren door vetgedrukt, formules, commentaar ...
  • Meer dan 300 krachtige functies; Werkt met Office 2007-2019 en 365; Ondersteunt alle talen; Eenvoudig te implementeren in uw onderneming of organisatie.


pijl blauw rechts belVoorkom opslaan als een specifieke cel leeg is in Excel

Om te voorkomen dat de huidige werkmap wordt opgeslagen als de specifieke cel leeg is in Excel, kunt u de volgende VBA-macro eenvoudig toepassen.

Stap 1: Open het Microsoft Visual Basic for Applications-venster door op de anders + F11 sleutels in de tussentijd.

Stap 2: Vouw in de Projectverkenner het VBAProject (uw werkmapnaam.xlsm) en Microsoft Excel-objecten, en dubbelklik vervolgens op het Dit Werkboek. Zie screenshot links:

Stap 3: Plak in het openingsvenster ThisWorkbook de volgende VBA-macro:

VBA-macro: voorkom opslaan als een specifieke cel leeg is

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Update by ExtendOffice 20220907
Dim xFileName As String
Dim xStr As String
Dim xStrWSH As String
Dim xWSh As Worksheet
Dim xWShs As Sheets
Dim xWSh1 As Worksheet
Dim xWB As Workbook

xStrWSH = "xHidWSH_LJY"
On Error Resume Next
Set xWB = Application.ActiveWorkbook
Set xWShs = xWB.Worksheets
Set xWSh = xWShs.Item(xStrWSH)

If xWSh Is Nothing Then

  Set xWSh1 = xWShs.Add
  xWSh1.Name = xStrWSH
  xWSh1.Visible = xlSheetVeryHidden
  Cancel = False

Else

  If Trim(Application.Sheets("Sheet1").Range("A1").Value) = "" Then
  Cancel = True
  MsgBox "Save cancelled"
  End If

End If

End Sub
Opmerking:
1. In de 26e rij van de bovenstaande VBA-code, de "Blad1" is de specifieke werkbladnaam en de "A1"is de specifieke cel en u kunt deze naar behoefte wijzigen.
2. Nadat u de VBA hebt ingevoerd in Dit Werkboek, moet u eerst de werkmap opslaan. En dan kunt u het bestand met macro's naar anderen verzenden.

Als de specifieke cel nu leeg is in de huidige werkmap en u deze opslaat, verschijnt er een waarschuwingsvenster met de melding "Opslaan geannuleerd". Zie de volgende schermafbeelding:


pijl blauw rechts belGerelateerde artikelen


De beste tools voor kantoorproductiviteit

Kutools voor Excel lost de meeste van uw problemen op en verhoogt uw productiviteit met 80%

  • visfuik: Snel invoegen complexe formules, grafieken en alles wat je eerder hebt gebruikt; Versleutel cellen met wachtwoord; Maak een mailinglijst en stuur e-mails ...
  • Super Formula-balk (bewerk eenvoudig meerdere regels tekst en formule); Lay-out lezen (gemakkelijk grote aantallen cellen lezen en bewerken); Plakken in gefilterd bereik...
  • Voeg cellen / rijen / kolommen samen zonder gegevens te verliezen; Gespleten cellen inhoud; Combineer dubbele rijen / kolommen... Voorkom dubbele cellen; Vergelijk Ranges...
  • Selecteer Dupliceren of Uniek Rijen; Selecteer lege rijen (alle cellen zijn leeg); Super zoeken en fuzzy zoeken in veel werkboeken; Willekeurige selectie ...
  • Exacte kopie Meerdere cellen zonder de formuleverwijzing te wijzigen; Maak automatisch verwijzingen naar meerdere bladen; Plaats kogels, Selectievakjes en meer ...
  • Extraheer tekst, Tekst toevoegen, Verwijderen op positie, Ruimte verwijderen; Paging-subtotalen maken en afdrukken; Converteren tussen celinhoud en opmerkingen...
  • Super filter (bewaar en pas filterschema's toe op andere bladen); Geavanceerd sorteren per maand / week / dag, frequentie en meer; Speciaal filter door vet, cursief ...
  • Combineer werkmappen en werkbladen; Tabellen samenvoegen op basis van sleutelkolommen; Gegevens splitsen in meerdere bladen; Batch Converteer xls, xlsx en PDF...
  • Meer dan 300 krachtige functies. Ondersteunt Office / Excel 2007-2019 en 365. Ondersteunt alle talen. Eenvoudig te implementeren in uw onderneming of organisatie. Gratis proefperiode van 30 dagen met volledige functies. 60 dagen geld-terug-garantie.
kte tabblad 201905

Office-tabblad Brengt een interface met tabbladen naar Office en maakt uw werk veel gemakkelijker

  • Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in, Publisher, Access, Visio en Project.
  • Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster in plaats van in nieuwe vensters.
  • Verhoogt uw productiviteit met 50% en vermindert elke dag honderden muisklikken!
officetab onderkant
Comments (26)
Nog geen beoordelingen. Beoordeel als eerste!
Deze opmerking is gemaakt door de moderator op de site
hallo - dit was super handig... Ik had alleen een vraag, hoe sla ik het bestand op zonder een waarde in dat veld? Terwijl ik probeer op te slaan, zal de VBA-code het bericht "Save Cancelled" laten verschijnen, wat het beoogde antwoord is, maar het moet één keer worden opgeslagen zonder een waarde om het formulier opnieuw te gebruiken.

Bedankt!
Deze opmerking is gemaakt door de moderator op de site
Hallo Eduardo,
Hoe zit het met het typen van een spatie in de opgegeven cel om te doen alsof het een lege cel is? Gelieve eraan te herinneren om de spatie in de toekomst te verwijderen!
Deze opmerking is gemaakt door de moderator op de site
Hallo Eduardo, heb je een antwoord kunnen krijgen op je vraag? Ik ben hetzelfde probleem tegengekomen en door in een spatie te typen, kan het formulier alleen worden opgeslagen. Weet iemand hier een oplossing voor?
Deze opmerking is gemaakt door de moderator op de site
Hey daar!

Probeer de onderstaande VBA-code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Update by ExtendOffice 20220907
Dim xFileName As String
Dim xStr As String
Dim xStrWSH As String
Dim xWSh As Worksheet
Dim xWShs As Sheets
Dim xWSh1 As Worksheet
Dim xWB As Workbook

xStrWSH = "xHidWSH_LJY"
On Error Resume Next
Set xWB = Application.ActiveWorkbook
Set xWShs = xWB.Worksheets
Set xWSh = xWShs.Item(xStrWSH)

If xWSh Is Nothing Then

  Set xWSh1 = xWShs.Add
  xWSh1.Name = xStrWSH
  xWSh1.Visible = xlSheetVeryHidden
  Cancel = False

Else

  If Trim(Application.Sheets("Sheet1").Range("A1").Value) = "" Then

    xFileName = ActiveWorkbook.Name
    xStr = Left(xFileName, InStrRev(xFileName, ".") - 1)
    ActiveWorkbook.SaveCopyAs "C:\Users\Amanda\Desktop\" & Replace(xFileName, xStr, xStr & " - copy")
    Cancel = True
    MsgBox "Save cancelled"

  End If

End If

End Sub

Opmerking:
1. Wijzig het fragment a.u.b. Sheet1 en A1 in de 26e rij naar de werkelijke bladnaam en cel.
2. Wijzig het fragment a.u.b. C:\Gebruikers\Amanda\Desktop\ in de 30e rij met het eigenlijke pad waar u de kopie van het bestand wilt opslaan.
3. Nadat u de VBA hebt ingevoerd in Dit Werkboek, je moet eerst de werkmap opslaan. Daarna, wanneer u het opnieuw opslaat, wordt de werkmap gekopieerd, zodat u deze naar anderen kunt verzenden.

Amanda
Deze opmerking is gemaakt door de moderator op de site
Hallo Amanda, het werkte niet :(. Het gaf me een fout, misschien doe ik iets verkeerd. Ik wil alleen een kopie van het formulier opslaan (met lege velden) zodat de gebruiker het kan openen en invullen. Waar de macro vraagt ​​​​hen en voorkomt dat ze het bestand opslaan als het leeg is. Kunt u alstublieft een kijkje nemen?
Deze opmerking is gemaakt door de moderator op de site
Hey daar!

Zie de bovenstaande opmerking, ik heb de VBA bijgewerkt. De code zou perfect moeten werken voor uw geval.

Amanda
Deze opmerking is gemaakt door de moderator op de site
Werkt maar nu werkt het gekopieerde bestand niet als een formulier. Het vraagt ​​alleen opslaan geannuleerd. Ik heb een grotendeels leeg formulier nodig waardoor gebruikers niet kunnen opslaan totdat bepaalde velden zijn ingevuld. Mijn huidige sjabloon heeft alle velden ingevuld, maar ik heb een leeg gebruikersbestand nodig. Sorry dat ik het misschien niet goed heb uitgelegd.
Deze opmerking is gemaakt door de moderator op de site
Hallo, ik wil vragen of het van A2 naar U2 is. wat moet ik schrijven?
Deze opmerking is gemaakt door de moderator op de site
Hallo Wkai,
Probeer deze VBA-code:
(Deze VBA-code detecteert bereik A2:E5 in het blad "Test" en annuleert het opslaan als er lege cellen in het bereik zijn.)

Private Sub Workbook_BeforeSave (ByVal SaveAsUI als Boolean, annuleer als Boolean)
Dim xWSName als string
Dim xRgAddress As String
Dim xRg als bereik
Dim xWs als werkblad
Dim xFNRg als bereik
xWSNaam = "TEST"
xRgAddress = "A2:E5"
Stel xWs = Application.ActiveWorkbook.Worksheets.Item (xWSName) in
Stel xRg = xWs.Bereik in (xRgAdres)
Stel xFNRg = Niets in
On Error Resume Next
Stel xFNRg = xRg.SpecialCells in (xlCellTypeBlanks, 23)
Indien niet TypeName(xFNRg.count) = "Niets" Dan
Annuleren = Waar
MsgBox "Opslaan geannuleerd"
End If
End Sub
Deze opmerking is gemaakt door de moderator op de site
Hoi, erg handig. MAAR er is een probleem wanneer ik het voor dossiers op sharepoint gebruik. De wijzigingen worden niet opgeslagen, maar er wordt een nieuwe versie gemaakt die wordt weergegeven bij het opnieuw openen, wat nogal verwarrend is. Is het mogelijk om deze nieuwe versies uit te schakelen?
Deze opmerking is gemaakt door de moderator op de site
Dit is echt geweldig. Weet jij wat ik kan doen om dit te laten werken voor een reeks bladen en een aantal cellen? Deze cellen kunnen ook niet altijd hetzelfde zijn, omdat er in deze specifieke werkmap bladen worden gegenereerd die mogelijk niet elke keer dezelfde cel hebben die moet worden gevuld. De cellen staan ​​altijd in dezelfde kolom, net boven de paginarand die ook wordt gegenereerd. Bedankt!
Deze opmerking is gemaakt door de moderator op de site
Ik heb een zeer grote spreadsheet met veel informatie.
Kan iemand me alsjeblieft helpen met een code om naar VBA te kopiëren - ik wil dat als cel C2-C1000+ informatie bevat, cel O2-O1000+ en P2-P1000+ gebruikersinvoer vereisen - maar als een cel in kolom C is leeg is, kan de cel in Kolom O & P ook leeg zijn. (bijvoorbeeld) als cel C3 geen gegevensinvoer heeft, kan cel O3-P3 leeg zijn.

Dank je :)
Deze opmerking is gemaakt door de moderator op de site
Hallo Yzelle,
Vergeet niet om onderstaande code in het scriptvenster "ThisWorkbook" te plaatsen en de naam van het werkblad "Test" in de onderstaande code te hernoemen op basis van uw toestand.

Dim xIRg als bereik
Dim xSRg als bereik
Dim xBol As Boolean
Dim xInt als geheel getal
Dim xStr As String
Als ActiveSheet.Name = "Test" Dan
Stel xRg = Bereik ("C:C") in
Stel xRRg = Intersect (xRg.Werkblad.UsedRange, xRg) in
xBol = Onwaar
On Error Resume Next
Voor xInt = 1 Naar xRRg.Count
Stel xIRg = xRRg.Item (xInt) in
Als xIRg.Value2 <> "" Dan
Stel xSRg = Niets in
If (Bereik("O" & xIRg.Rij) = "") Of (Bereik("P" & xIRg.Rij) = "") Dan
xBol = Waar
Afsluiten voor
End If
End If
Volgende
Als xBol Dan
Annuleren = Waar
MsgBox "Opslaan geannuleerd"
End If
End If
End Sub
Deze opmerking is gemaakt door de moderator op de site
Private Sub Workbook_BeforeSave (ByVal SaveAsUI als Boolean, annuleer als Boolean)

Met bladen ("Blad1")
If WorksheetFunction.CountA(.Range("A1:A4")) <> WorksheetFunction.CountA(.Range("B1:C4")) / 2 Dan
Annuleren = Waar
MsgBox "Voer een waarde in de kolommen B en C in", vbCritical, "Fout!"
End If
Eindigt met

End Sub

Verander gewoon het bereik van a naar c, en van b naar o en phope het zal helpen
Deze opmerking is gemaakt door de moderator op de site
Heeft u een manier waarop dit kan worden gecodeerd zodat B of C moet worden ingevuld, maar het is niet vereist om beide te vullen?
Deze opmerking is gemaakt door de moderator op de site
Private Sub Workbook_BeforeSave (ByVal SaveAsUI als Boolean, annuleer als Boolean)

Met bladen ("Blad1")
If WorksheetFunction.CountA(.Range("A1:A4")) <> WorksheetFunction.CountA(.Range("B1:C4")) / 2 Dan
Annuleren = Waar
MsgBox "Voer een waarde in de kolommen B en C in", vbCritical, "Fout!"
End If
Eindigt met

End Sub


Verander gewoon het bereik van a naar c, en van b naar o en p
hoop dat het zal helpen
Deze opmerking is gemaakt door de moderator op de site
goedemiddag, ik heb de bovenstaande code gebruikt en het werkte perfect. mijn vraag is hoe moet de code eruit zien als ik op 2 cellen wil testen? Ik ben behoorlijk wanhopig. dank u ik ga alvast voor uw hulp
Deze opmerking is gemaakt door de moderator op de site
Hallo, ik heb een VBA-code die gegevens uit één Excel-tabel sorteert en filtert en 48 verschillende rapporten op mijn bureaublad opslaat. maar op basis van die filters hebben sommige gegenereerde rapporten slechts 1 rij (headers) en geen gegevens. Hoe kan ik wat VBA-code aan mijn bestand toevoegen die voorkomt dat bestanden worden opgeslagen die slechts één rij (koptekst) en geen gegevens hebben? Bedankt
Deze opmerking is gemaakt door de moderator op de site
Hi
Ik heb een VBA-code die gegevens uit één Excel-tabel sorteert en filtert en 48 verschillende rapporten op mijn bureaublad opslaat. maar op basis van die filters hebben sommige gegenereerde rapporten slechts 1 rij (headers) en geen gegevens. Hoe kan ik wat VBA-code aan mijn bestand toevoegen die voorkomt dat bestanden worden opgeslagen die slechts één rij (koptekst) en geen gegevens hebben?
Bedankt
Deze opmerking is gemaakt door de moderator op de site
Hallo, ik heb bovenstaande formule geprobeerd die werkt. Mag ik weten of er een formule is die de gebruiker kan dwingen in te vullen voordat hij kan opslaan? Terwijl ik het vervolgkeuzemenu "Selecteer", "Ja" of "Nee" instelde, konden ze selecteren. Maar ze vergaten altijd dat veld te selecteren en blijven "Selecteer aub". Als ik deze VBA-code alleen toevoeg, is de cel leeg. Stel het zeer op prijs dat u kunt adviseren. Dank u
Deze opmerking is gemaakt door de moderator op de site
Ik heb bovenstaande formule geprobeerd die werkt. Mag ik weten of er een formule is die de gebruiker kan dwingen in te vullen voordat hij kan opslaan? Terwijl ik het vervolgkeuzemenu "Selecteer", "Ja" of "Nee" instelde, konden ze selecteren. Maar ze vergaten altijd dat veld te selecteren en blijven "Selecteer aub". Als ik deze VBA-code alleen toevoeg, is de cel leeg. Stel het zeer op prijs dat u kunt adviseren. Dank u
Deze opmerking is gemaakt door de moderator op de site
Hoi vrolijk,
Vervang gewoon de lege waarde "Bladen ("TEST"). Bereik ("A1"). Waarde = ""” naar de opgegeven tekst “Spreadsheets ("TEST").Bereik ("A1").Waarde = "Selecteer a.u.b.""En de hele code zal worden gewijzigd zoals hieronder:
Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Application.Sheets("TEST").Range("A1").Value = "Selecteer a.u.b." Dan
Annuleren = Waar
MsgBox "Opslaan geannuleerd"
End If
End Sub

Deze opmerking is gemaakt door de moderator op de site
Dit werkt niet, er staat dat opslaan is geannuleerd, maar uiteindelijk wordt de werkmap opgeslagen
Deze opmerking is gemaakt door de moderator op de site
Notes: In de VBA-code is de "TEST" de specifieke werkbladnaam en de "A1" de specifieke cel en u kunt deze naar behoefte wijzigen.

Uw blad heeft bijvoorbeeld de naam "Blad1" en de opgegeven cel is B2, u moet de bladnaam en het celadres in de VBA-code wijzigen voordat u het uitvoert
Deze opmerking is gemaakt door de moderator op de site
Hallo,
io avrei bisogno di impostare una macro simile a quella di Eduardo. In het bijzonder, ho due tabelle:
'- prima tabel A18:P28
'- tweede tabel A33:P41.
Het bestand is niet beschikbaar voor het compileren van de cella A18 en de andere attigue (B18:P18) voor het lasciate vuote oppure se ha compilato la cella A33 en voor de lasciato vuole le attigue (B33:P33). In questo caso, kom dovrei impostare la macro? Grazie in anticipo a chi risponderà!
Deze opmerking is gemaakt door de moderator op de site
Hey daar!

Bedoelt u dat u wilt voorkomen dat het bestand wordt opgeslagen als A18 is gevuld terwijl B18: P18 leeg is? U wilt ook voorkomen dat u opslaat als A33 is gevuld terwijl B33: P33 blanco is?
Wilt u voorkomen dat u opslaat wanneer aan beide criteria wordt voldaan, of wanneer aan een van de criteria wordt voldaan?
Gebruik ook Engels. Bij voorbaat bedankt.

Amanda
Er zijn nog geen reacties geplaatst
Laat uw commentaar
Posten als gast
×
Beoordeel dit bericht:
0   Personages
Voorgestelde locaties