Kezdőlap › Fórumok › Excel programozás › [Resolved] Workbook bezárás 2 féleképpen › Hozzászólás: [Resolved] Workbook bezárás 2 féleképpen
Szia Gojo-Mann!
Elemezzük, hogy mit is kódoltál:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.ReadOnly = True Then
ha ez a munkafüzet csupán olvasási joggal van megnyitva…
ThisWorkbook.Saved = False
… akkor ez a munkafüzet NEM mentett státusszal bír.
ElseIf ThisWorkbook.ReadOnly = False Then
Egyébként ha ez a munkafüzet NEM csupán olvasási joggal van megnyitva…
ThisWorkbook.Saved = True
… akkor ez a munkafüzet mentett státusszal bír.
End If
End Sub
A fenti kódban …
– összekeveredett a .Save (mentsd el!) utasítás és a .Saved (el van mentve) tulajdonság,
– rosszul használtad a TRUE és FALSE logikai értékeket,
– az ElseIf helyett elegendő egy Else is.
A fentieket helyesbítése után ezt a kódot kapjuk:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.ReadOnly Then
ThisWorkbook.Saved = True
Else
ThisWorkbook.Save
End If
End Sub
Ezt is elemzem.
Ha ennek a munkafüzetnek a „csak olvasásra” tulajdonsága IGAZ, akkor tekintsünk rá úgy, mintha már mentett állapotú lenne. Egyébként – a lehetséges másik esetben – (tehát ha nem igaz az, hogy a „csak olvasásra” tulajdonság IGAZ lenne, azaz írási joggal van megnyitva) végezze el a munkafüzet mentését!
Egy kis magyarázatot még hozzáfűzök az elágazás (If … Then … Else … End If) vezérlő feltétel vizsgálatához.
A ThisWorkbook .ReadOnly tulajdonsága logikai értéket ad vissza. Csak IGAZ (TRUE) vagy HAMIS (FALSE) értéke lehet. Ennél fogva a ThisWorkbook.ReadOnly kifejezés kiértékelésének eredményét (TRUE / FALSE) felesleges összehasonlítani egy logikai értékkel (TRUE =? TRUE: TRUE vagy FALSE =? TRUE: FALSE)
üdvözlettel
verax