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

Hur gör man en viss cell obligatorisk innan man stänger arbetsboken?

När du delar en arbetsbok till andra användare för att göra en undersökning som till exempel behöver den riktiga namnregistreringen, måste till exempel varje användare som undersöks ange sitt namn i B1. Men ibland kan vissa användare stänga arbetsboken efter utredning utan att ange deras namn. I den här artikeln introducerar jag en VBA för att göra en viss cell obligatorisk innan arbetsboken stängs.

Gör en cell obligatorisk inmatning med VBA


pil blå höger bubbla Gör en cell obligatorisk inmatning med VBA

1. Aktivera arbetsboken som innehåller den obligatoriska cellen och tryck på Alt + F11 nycklar för att öppna Microsoft Visual Basic för applikationer fönster.

2. I Projekt dubbelklicka Denna arbetsbokoch välj Arbetsbok och FöreStäng från den högra sektionslistan och klistra sedan in koden nedan i skriptet. Se skärmdump:

VBA: Gör en cell obligatorisk

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

doc obligatorisk ange 1

3. Spara den här koden och stäng det här poppfönstret. Om cellen B1 nu är tom när du stänger arbetsboken, kommer dialogrutan nedan att påminna dig om att ange något i B1. Se skärmdump:
doc obligatorisk ange 2

Tips: Du kan ändra cell B1 till andra celler du vill ha.


De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (30)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
hur gör jag kolumn D16-D300 obligatorisk om kolumn B16-300 har värden? Jag använde koden nedan för rad 16 och provade varianter men det fungerar inte. all hjälp är mycket uppskattad! 'us business som ett obligatoriskt fält- måste åtgärda om det inte finns några där och ett fönster dyker upp Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Steg 1: Kontrollera om cell A1 är tom om Sheets ("Sensitive Leave Tracker"). ("B16").Value "" And Sheets("Sensitive Leave Tracker").Range("D16").Value = "" Sedan 'Steg 2: Tom: avbryt stängningen och berätta för användaren Avbryt = True MsgBox "Kan inte stäng fält krävs" 'Steg 3: Inte tomt; Spara och stäng Else ActiveWorkbook.Close SaveChanges:=True End If End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, förlåt att jag svarar så sent. Här är makrokoden du kan behöva. Om det fungerar, vänligen meddela mig. Tack!

Om Application.WorksheetFunction.CountA(Range("B16:B300")) > 0 Då

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

MsgBox "Cell D16:D300 kräver användarinmatning", vbInformation, "Kutools för Excel"

Avbryt = Sant

End If

End If
Denna kommentar minimerades av moderatoren på webbplatsen
hur gör jag kolumn Q7-Q500 obligatorisk om kolumn B7-B500 har värden

Jag vill inte spara flle innan jag har slutfört obligatorisk arkivering.

t.ex.
Om jag sätter något värde/text i kolumn D7 till D500 så borde kolumn Q7 till Q500 vara obligatoriskt. (fönster pop up)
Om jag inte angav något värde/text i kolumn D7 till D500 så borde Q7 till Q500 vara tomma
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, försök ovan VBA och ändra referensen till ditt eget behov.
Denna kommentar minimerades av moderatoren på webbplatsen
Har du någonsin bötfällt ett svar på detta?
Denna kommentar minimerades av moderatoren på webbplatsen
Förlåt, vilken fråga menar du?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, tack för denna formel, den fungerar!

Men nu har jag skapat en mall där flera celler är obligatoriska att fylla i. Men efter att ha skapat mallen och angett makrot kan jag inte stänga den, eftersom jag måste fylla i cellerna :) Så jag kan inte skicka ut en mall...(där de obligatoriska cellerna fortfarande måste vara tomma)


Kan du hjälpa mig?

Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Någon uppdatering angående detta?
Denna kommentar minimerades av moderatoren på webbplatsen
Jag är också intresserad av detta, tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Jag har samma problem. Finns det något sätt att göra en cell obligatorisk men tom för en mall?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej alla, Jag hittade lösningen var att pausa makrot på alt+f11-skärmen. Den kan sedan sparas och startas om nästa gång den öppnas. För att göra detta trycker du på alt + f11 och sedan i raden med ikoner ovanför fönstret (samma som där den lilla blå fildiskikonen är) kommer du att se ikonerna Spela, Pausa, Stopp i grönt och blått (ska vara under Felsökning och Kör alternativ). Klicka på mittenpausknappen så kan du spara.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej alla, Jag hittade lösningen var att pausa makrot på alt+f11-skärmen. Den kan sedan sparas och startas om nästa gång den öppnas. För att göra detta trycker du på alt + f11 och sedan i raden med ikoner ovanför fönstret (samma som där den lilla blå fildiskikonen är) kommer du att se ikonerna Spela, Pausa, Stopp i grönt och blått (ska vara under Felsökning och Kör alternativ). Klicka på mittenpausknappen så kan du spara.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, prova nedanstående kod, vilket kommer att tvinga andra användare att ange värde i intervallet A7:M7 innan du stänger arbetsboken, men tillåt dig själv att skriva om arbetsboken utan att fylla.
Observera: ändra solrosen till ditt eget användarnamn. För att hitta och redigera ditt användarnamn, klicka på Arkiv > Alternativ > Allmänt > Användarnamn.
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

Hoppas den här koden kan hjälpa dig.
Denna kommentar minimerades av moderatoren på webbplatsen
Finns det något sätt att jag kan Obligatorisk cell f4 och F5 ha data innan jag stänger eller sparar?
Denna kommentar minimerades av moderatoren på webbplatsen
Ändra bara B1 till F4 och F5 i textrutan för att påminna användarna.
Denna kommentar minimerades av moderatoren på webbplatsen
Jag vill göra raderna C2 till C7 obligatoriska och C13 till C19 obligatoriska?

Någon hjälp?

2 uppsättningar intervall finns här men under samma kolumn.
Denna kommentar minimerades av moderatoren på webbplatsen
Jag vill göra bockmarkeringarna obligatoriska i arket
Denna kommentar minimerades av moderatoren på webbplatsen
Finns det något sätt att göra en cellinmatning obligatorisk innan en Active X-kommandoknapp kan användas? Jag har en kommandoknappsinställning för att skicka ett formulär via e-post men vill göra vissa celler obligatoriska innan knappen skickar e-postmeddelandet.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, Craig, ledsen att det här problemet inte kan lösas här, kanske andra kan hjälpa dig.
Denna kommentar minimerades av moderatoren på webbplatsen
Fråga, koden fungerade, men hur kan man välja ett intervall från A7:M7 upp till sista raden?

och närhelst användaren ska spara eller stänga arbetsboken måste det obligatoriska fältet fyllas i
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, Lester, här är en kod som vi modifierade kan hjälpa dig, ändra intervallet A2:F2 till intervallet som du behöver.
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


Denna kommentar minimerades av moderatoren på webbplatsen
Är det möjligt att skapa en kod i en ny genererad arbetsbok? scenariot är att jag kommer att generera en ny arbetsbok, och den skapade arbetsboken måste ha ett obligatoriskt fält som ska fyllas i, användaren kan inte spara om det inte fylls i det obligatoriska fältet. Jag har redan skapat, genererat en ny arbetsbok. mitt problem är att den nya genererade arbetsboken inte har en kod.
Denna kommentar minimerades av moderatoren på webbplatsen
Är det möjligt att regelbundet sätta in det som C1 en viss text innehåller och D1 måste också fyllas på. Detta måste gelden för cirka 2.000 XNUMX regler. Beståndet blir varje gång påfyllt så det måste bara användas för ett antal regler som nu är infyllda.

När jag använder nästa funktion fungerar det inte som jag vill eftersom jag får en godkänd anmälan och jag vill ha en text som värde och ingen siffra.

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

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

MsgBox "Cell D16:D300 kräver användarinföring", vbInformation, "Kutools för Excel"

Annuleren = Waar

End If

End If

Gr emma
Denna kommentar minimerades av moderatoren på webbplatsen
Kan jag maila ditt dokument så att du bäst kan ge mig råd om hur man implementerar VBA-kod så att filen inte kan sparas om varje rad inte är helt ifylld? Min är lite knepig. Kommer att uppskatta hjälpen, har försökt så länge.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, här är en kod, den kommer att öppna en dialogruta för att påminna användaren om vilken cell som måste anges, och arbetsboken kan inte stängas och sparas förrän alla celler i intervallet a1:c3 är fyllda med innehåll.
Vänligen ändra skriptet i koden:
1. ändra intervallet efter behov,
2. ändra användarnamnet "Kutools for Excel" i koden till ditt eget användarnamn (se till att andra användare inte har samma användarnamn som dig)

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
Denna kommentar minimerades av moderatoren på webbplatsen
Förlåt herrn,

För någon som använder VBA för första gången, kan du ge lite vägledning om hur man initierar detta? Jag vill att varje rad ska ha samma funktion IE (tills en fyller i all information på raden)
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, PM, följ bara stegen i den här artikeln, ersätt sedan koden med koden jag gav dig och spara den sedan. Och när du delar arbetsboken med andra vars användarnamn är annorlunda med dig, kommer de att bli ombedda att fylla varje cell i intervallet (a1:c3, du kan ändra det i koden) tills de fyller alla.
Denna kommentar minimerades av moderatoren på webbplatsen
Tack så mycket, ursäkta att jag inte svarade tillbaka.
Denna kommentar minimerades av moderatoren på webbplatsen
Hur skulle jag göra detta om jag vill tillämpa hela arbetsboken med undantag för några kolumner. Jag har kolumner A:AA och har för närvarande 4,527 XNUMX rader men fler kommer att läggas till och jag måste se till att de nya raderna har samma krav. Jag måste alla fält vara obligatoriska med undantag av nedanstående.

• Artemis (kolumn A)
• Plats för värdåtkomst (kolumn H)
• Skapande verktyg (Synthesia) (kolumn R)
• Söktermer (kolumn U)
• Anteckningar (kolumn V)
• eReview SME (kolumn Z)
• Rösttalang (kolumn AA)

Kan du hjälpa till med hur jag kan ställa in detta och inkludera eventuella framtida rader?
Denna kommentar minimerades av moderatoren på webbplatsen
Hur skulle jag göra detta om jag vill tillämpa hela arbetsboken med undantag för några kolumner. Jag har kolumner A:AA och har för närvarande 4,527 XNUMX rader men fler kommer att läggas till och jag måste se till att de nya raderna har samma krav. Jag måste alla fält vara obligatoriska med undantag av nedanstående.

• Artemis (kolumn A)
• Plats för värdåtkomst (kolumn H)
• Skapande verktyg (Synthesia) (kolumn R)
• Söktermer (kolumn U)
• Anteckningar (kolumn V)
• eReview SME (kolumn Z)
• Rösttalang (kolumn AA)

Kan du hjälpa till med hur jag kan ställa in detta och inkludera eventuella framtida rader?
Det finns inga kommentarer här ännu
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL