Kezdőlap › Fórumok › Excel programozás › [Resolved] Workbook bezárás 2 féleképpen
- This topic has 3 hozzászólás, 2 résztvevő, and was last updated 9 months, 3 weeks telt el by verax.
-
SzerzőBejegyzés
-
2024-03-01-12:51 #10514
Sziasztok,
Szeretném kérni a segítségetek az alábbi témában.
Van egy excel file, ami userformot jelenít meg és azt szeretném, hogy ha megnyitom és bezárom autómatukusan mentse az excelt,
Viszont ha csak olvasásra nyitom meg, mert valaki benne van akkor bezáráskor ne akarjon menteni és ne dobja ki az üzenetet, hogy mented? ha igen új néven stb, hanem simán ne mentsen semmit, ha csak olvasásra nyitom.Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.ReadOnly = True Then
ThisWorkbook.Saved = False
ElseIf ThisWorkbook.ReadOnly = False Then
ThisWorkbook.Saved = True
End If
End Sub
Ez nem működik valamiért. Ha nem olvasásra nyitom, akkor szuper mert kilpéskor kérdés nélkül menti az adatokat és pont.
De, ha olvasásra nyitom, akkor záráskor mégis rákérdez, hogy szeretném e menteni.Segítségeteket előre is köszönöm!
2024-03-02-01:48 #10515Szia 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
verax2024-03-04-09:21 #10522Kedves Verax!
Nagyon szépen köszönöm a segítséged, ismét 🙂
Mint talán már egyértelművé válik számodra is, nem igazán tudok kódokat írni, inkább csak fórumokon kutakodva próbálkozok a progim megírásával, s amivel végképp nem tudok mit kezdeni, azt ide kiírom, ezért is külön köszönöm a kódokhoz tartozó magyarázatot is, így sokkal több tanulságot kaphatok, mintha csak egy működő kódot írtál volna le.2024-03-04-16:58 #10524Nagyon szívesen!
Igen. Én is úgy látom, hogy az „ÚT” elején jársz. Ezért is részleteztem a javaslatomat, hangsúlyoztam az eltéréseket. -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.