Skip to main content

Conas sábháil a chosc má tá cill ar leith bán in Excel?

Mar shampla, dhear tú foirm i mbileog oibre agus roinn tú le do chomhghleacaithe. Tá súil agat go líonfaidh do chomhghleacaithe a n-ainmneacha sa chill shonrach le cur in iúl cé a chuir isteach san fhoirm seo, nó iad a chosc ar an bhfoirm a shábháil, conas a d’fhéadfá a dhéanamh? Tabharfaidh mé isteach macra VBA anseo chun cosc ​​a chur ar leabhar oibre a shábháil má tá an chill shonrach bán in Excel.


mboilgeog cheart gorm saigheadCosc a chur ar shábháil má tá cill ar leith bán in Excel

Chun cosc ​​a chur ar an leabhar oibre reatha a shábháil má tá an chill shonrach bán in Excel, is féidir leat an macra VBA seo a leanas a chur i bhfeidhm go héasca.

Céim 1: Oscail fuinneog Microsoft Visual Basic for Applications le brúigh an Eile + F11 eochracha idir an dá linn.

Céim 2: Sa Project Explorer, leathnaigh an VBAProject (Ainm do leabhair oibre.xlsm) agus Réada Microsoft Excel, agus ansin cliceáil faoi dhó ar an An Leabhar Oibre seo. Féach an scáileán ar chlé:

Céim 3: I bhfuinneog oscailte ThisWorkbook, greamaigh an macra VBA seo a leanas:

Macra VBA: Cosc a chur ar shábháil má tá cill ar leith bán

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
Nóta:
1. Sa 26ú sraith den chód VBA thuas, tá an "Bileog1" an ainm bileog oibre ar leith, agus an "A1"is é an cill ar leith, agus is féidir leat iad a athrú de réir mar is gá duit.
2. Tar éis duit an VBA a chur isteach An Leabhar Oibre seo, ba cheart duit an leabhar oibre a shábháil ar dtús. Agus ansin is féidir leat an comhad macra-chumas a sheoladh chuig daoine eile.

Anois má tá an chill shonrach bán sa leabhar oibre reatha, nuair a shábhálann tú é, tagann bosca dialóige rabhaidh amach agus insíonn sé duit "Sábháil ar cealFéach an griangraf seo a leanas:


mboilgeog cheart gorm saigheadAirteagail gaolmhara

Uirlisí Táirgiúlachta Oifige is Fearr

🤖 Kutools AI Aide: anailís sonraí a réabhlóidiú bunaithe ar: Forghníomhú Chliste   |  Gin Cód  |  Cruthaigh Foirmlí Saincheaptha  |  Anailís a dhéanamh ar Sonraí agus Cairteacha a Ghin  |  Feidhmeanna Kutools a agairt...
Gnéithe Coitianta: Faigh, Aibhsigh nó Aithnigh Dúblaigh   |  Scrios Sraitheanna Bána   |  Comhcheangail Colúin nó Cealla gan Sonraí a Chailleadh   |   Babhta gan Foirmle ...
Cuardaigh Super: Ilchritéir VLookup    VLookup Illuachanna  |   VLookup Trasna Ilbhileoga   |   Amharc doiléir ....
Liosta anuas Casta: Go tapa Cruthaigh Liosta Anuas   |  Liosta anuas Cleithiúnach   |  Liosta Buail Isteach Ilroghnacha ....
Bainisteoir Colún: Cuir Líon Sonrach Colún leis  |  Colúin Bog  |  Scoránaigh Stádas Infheictheachta na gColún Ceilte  |  Déan comparáid idir Raonta & Colúin ...
Gnéithe Réadmhaoin: Fócas Eangaí   |  Amharc Dearaidh   |   Barra Mór na Foirmle    Leabhar Oibre & Bainisteoir Bileog   |  Leabharlann Acmhainní (Uaththéacs)   |  Piocálaí Dáta   |  Comhcheangail Bileoga Oibre   |  Criptigh/Díchriptigh Cealla    Seol Ríomhphost trí Liosta   |  Scagaire Super   |   Scagaire Speisialta (scagaire trom/iodálach/stailc tríd...) ...
Barr 15 Uirlisí12 Téacs uirlisí (Cuir Téacs, Bain Carachtair,...)   |   50 + Cairt cineálacha (Cairt Gantt,...)   |   40+ Praiticiúil Foirmlí (Ríomh aois bunaithe ar lá breithe,...)   |   19 Insertion uirlisí (Cuir isteach Cód QR, Ionsáigh Pictiúr ón gCosán,...)   |   12 Tiontú uirlisí (Uimhreacha le Focail, Comhshó Airgeadra,...)   |   7 Cumaisc & Scoilt uirlisí (Sraitheanna Comhcheangail Casta, Cealla Scoilt,...)   |   ... agus eile

Supercharge Do Scileanna Excel le Kutools le haghaidh Excel, agus Éifeachtúlacht Taithí Cosúil Ná Roimhe. Kutools le haghaidh Excel Tairiscintí Níos mó ná 300 Ardghnéithe chun Táirgiúlacht a Treisiú agus Sábháil Am.  Cliceáil anseo chun an ghné is mó a theastaíonn uait a fháil ...

Tuairisc


Tugann Tab Oifige comhéadan Tabbed chuig Office, agus Déan Do Obair i bhfad Níos Éasca

  • Cumasaigh eagarthóireacht agus léamh tabbed i Word, Excel, PowerPoint, Foilsitheoir, Rochtain, Visio agus Tionscadal.
  • Oscail agus cruthaigh cáipéisí iolracha i gcluaisíní nua den fhuinneog chéanna, seachas i bhfuinneoga nua.
  • Méadaíonn do tháirgiúlacht 50%, agus laghdaíonn sé na céadta cad a tharlaíonn nuair luch duit gach lá!
Comments (26)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Ciao,
io avrei bisogno di impostare una macro simile a quella di Eduardo. In particolare, ho due tabelle:
'- prima tabella A18:P28
'- seconda tabella A33:P41.
Vorrei impedire 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). In questo caso, come dovrei impostare la macro? Grazie in anticipo a chi risponderà!
This comment was minimized by the moderator on the site
Hi there,

Do you mean that you want to prevent from saving the file if A18 is filled while B18: P18 are blank? You also want to prevent from saving if A33 is filled while B33: P33 are blank?
Do you want to prevent from saving when both criteria are met, or when either of the criteria is met?
Also, please use English. Thanks in advance.

Amanda
This comment was minimized by the moderator on the site
This is not working, it states save cancelled but still ends up saving the workbook
This comment was minimized by the moderator on the site
Note: In the VBA code, the "TEST" is the specific worksheet name, and the "A1" is the specific cell, and you can change them as you need.

For example, your sheet is named as "Sheet1", and the specified cell is B2, you need to change the sheet name and cell address in the VBA code before running it
This comment was minimized by the moderator on the site
I tried above formula which works. May i know is there any formula can force user to fill in before they can save? As i set the pull down menu "Please select", "Yes" or "No" for them to select. But they always forgot to select that field and remain "Please select". If i add this VBA code only apply cell is blank. Much appreciate you can advise. Thank you
This comment was minimized by the moderator on the site
Hi Happy,
Just replace the empty value “Sheets("TEST").Range("A1").Value = ""” to the specified text “Sheets("TEST").Range("A1").Value = "Please select"”And the whole code will be changed as below:
<div data-tag="code">Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Application.Sheets("TEST").Range("A1").Value = "Please select" Then
Cancel = True
MsgBox "Save cancelled"
End If
End Sub

This comment was minimized by the moderator on the site
Hi, I tried above formula which works. May i know is there any formula can force user to fill in before they can save? As i set the pull down menu "Please select", "Yes" or "No" for them to select. But they always forgot to select that field and remain "Please select". If i add this VBA code only apply cell is blank. Much appreciate you can advise. Thank you
This comment was minimized by the moderator on the site
Hi
I have a VBA code that sorts and filters data from one excel table and save 48 different reports on my desktop. but based on those filters, some generated reports have only 1 row (headers) and no data. How can I add some VBA code to my file that prevents to save files that has just one row (header) and no data?
Thank you
This comment was minimized by the moderator on the site
HiI have a VBA code that sorts and filters data from one excel table and save 48 different reports on my desktop. but based on those filters, some generated reports have only 1 row (headers) and no data. How can I add some VBA code to my file that prevents to save files that has just one row (header) and no data?Thank you
This comment was minimized by the moderator on the site
good afternoon, I used the code above and it worked perfectly. my question is what should the code look like if I want to test on 2 cells? I am quite desperate. thanking you I advance for your assistance
This comment was minimized by the moderator on the site
I have a very big spreadsheet that contains a lot of info.
Can someone please help me with a code to copy into VBA - I want it to be that if Cell C2-C1000+ have any info in them then cell O2-O1000+ and P2-P1000+ requires user input - however if a cell in Column C is empty then the cell in Column O & P can be empty as well. (for example) if cell C3 doesn't have any data input then cell O3-P3 can be empty.

Thank you :)
This comment was minimized by the moderator on the site
Hi Yzelle,
Please remember to place below code into “ThisWorkbook” script window, and rename the worksheet name “Test” in the below code based on your condition.

Dim xIRg As Range
Dim xSRg As Range
Dim xBol As Boolean
Dim xInt As Integer
Dim xStr As String
If ActiveSheet.Name = "Test" Then
Set xRg = Range("C:C")
Set xRRg = Intersect(xRg.Worksheet.UsedRange, xRg)
xBol = False
On Error Resume Next
For xInt = 1 To xRRg.Count
Set xIRg = xRRg.Item(xInt)
If xIRg.Value2 <> "" Then
Set xSRg = Nothing
If (Range("O" & xIRg.Row) = "") Or (Range("P" & xIRg.Row) = "") Then
xBol = True
Exit For
End If
End If
Next
If xBol Then
Cancel = True
MsgBox "Save cancelled"
End If
End If
End Sub
This comment was minimized by the moderator on the site
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

With Sheets("Sheet1")
If WorksheetFunction.CountA(.Range("A1:A4")) <> WorksheetFunction.CountA(.Range("B1:C4")) / 2 Then
Cancel = True
MsgBox "Please enter a values in columns B and C", vbCritical, "Error!"
End If
End With

End Sub


Just change the range from a to c, and from b to o and p
hope it will help
This comment was minimized by the moderator on the site
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

With Sheets("Sheet1")
If WorksheetFunction.CountA(.Range("A1:A4")) <> WorksheetFunction.CountA(.Range("B1:C4")) / 2 Then
Cancel = True
MsgBox "Please enter a values in columns B and C", vbCritical, "Error!"
End If
End With

End Sub

Just change the range from a to c, and from b to o and phope it will help
This comment was minimized by the moderator on the site
Do you have a way that this can be coded so that either B or C need to be populated but its not required to populate both?
This comment was minimized by the moderator on the site
This is really great. Do you know what I can do to make this work for a range of sheets and a number of cells? Also, these cells cannot always be the same, as there are sheets generated in this specific workbook which may not have the same cell needing to be filled each time. The cells will always be in the same column, just above the page border which is also generated. Thanks!
This comment was minimized by the moderator on the site
Hi, very useful. BUT there is a problem when I use it for files on the sharepoint. The changes are not saved but a new version is created that is displayed when reopening which is quite confusing. Is it possible to disable these new versions ?
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations