Förhindra att formulär stängs via
"X"-knappen

I vissa sammanhang är det önskvärt att förhindra att användarna stänger ett formulär mha den s k "X"-knappen.

För att fånga upp hur användaren stänger formuläret kan vi använda oss av händelsen "QueryClose" för ett formulär. Denna initieras innan formuläret stängs.

Händelsen ger, genom variabeln "CloseMode", svar på hur formuläret avslutas. "CloseMode" kan anta en av följande fyra konstanter:

  • vbFormControlMenu - Värde 0 - Användaren klickade på "X"-knappen.
  • vbFormCode - Värde 1 - "Unload"-kommandot användes för att ta bort formuläret från arbetsminnet.
  • vbAppWindows - Värde 2 - Windows avslutas.
  • vbAppTaskManager - Värde 3 - XL avslutas genom Windows Task Manager (Aktivitetshanteraren).

Följande kod används för att förhindra att formulär stängs genom "X"-knappen:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

'Här kontrolleras om användaren klickade på "X"-knappen.
If CloseMode = vbFormControlMenu Then
MsgBox "Vänligen använd Avbryt-knappen eller OK-knappen", vbInformation

'Om så är fallet sätts Cancel till värdet -1 (True) och
'förhindrar därmed att formuläret stängs genom "X"-knappen.
Cancel = True
End If

End Sub