Dažkārt nevēlaties, lai lietotājs aizvērtu Excel darbgrāmatu, neievadot konkrētu datu daļu. Šādās situācijās būtu lietderīgi liegt lietotājam iespēju aizvērt darbgrāmatu, līdz tiek aizpildīta mērķa šūna (kā parādīts šeit). Šeit parādās šis lieliskais makro.
Novērst aizvēršanu, līdz tiek aizpildīta noteikta šūna.
Kā darbojas makro
Šo kodu aktivizē darbgrāmatas notikums BeforeClose. Mēģinot aizvērt darbgrāmatu, šis notikums tiek aktivizēts, palaižot tajā esošo kodu. Šis makro pārbauda, vai mērķa šūna (šūna C7, šajā gadījumā) ir tukša. Ja tas ir tukšs, aizvēršanas process tiek atcelts. Ja C7 nav tukšs, darbgrāmata tiek saglabāta un aizvērta:
Private Sub Workbook_BeforeClose (Atcelt kā Būla)
1. darbība. Pārbaudiet, vai šūna C7 ir tukša
Ja Sheets("Sheet1").Range("C7").Vērtība = " Tad
'2. darbība. Ja šūna ir tukša, atceliet aizvēršanu un informējiet lietotāju
Atcelt = patiess
MsgBox "Šūna C7 nevar būt tukša"
3. darbība. Ja šūna nav tukša, saglabājiet un aizveriet
Citādi
ActiveWorkbook.Close SaveChanges:=Tiesa
Beigas Ja
Beigt apakš
1. darbībā tiek pārbaudīts, vai lauks C7 ir tukšs.
Ja lauks C7 ir tukšs, stājas spēkā 2. darbība, atceļot aizvēršanas procesu, nosūtot True uz Atcelt Būla vērtību. 2. darbība aktivizē arī ziņojumu lodziņu, informējot lietotāju par viņa stulbumu (nu, tas tiešām nav tik skarbi).
Ja 3. darbībā šūna C7 nav tukša, darbgrāmata tiek saglabāta un aizvērta.
Kā lietot makro
Lai ieviestu šo makro, tas ir jākopē un jāielīmē notikuma koda logā Workbook_BeforeClose. Ievietojot makro šeit, tas tiks palaists katru reizi, kad mēģināt aizvērt darbgrāmatu:
Aktivizējiet Visual Basic redaktoru, nospiežot Alt+F11.
Projekta logā atrodiet sava projekta/darbgrāmatas nosaukumu un noklikšķiniet uz pluszīmes blakus tam, lai redzētu visas lapas.
Noklikšķiniet uz šī darbgrāmata.
Nolaižamajā sarakstā Notikums atlasiet notikumu BeforeClose.
Ierakstiet vai ielīmējiet kodu jaunizveidotajā modulī.
Ievadiet savu kodu pasākumā Workbook BeforeClose.