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

在關閉工作簿之前如何使特定單元格強制輸入?

例如,當您與其他用戶共享工作簿以進行需要實名註冊的調查時,每個接受調查的用戶都需要在B1中輸入其姓名。 但是在某些情況下,某些用戶可能在調查後關閉工作簿而不輸入其名稱。 在本文中,我介紹了VBA,以在關閉工作簿之前將特定的單元格強制化。

使用VBA將單元格強制輸入


箭頭藍色右氣泡 使用VBA將單元格強制輸入

1.啟用包含必需單元格的工作簿,然後按 Alt + F11鍵 打開鑰匙 Microsoft Visual Basic for Applications 窗口。

2。 在裡面 專案 窗格,雙擊 的ThisWorkbook,然後選擇 工作簿收盤前 從右側部分列表中,然後將以下代碼粘貼到腳本中。 看截圖:

VBA:強制設置單元格

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

doc mandantory輸入1

3.然後保存此代碼並關閉此彈出窗口。 現在,如果在關閉工作簿時B1單元格為空白,則會彈出以下對話框,提醒您在B1中輸入內容。 看截圖:
doc mandantory輸入2

尖端:您可以將單元格B1更改為所需的其他單元格。


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (27)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
如果列 B16-300 有值,我如何使列 D16-D300 成為強制性列? 我將下面的代碼用於第 16 行並嘗試了變化,但它不起作用。 任何幫助是極大的讚賞! '我們的業務作為必填字段-如果沒有,則需要修復並彈出窗口 Private Sub Workbook_BeforeClose(Cancel As Boolean) '步驟 1:檢查單元格 A1 是否為空白 If Sheets("Sensitive Leave Tracker").Range ("B16").Value "" And Sheets("Sensitive Leave Tracker").Range("D16").Value = "" Then 'Step 2: Blank: 取消Close並告訴用戶Cancel = True MsgBox "Cant需要關閉字段" '第 3 步:非空白; 保存並關閉 Else ActiveWorkbook.Close SaveChanges:=True End If End Sub
網站主持人對此評論進行了最小化
您好,很抱歉這麼晚才回复。 這是您可能需要的宏代碼。 如果有效,請告訴我。 謝謝!

如果 Application.WorksheetFunction.CountA(Range("B16:B300")) > 0 那麼

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

MsgBox "單元格 D16:D300 需要用戶輸入", vbInformation, "Kutools for Excel"

取消=真

如果結束

如果結束
網站主持人對此評論進行了最小化
如果列 B7-B500 有值,我如何使列 Q7-Q500 成為強制性列

我不想在完成強制歸檔之前保存文件。

例如。
如果我在 D7 到 D500 列中輸入任何值/文本,那麼 Q7 到 Q500 列應該是強制性的。 (窗口彈出)
如果我沒有在 D7 到 D500 列中輸入任何值/文本,那麼 Q7 到 Q500 應該為空
網站主持人對此評論進行了最小化
嗨,試試上面的 VBA 並將引用更改為您自己的需要。
網站主持人對此評論進行了最小化
你有沒有對這個答案罰款?
網站主持人對此評論進行了最小化
抱歉,您指的是哪個問題?
網站主持人對此評論進行了最小化
您好,感謝您提供此公式,它有效!

但是,現在我創建了一個模板,其中必須填寫幾個單元格。 但是在創建模板並輸入宏後,我無法關閉它,因為我必須填寫單元格:) 所以,我無法發送模板......(強制單元格必須仍然是空的)


你能幫助我嗎?

謝謝!
網站主持人對此評論進行了最小化
任何更新?
網站主持人對此評論進行了最小化
我也對這個感興趣,謝謝!
網站主持人對此評論進行了最小化
我有同樣的問題。 有沒有辦法讓一個單元格強制但模板為空白?
網站主持人對此評論進行了最小化
大家好,我發現解決方案是在 alt+f11 屏幕中暫停宏。 然後可以保存並在下次打開時重新啟動。 為此,請按 alt + f11,然後在窗口上方的圖標行中(與藍色小文件磁盤圖標所在的位置相同),您將看到綠色和藍色的播放、暫停、停止圖標(應該在調試和運行下選項)。 單擊中間的暫停按鈕,然後您可以保存。
網站主持人對此評論進行了最小化
大家好,我發現解決方案是在 alt+f11 屏幕中暫停宏。 然後可以保存並在下次打開時重新啟動。 為此,請按 alt + f11,然後在窗口上方的圖標行中(與藍色小文件磁盤圖標所在的位置相同),您將看到綠色和藍色的播放、暫停、停止圖標(應該在調試和運行下選項)。 單擊中間的暫停按鈕,然後您可以保存。
網站主持人對此評論進行了最小化
嗨,試試下面的代碼,這將強制其他用戶在關閉工作簿之前在 A7:M7 範圍內輸入值,但允許自己在不填充的情況下關閉工作簿。
注意:把向日葵改成自己的用戶名。 要查找和編輯您的用戶名,請單擊文件 > 選項 > 常規 > 用戶名。
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

希望這段代碼可以幫助你。
網站主持人對此評論進行了最小化
有什麼方法可以讓我在關閉或保存之前要求單元格 f4 和 F5 有數據?
網站主持人對此評論進行了最小化
只需將文本框中的 B1 更改為 F4 和 F5 即可提醒用戶。
網站主持人對此評論進行了最小化
我想讓 C2 到 C7 行和 C13 到 C19 行是強制性的嗎?

任何幫助?

這裡有 2 組範圍,但在同一列下。
網站主持人對此評論進行了最小化
我想在工作表中強制打勾
網站主持人對此評論進行了最小化
有沒有辦法在使用 Active X 命令按鈕之前強制輸入單元格? 我有一個命令按鈕設置來通過電子郵件提交表單,但希望在按鈕提交電子郵件之前強制某些單元格。
網站主持人對此評論進行了最小化
嗨,克雷格,很抱歉這個問題在這裡無法解決,也許其他人可以幫助你。
網站主持人對此評論進行了最小化
問題,代碼有效,但如何選擇從 A7:M7 到最後一行的範圍?

並且每當用戶保存或關閉工作簿時,必須填寫必填字段
網站主持人對此評論進行了最小化
嗨,Lester,這是我們修改的代碼,可能會對您有所幫助,將範圍 A2:F2 更改為您需要的範圍。
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


網站主持人對此評論進行了最小化
是否可以在新生成的工作簿中創建代碼? 場景是,我將生成一個新的工作簿,並且生成的工作簿必須有一個必須填寫的字段,除非沒有填寫必填字段,否則用戶無法保存。 我已經創建,生成了一個新的工作簿。 我的問題是,新生成的工作簿沒有代碼。
網站主持人對此評論進行了最小化
Is 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 大約 2.000 regels。 Het bestand wordt elke keer aangevuld dus het moet alleen gelden voor het anantal regels die nu zijn ingevuld。

Wanneer ik volgende functie erin zet werkt het niet 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 然後

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

MsgBox "單元格 D16:D300 vereist gebruikersinvoer", vbInformation, "Kutools for Excel"

Annuleren = Waar

如果結束

如果結束

格艾瑪
網站主持人對此評論進行了最小化
我可以通過電子郵件向您發送文檔,以便您可以最好地建議我如何實現 VBA 代碼,以便在每一行未完全填充時文件無法保存嗎? 我的有點棘手。 將感謝您的幫助,已經嘗試了這麼久。
網站主持人對此評論進行了最小化
你好,這是一個代碼,它會彈出一個對話框提醒用戶需要輸入哪個單元格,並且直到a1:c3範圍內的所有單元格都被內容填充後才能關閉並保存工作簿。
請修改代碼中的腳本:
1.根據需要更改範圍,
2.將代碼中的用戶名“Kutools for Excel”更改為您自己的用戶名(請確保其他用戶與您沒有相同的用戶名)

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
網站主持人對此評論進行了最小化
對不起先生,

對於第一次使用 VBA 的人,您能否提供一些有關如何啟動它的指導? 我希望每一行都具有相同的功能 IE(直到一個完成行中的所有信息)
網站主持人對此評論進行了最小化
你好,PM,按照這篇文章的步驟,然後把代碼替換成我提供給你的代碼,然後保存就可以了。 並且當你將工作簿分享給其他用戶名與你不同的人時,他們將被要求填寫範圍內的每個單元格(a1:c3,你可以在代碼中更改)直到他們全部填寫。
這裡還沒有評論
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護