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

Bagaimana cara mencegah penyimpanan jika sel tertentu kosong di Excel?

Misalnya, Anda mendesain formulir di lembar kerja dan berbagi dengan kolega Anda. Anda berharap kolega Anda mengisi nama mereka ke dalam sel tertentu untuk menunjukkan siapa yang memasukkan formulir ini, jika tidak mencegah mereka menyimpan formulir, bagaimana Anda bisa melakukannya? Di sini saya akan memperkenalkan makro VBA untuk mencegah penyimpanan buku kerja jika sel tertentu kosong di Excel.

Tab Office Mengaktifkan Pengeditan dan Penjelajahan Tab di Office, dan Jadikan Pekerjaan Anda Lebih Mudah ...
Kutools for Excel Memecahkan Sebagian Besar Masalah Anda, dan Meningkatkan Produktivitas Anda hingga 80%
  • Gunakan Kembali Apa Pun: Tambahkan rumus, bagan, dan hal lain yang paling sering digunakan atau rumit ke favorit Anda, dan gunakan kembali dengan cepat di masa mendatang.
  • Lebih dari 20 fitur teks: Ekstrak Nomor dari String Teks; Ekstrak atau Hapus Bagian dari Teks; Ubah Angka dan Mata Uang ke Kata Bahasa Inggris.
  • Gabungkan Alat: Beberapa Buku Kerja dan Lembar menjadi Satu; Gabungkan Beberapa Sel / Baris / Kolom Tanpa Kehilangan Data; Gabungkan Baris dan Jumlah Duplikat.
  • Alat Pisah: Membagi Data Menjadi Beberapa Lembar Berdasarkan Nilai; Satu Buku Kerja ke Beberapa File Excel, PDF atau CSV; Satu Kolom ke Beberapa Kolom.
  • Tempel Melewati Baris Tersembunyi / Difilter; Hitung Dan Jumlah dengan Warna Latar Belakang; Kirim Email Hasil Personalisasi ke Beberapa Penerima secara Massal.
  • Filter Super: Buat skema filter tingkat lanjut dan terapkan ke setiap lembar; Jenis menurut minggu, hari, frekuensi, dan lainnya; SARING dengan tebal, rumus, komentar ...
  • Lebih dari 300 fitur canggih; Bekerja dengan Office 2007-2021 dan 365; Mendukung semua bahasa; Penerapan yang mudah di perusahaan atau organisasi Anda.

panah gelembung kanan biruCegah penyimpanan jika sel tertentu kosong di Excel

Untuk mencegah menyimpan buku kerja saat ini jika sel tertentu kosong di Excel, Anda dapat menerapkan makro VBA berikut dengan mudah.

Langkah 1: Buka jendela Microsoft Visual Basic for Applications dengan menekan lain + F11 kunci sementara.

Langkah 2: Di Project Explorer, perluas file VBAProject (Nama buku kerja Anda.xlsm) serta Objek Microsoft Excel, lalu klik dua kali file Buku Kerja Ini. Lihat tangkapan layar kiri:

Langkah 3: Di jendela pembuka ThisWorkbook, tempel makro VBA berikut:

Makro VBA: Mencegah penyimpanan jika sel tertentu kosong

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
Catatan:
1. Pada baris ke-26 dari kode VBA di atas, "Lembar1" adalah nama lembar kerja tertentu, dan "A1"adalah sel spesifik, dan Anda dapat mengubahnya sesuai kebutuhan.
2. Setelah Anda memasukkan VBA di Buku Kerja Ini, Anda harus menyimpan buku kerja terlebih dahulu. Dan kemudian Anda dapat mengirim file yang mendukung makro ke orang lain.

Sekarang jika sel tertentu kosong di buku kerja saat ini, saat Anda menyimpannya, kotak dialog peringatan akan keluar dan memberi tahu Anda "Simpan dibatalkanLihat screen shot berikut ini:


panah gelembung kanan biruArtikel terkait


Alat Produktivitas Kantor Terbaik

Kutools for Excel Memecahkan Sebagian Besar Masalah Anda, dan Meningkatkan Produktivitas Anda hingga 80%

  • Reuse: Masukkan dengan cepat rumus, bagan yang kompleks dan apa pun yang pernah Anda gunakan sebelumnya; Enkripsi Sel dengan kata sandi; Buat Milis dan mengirim email ...
  • Bilah Formula Super (dengan mudah mengedit beberapa baris teks dan rumus); Membaca Tata Letak (membaca dan mengedit sel dalam jumlah besar dengan mudah); Tempel ke Rentang yang Difilter...
  • Gabungkan Sel / Baris / Kolom tanpa kehilangan Data; Pisahkan Konten Sel; Gabungkan Baris / Kolom Duplikat... Mencegah Sel Duplikat; Bandingkan Rentang...
  • Pilih Duplikat atau Unik Baris; Pilih Baris Kosong (semua sel kosong); Temukan Super dan Temukan Fuzzy di Banyak Buku Kerja; Pilih Acak ...
  • Salinan Tepat Beberapa Sel tanpa mengubah referensi rumus; Buat Referensi Otomatis ke Beberapa Lembar; Sisipkan Poin, Kotak Centang, dan lainnya ...
  • Ekstrak Teks, Tambahkan Teks, Hapus berdasarkan Posisi, Hapus Space; Membuat dan Mencetak Subtotal Paging; Konversi Konten Antar Sel dan Komentar...
  • Filter Super (simpan dan terapkan skema filter ke sheet lain); Penyortiran Lanjutan menurut bulan / minggu / hari, frekuensi dan lainnya; Filter Khusus dengan huruf tebal, miring ...
  • Gabungkan Workbooks dan WorkSheets; Gabungkan Tabel berdasarkan kolom kunci; Pisahkan Data menjadi Beberapa Lembar; Konversi Batch xls, xlsx dan PDF...
  • Lebih dari 300 fitur canggih. Mendukung Office / Excel 2007-2021 dan 365. Mendukung semua bahasa. Penerapan yang mudah di perusahaan atau organisasi Anda. Fitur lengkap Uji coba gratis 30 hari. Jaminan uang kembali 60 hari.
tab kte 201905

Tab Office Membawa antarmuka Tab ke Office, dan Membuat Pekerjaan Anda Jauh Lebih Mudah

  • Aktifkan pengeditan dan pembacaan tab di Word, Excel, PowerPoint, Publisher, Access, Visio, dan Project.
  • Buka dan buat banyak dokumen di tab baru di jendela yang sama, bukan di jendela baru.
  • Meningkatkan produktivitas Anda sebesar 50%, dan mengurangi ratusan klik mouse untuk Anda setiap hari!
officetab bawah
Urutkan komentar berdasarkan
komentar (26)
Belum ada peringkat. Jadilah yang pertama memberi peringkat!
Komentar ini diminimalkan oleh moderator di situs
hai - ini sangat membantu... Hanya punya satu pertanyaan, bagaimana cara menyimpan file tanpa nilai di bidang itu? Saat saya mencoba menyimpan, kode VBA akan memunculkan pesan "Simpan Dibatalkan" yang merupakan respons yang dimaksudkan, namun, perlu disimpan sekali tanpa nilai untuk membuat formulir yang akan digunakan kembali.

Terima kasih!
Komentar ini diminimalkan oleh moderator di situs
Hai Eduardo,
Bagaimana dengan mengetik spasi di sel yang ditentukan untuk berpura-pura menjadi sel kosong? Harap ingatkan untuk menghapus ruang di masa mendatang!
Komentar ini diminimalkan oleh moderator di situs
Hai Eduardo, apakah Anda bisa mendapatkan jawaban atas pertanyaan Anda? Saya telah menemukan masalah yang sama dan mengetik di spasi hanya memungkinkan formulir disimpan. Adakah yang tahu solusi untuk ini?
Komentar ini diminimalkan oleh moderator di situs
Halo,

Silakan coba kode VBA di bawah ini:
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

Catatan:
1. Silakan ubah cuplikannya Sheet1 serta A1 di baris ke-26 ke nama dan sel sheet yang sebenarnya.
2. Silakan ubah cuplikannya C:\Users\Amanda\Desktop\ di baris ke-30 dengan jalur aktual tempat Anda ingin menyimpan salinan file.
3. Setelah Anda memasukkan VBA di Buku Kerja Ini, Anda harus menyimpan buku kerja terlebih dahulu. Setelah itu, ketika Anda menyimpannya kembali, buku kerja akan disalin, sehingga Anda bisa mengirimkannya ke orang lain.

Amanda
Komentar ini diminimalkan oleh moderator di situs
Hai Amanda, tidak berhasil :(. Ini memberi saya kesalahan, mungkin saya melakukan sesuatu yang salah. Saya hanya ingin menyimpan salinan formulir (dengan bidang kosong) sehingga pengguna dapat membuka dan mengisi. Di mana makro meminta mereka dan mencegah mereka menyimpan file jika kosong. Bisakah Anda melihatnya?
Komentar ini diminimalkan oleh moderator di situs
Halo,

Silakan lihat komentar di atas, saya telah memperbarui VBA. Kode harus bekerja dengan sempurna untuk kasus Anda.

Amanda
Komentar ini diminimalkan oleh moderator di situs
Berfungsi tetapi sekarang file yang disalin tidak berfungsi sebagai formulir. Itu hanya meminta simpan dibatalkan. Saya membutuhkan sebagian besar formulir kosong yang mencegah pengguna menyimpan hingga bidang tertentu diisi. Templat saya saat ini memiliki semua bidang yang terisi, tetapi saya memerlukan file Pengguna kosong. Maaf saya mungkin belum menjelaskan dengan benar.
Komentar ini diminimalkan oleh moderator di situs
Hai saya ingin bertanya apakah itu dari A2 ke U2. apa yang harus saya tulis?
Komentar ini diminimalkan oleh moderator di situs
Hai Wkai,
Coba kode VBA ini:
(Kode VBA ini akan mendeteksi Rentang A2: E5 di Lembar "Tes", dan membatalkan penyimpanan jika ada sel kosong yang ada dalam rentang.)

Sub Workbook_BeforeSave Pribadi (ByVal SaveAsUI Sebagai Boolean, Batalkan Sebagai Boolean)
Redupkan xWSName As String
Redupkan xRgAddress Sebagai String
Redupkan xRg Sebagai Rentang
Redupkan xWs Sebagai Lembar Kerja
Redupkan xFNRg Sebagai Rentang
xWSName = "UJI"
xRgAddress = "A2:E5"
Setel xWs = Application.ActiveWorkbook.Worksheets.Item(xWSName)
Tetapkan xRg = xWs.Range(xRgAddress)
Tetapkan xFNRg = Tidak ada
On Error Resume Next
Tetapkan xFNRg = xRg.SpecialCells(xlCellTypeBlanks, 23)
Jika Tidak TypeName(xFNRg.count) = "Tidak Ada" Lalu
Batal = Benar
MsgBox "Simpan dibatalkan"
End If
End Sub
Komentar ini diminimalkan oleh moderator di situs
Hai, sangat berguna. TAPI ada masalah ketika saya menggunakannya untuk file di sharepoint. Perubahan tidak disimpan tetapi versi baru dibuat yang ditampilkan saat membuka kembali yang cukup membingungkan. Apakah mungkin untuk menonaktifkan versi baru ini?
Komentar ini diminimalkan oleh moderator di situs
Ini benar-benar hebat. Apakah Anda tahu apa yang bisa saya lakukan untuk membuat ini bekerja untuk berbagai lembar dan sejumlah sel? Juga, sel-sel ini tidak selalu sama, karena ada lembar yang dihasilkan dalam buku kerja khusus ini yang mungkin tidak memiliki sel yang sama yang perlu diisi setiap kali. Sel akan selalu berada di kolom yang sama, tepat di atas batas halaman yang juga dihasilkan. Terima kasih!
Komentar ini diminimalkan oleh moderator di situs
Saya memiliki spreadsheet yang sangat besar yang berisi banyak info.
Dapatkah seseorang tolong bantu saya dengan kode untuk disalin ke VBA - Saya ingin jika Sel C2-C1000+ memiliki info di dalamnya maka sel O2-O1000+ dan P2-P1000+ memerlukan input pengguna - namun jika sel di Kolom C adalah kosong maka sel di Kolom O & P bisa dikosongkan juga. (misalnya) jika sel C3 tidak memiliki input data apa pun maka sel O3-P3 bisa kosong.

Terima kasih :)
Komentar ini diminimalkan oleh moderator di situs
Hai Yzelle,
Harap ingat untuk menempatkan kode di bawah ini ke dalam jendela skrip “ThisWorkbook”, dan ganti nama lembar kerja menjadi “Test” pada kode di bawah ini berdasarkan kondisi Anda.

Redupkan xIRg Sebagai Rentang
Redupkan xSRg Sebagai Rentang
Redupkan xBol Sebagai Boolean
Redupkan xInt Sebagai Integer
Redupkan xStr Sebagai String
Jika ActiveSheet.Name = "Test" Kemudian
Tetapkan xRg = Range("C:C")
Tetapkan xRRg = Intersect(xRg.Worksheet.UsedRange, xRg)
xBol = Salah
On Error Resume Next
Untuk xInt = 1 Ke xRRg.Count
Tetapkan xIRg = xRRg.Item(xInt)
Jika xIRg.Value2 <> "" Maka
Tetapkan xSRg = Tidak ada
Jika (Range("O" & xIRg.Row) = "") Atau (Range("P" & xIRg.Row) = "") Maka
xBol = Benar
Keluar Untuk
End If
End If
Next
Jika xBol Maka
Batal = Benar
MsgBox "Simpan dibatalkan"
End If
End If
End Sub
Komentar ini diminimalkan oleh moderator di situs
Sub Workbook_BeforeSave Pribadi (ByVal SaveAsUI Sebagai Boolean, Batalkan Sebagai Boolean)

Dengan Sheets("Sheet1")
If WorksheetFunction.CountA(.Range("A1:A4")) <> WorksheetFunction.CountA(.Range("B1:C4")) / 2 Kemudian
Batal = Benar
MsgBox "Silakan masukkan nilai pada kolom B dan C", vbCritical, "Error!"
End If
Berakhir dengan

End Sub

Ubah saja rentang dari a ke c, dan dari b ke o dan semoga membantu
Komentar ini diminimalkan oleh moderator di situs
Apakah Anda memiliki cara agar ini dapat dikodekan sehingga B atau C perlu diisi tetapi tidak diperlukan untuk mengisi keduanya?
Komentar ini diminimalkan oleh moderator di situs
Sub Workbook_BeforeSave Pribadi (ByVal SaveAsUI Sebagai Boolean, Batalkan Sebagai Boolean)

Dengan Sheets("Sheet1")
If WorksheetFunction.CountA(.Range("A1:A4")) <> WorksheetFunction.CountA(.Range("B1:C4")) / 2 Kemudian
Batal = Benar
MsgBox "Silakan masukkan nilai pada kolom B dan C", vbCritical, "Error!"
End If
Berakhir dengan

End Sub


Ubah saja rentang dari a ke c, dan dari b ke o dan p
semoga membantu
Komentar ini diminimalkan oleh moderator di situs
selamat siang, saya menggunakan kode di atas dan bekerja dengan sempurna. pertanyaan saya adalah seperti apa seharusnya kode itu jika saya ingin menguji pada 2 sel? Saya cukup putus asa. terima kasih saya muka atas bantuan Anda
Komentar ini diminimalkan oleh moderator di situs
Hai Saya memiliki kode VBA yang mengurutkan dan memfilter data dari satu tabel excel dan menyimpan 48 laporan berbeda di desktop saya. tetapi berdasarkan filter tersebut, beberapa laporan yang dihasilkan hanya memiliki 1 baris (tajuk) dan tidak ada data. Bagaimana saya bisa menambahkan beberapa kode VBA ke file saya yang mencegah untuk menyimpan file yang hanya memiliki satu baris (header) dan tidak ada data? Terima kasih
Komentar ini diminimalkan oleh moderator di situs
Hi
Saya memiliki kode VBA yang mengurutkan dan memfilter data dari satu tabel excel dan menyimpan 48 laporan berbeda di desktop saya. tetapi berdasarkan filter tersebut, beberapa laporan yang dihasilkan hanya memiliki 1 baris (tajuk) dan tidak ada data. Bagaimana saya bisa menambahkan beberapa kode VBA ke file saya yang mencegah untuk menyimpan file yang hanya memiliki satu baris (tajuk) dan tidak ada data?
Terima kasih
Komentar ini diminimalkan oleh moderator di situs
Hai, saya mencoba rumus di atas yang berfungsi. Bolehkah saya tahu apakah ada rumus yang dapat memaksa pengguna untuk mengisi sebelum mereka dapat menyimpan? Saat saya mengatur menu tarik ke bawah "Silakan pilih", "Ya" atau "Tidak" untuk mereka pilih. Tetapi mereka selalu lupa untuk memilih bidang itu dan tetap "Silakan pilih". Jika saya menambahkan kode VBA ini hanya menerapkan sel kosong. Sangat menghargai Anda dapat menyarankan. Terima kasih
Komentar ini diminimalkan oleh moderator di situs
Saya mencoba rumus di atas yang berfungsi. Bolehkah saya tahu apakah ada rumus yang dapat memaksa pengguna untuk mengisi sebelum mereka dapat menyimpan? Saat saya mengatur menu tarik ke bawah "Silakan pilih", "Ya" atau "Tidak" untuk mereka pilih. Tetapi mereka selalu lupa untuk memilih bidang itu dan tetap "Silakan pilih". Jika saya menambahkan kode VBA ini hanya menerapkan sel kosong. Sangat menghargai Anda dapat menyarankan. Terima kasih
Komentar ini diminimalkan oleh moderator di situs
Hai Selamat,
Ganti saja nilai kosongnya “Sheets("TEST").Range("A1").Nilai = ""” ke teks yang ditentukan “Sheets("TEST").Range("A1").Value = "Silakan pilih"”Dan seluruh kode akan berubah seperti di bawah ini:
Sub Workbook_BeforeSave Pribadi (ByVal SaveAsUI Sebagai Boolean, Batalkan Sebagai Boolean)
If Application.Sheets("TEST").Range("A1").Value = "Silakan pilih" Kemudian
Batal = Benar
MsgBox "Simpan dibatalkan"
End If
End Sub

Komentar ini diminimalkan oleh moderator di situs
Ini tidak berfungsi, ini menyatakan penyimpanan dibatalkan tetapi masih menyimpan buku kerja
Komentar ini diminimalkan oleh moderator di situs
Catatan: Dalam kode VBA, "TEST" adalah nama lembar kerja tertentu, dan "A1" adalah sel tertentu, dan Anda dapat mengubahnya sesuai kebutuhan.

Misalnya, lembar Anda dinamai "Sheet1", dan sel yang ditentukan adalah B2, Anda perlu mengubah nama lembar dan alamat sel dalam kode VBA sebelum menjalankannya
Komentar ini diminimalkan oleh moderator di situs
halo,
io avrei bisogno di impostare una macro simile a quella di Eduardo. Secara khusus, ho karena tabelle:
'- prima tabella A18:P28
'- seconda tabella A33:P41.
Vorrei imppedire che l'utente salvi il file se ha compilato la cella A18 e le altre attigue (B18:P18) le ha lasciate vuote oppure se ha compilato la cella A33 e ha lasciato vuole le attigue (B33:P33). Dalam questo caso, ayo dovrei impostare la macro? Grazie in anticipo a chi risponderà!
Komentar ini diminimalkan oleh moderator di situs
Halo,

Apakah maksud Anda Anda ingin mencegah menyimpan file jika A18 diisi sementara B18: P18 kosong? Anda juga ingin mencegah menyimpan jika A33 diisi sementara B33: P33 kosong?
Apakah Anda ingin mencegah menyimpan ketika kedua kriteria terpenuhi, atau ketika salah satu kriteria terpenuhi?
Juga, silakan gunakan bahasa Inggris. Terima kasih sebelumnya.

Amanda
Belum ada komentar yang diposting di sini
Tinggalkan komentar anda
Posting sebagai Tamu
×
Beri peringkat pos ini:
0   Karakter
Lokasi yang Disarankan

Ikuti kami

Hak Cipta © 2009 - www.extendoffice.com. | Seluruh hak cipta. Dipersembahkan oleh ExtendOffice. | Peta Situs
Microsoft dan logo Office adalah merek dagang atau merek dagang terdaftar dari Microsoft Corporation di Amerika Serikat dan / atau negara lain.
Dilindungi oleh Sectigo SSL