Telefonszámunk: 1-472-0679

Hozzászólás: [Resolved] Workbook bezárás 2 féleképpen

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

#10515
verax
Felhasználó

    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