ເນື້ອໃນ

# ວັດຖຸ Err [VBA]

ໃຊ້ວັດຖຸ Err ຂອງ VBA ເພື່ອສ້າງ ຫຼື ຈັດການຂໍ້ຜິດພາດທີ່ເກີດຂຶ້ນໃນລະຫວ່າງການເຮັດວຽກ.

Err ແມ່ນວັດຖຸສາກົນທີ່ມີມາໃຫ້ໃນ VBA ເຊິ່ງຊ່ວຍໃຫ້:

- ສ້າງຂໍ້ຜິດພາດ Basic ທີ່ກຳນົດໄວ້ລ່ວງໜ້າ

- ສົ່ງ (throw) ຂໍ້ຍົກເວັ້ນທີ່ຜູ້ໃຊ້ກຳນົດເອງ

- ກຳນົດຊື່ຂອງຣູທິນ (routine) ທີ່ເປັນຕົ້ນເຫດຂອງຂໍ້ຜິດພາດ

- ອະທິບາຍຂໍ້ຜິດພາດ ແລະ ວິທີການແກ້ໄຂທີ່ເປັນໄປໄດ້

ຄ່າຄົງທີ່, ຟັງຊັນ ຫຼື ອັອບເຈັກນີ້ຈະຖືກເປີດໃຊ້ດ້ວຍຄຳສັ່ງ Option VBASupport 1 ທີ່ວາງໄວ້ກ່ອນລະຫັດໂປຣແກຣມໃນໂມດູນ.

ວັດຖຸ Err ຂອງ VBA ມີຄຸນສົມບັດ ແລະ ເມທອດດັ່ງຕໍ່ໄປນີ້:

## ຄຸນສົມບັດ

             Err.Description As String

ຄຸນສົມບັດ Description ບອກລັກສະນະຂອງຂໍ້ຜິດພາດ. Description ຈະໃຫ້ລາຍລະອຽດກ່ຽວກັບສາເຫດຕ່າງໆທີ່ອາດພາໃຫ້ເກີດຂໍ້ຜິດພາດ. ໂດຍທົ່ວໄປ, ມັນຈະແນະນຳຂັ້ນຕອນການແກ້ໄຂເພື່ອຊ່ວຍແກ້ບັນຫາ ແລະ ປ້ອງກັນບໍ່ໃຫ້ເກີດຂຶ້ນອີກ. ໃນ Basic ຈະກົງກັບຟັງຊັນ Error ສຳລັບຂໍ້ຜິດພາດທີ່ກຳນົດໄວ້ລ່ວງໜ້າຂອງ LibreOffice.

             Err.Number As Long

ລະຫັດຂໍ້ຜິດພາດທີ່ກ່ຽວຂ້ອງ. ຄຸນສົມບັດເລີ່ມຕົ້ນຂອງວັດຖຸ Err ແມ່ນ Number. ໃນ LibreOffice Basic ຈະກົງກັບຟັງຊັນ Err.

             Err.Source As String

Source ລະບຸຊື່ຂອງຣູທິນທີ່ເຮັດໃຫ້ເກີດຂໍ້ຜິດພາດ. Source ແມ່ນຕົວເລືອກສຳລັບຂໍ້ຜິດພາດທີ່ຜູ້ໃຊ້ກຳນົດເອງ.

## ເມທອດ

             Err.Clear()

ລ້າງຄ່າ description, Erl, number ແລະ source ຂອງຂໍ້ຜິດພາດປັດຈຸບັນ. ໃນ LibreOffice Basic ຈະກົງກັບຄຳສັ່ງ Resume.

             Err.Raise(Number As Long, Optional source As String, Optional description As String)

ສ້າງ (Raise) ຂໍ້ຜິດພາດທີ່ຜູ້ໃຊ້ກຳນົດເອງ ຫຼື ຂໍ້ຜິດພາດທີ່ກຳນົດໄວ້ລ່ວງໜ້າ. ໃນ LibreOffice Basic ຈະກົງກັບຄຳສັ່ງ Error.

### ພາຣາມິເຕີ

Number: ລະຫັດຂໍ້ຜິດພາດທີ່ຜູ້ໃຊ້ກຳນົດເອງ ຫຼື ກຳນົດໄວ້ລ່ວງໜ້າ ທີ່ຈະສ້າງຂຶ້ນ.

ລະດັບລະຫັດຂໍ້ຜິດພາດ 0-2000 ແມ່ນຖືກຈອງໄວ້ສຳລັບ LibreOffice Basic. ຂໍ້ຜິດພາດທີ່ຜູ້ໃຊ້ກຳນົດເອງຄວນເລີ່ມຕົ້ນຈາກຄ່າທີ່ສູງກວ່ານີ້ ເພື່ອປ້ອງກັນການຊ້ຳຊ້ອນກັບການພັດທະນາໃນອະນາຄົດຂອງ LibreOffice Basic.

Source: ຊື່ຂອງຣູທິນທີ່ສ້າງຂໍ້ຜິດພາດ. ແນະນຳໃຫ້ໃຊ້ຮູບແບບ "myLibrary.myModule.myProc".

Description: ຄຳອະທິບາຍຂອງບັນຫາທີ່ພາໃຫ້ຢຸດການເຮັດວຽກ, ພ້ອມກັບສາເຫດຕ່າງໆທີ່ອາດເປັນໄປໄດ້. ແນະນຳໃຫ້ລະບຸລາຍການວິທີການແກ້ໄຂຢ່າງລະອຽດເພື່ອຊ່ວຍແກ້ບັນຫາ.

### ຕົວຢ່າງ:

             Option VBASupport 1

             Sub ThrowErrors
                 Dim aDesc As String : aDesc = Space(80)
                 On Local Error GoTo AlertAndExecNext
                 Err.Raise(91, "ThrowErrors", Error(91))
                 Err.Raise 2020, Description:="ນີ້ແມ່ນຂໍ້ຜິດພາດທີ່ຜູ້ໃຊ້ກຳນົດເອງທີ່ຕັ້ງໃຈສ້າງຂຶ້ນ …"
                 Err.Raise(4096, "Standard.Module1.ThrowErrors", aDesc)
                 Exit Sub
             AlertAndExecNext:
                 errTitle = "ຂໍ້ຜິດພາດ "& Err &" ທີ່ແຖວ "& Erl &" ໃນ "& Err.Source
                 MsgBox Err.Description, MB_ICONEXCLAMATION, errTitle
                 Resume Next
             End Sub

## Exception ClassModule

ClassModule ແບບສັ້ນ ທີ່ຄຸມວັດຖຸ Err ຂອງ VBA ສາມາດຊ່ວຍແຈກຢາຍຄຸນສົມບັດ ແລະ ເມທອດຂອງ Err ໃຫ້ກັບໂມດູນ LibreOffice Basic ມາດຕະຖານໄດ້.

             Option ClassModule
             Option VBASupport 1

             Public Property Get Description As String
                 Description = Err.Description
             End Property
             Public Property Get Number As Long
                 Number = Err.Number
             End Property
             Public Property Get Source As String
                 Source = Err.Source
             End Property
             Public Sub Clear
                 Err.Clear
             End Sub
             Public Sub Raise( number As Long, Optional Source As String, Optional Description As String)
                 Err.Raise number, Source, Description
             End Sub

## ຕົວຢ່າງ

             Function Exc As Object
                 Exc = New Exception
             End Function

             Sub aRoutine
             try:
                 On Local Error GoTo catch:
                 Exc.Raise(4096, "myLib.myModule.aRoutine", _
                     "ຄຳອະທິບາຍແບບຫຼາຍແຖວສຳລັບຂໍ້ຍົກເວັ້ນທີ່ຜູ້ໃຊ້ກຳນົດເອງນີ້")
                 ' ໂຄ້ດຂອງທ່ານຢູ່ບ່ອນນີ້ …
             finally:
                 Exit Sub
             catch:
                 errTitle = "ຂໍ້ຜິດພາດ "& Exc.Number &" ທີ່ແຖວ "& Erl &" ໃນ "& Exc.Source
                 MsgBox Exc.Description, MB_ICONSTOP, errTitle
                 Resume finally
             End Sub

ຄຳສັ່ງ Error ຫຼື ໂມດູນຄລາສທີ່ຄ້າຍກັບ Exception ສາມາດໃຊ້ແທນກັນໄດ້, ແຕ່ແບບຫຼັງຈະມີຄຸນສົມບັດເພີ່ມເຕີມ.

ຫົວຂໍ້ທີ່ກ່ຽວຂ້ອງ

ຟັງຊັນການຈັດການກັບຂໍ້ຜິດພາດ

ຄຳສັ່ງ Option ClassModule

ຄຳສັ່ງ Option VBASupport

ບໍລິການ ScriptForge.Exception

ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!