การเปลี่ยนเลขอารบิกเป็นเลขไทย และเลขไทยเป็นเลขอารบิก ต้องใช้ VBA (Visual Basic for Applications) ซึ่งเป็นเครื่องมือภายใน Microsoft Office ที่ให้ผู้ใช้สามารถเขียนโค้ดเพื่อควบคุมและปรับแต่งการทำงานได้
ด้านล่างนี้คือขั้นตอนและตัวอย่างการเขียนมาโครเพื่อทำการเปลี่ยนแปลงเลขอารบิกเป็นเลขไทย และเลขไทยเป็นเลขอารบิกใน Microsoft Word:
ขั้นตอนการสร้างมาโครใน Microsoft Word:
- เปิด Microsoft Word
- ไปที่แท็บ View (มุมมอง) > เลือก Macros (มาโคร) > เลือก View Macros (ดูมาโคร)
- ในหน้าต่าง Macros ให้พิมพ์ชื่อที่คุณต้องการสำหรับมาโคร เช่น
ConvertArabicToThai
แล้วคลิก Create (สร้าง) - หน้าต่าง Microsoft Visual Basic for Applications (VBA Editor) จะเปิดขึ้นมา
- วางโค้ดต่อไปนี้ลงไปในหน้าต่างนั้น
ตัวอย่างโค้ดแปลงเลขอารบิกเป็นเลขไทย
Sub ConvertArabicToThai()
Dim arabicNums As String
Dim thaiNums As Variant
Dim i As Integer
' Arabic numbers
arabicNums = "0123456789"
' Thai numbers as Unicode characters
thaiNums = Array(ChrW(&H0E50), ChrW(&H0E51), ChrW(&H0E52), ChrW(&H0E53), _
ChrW(&H0E54), ChrW(&H0E55), ChrW(&H0E56), ChrW(&H0E57), _
ChrW(&H0E58), ChrW(&H0E59))
' Loop through the Arabic numbers and replace with Thai numbers in the document
For i = 1 To Len(arabicNums)
With ActiveDocument.Content.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = Mid(arabicNums, i, 1) ' Find Arabic number
.Replacement.Text = thaiNums(i - 1) ' Replace with corresponding Thai number using Unicode
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
Next i
End Sub
โค้ดแปลงเลขไทยเป็นเลขอารบิก
Sub ConvertThaiToArabic()
Dim arabicNums As String
Dim thaiNums As Variant
Dim i As Integer
' Arabic numbers
arabicNums = "0123456789"
' Thai numbers as Unicode characters
thaiNums = Array(ChrW(&H0E50), ChrW(&H0E51), ChrW(&H0E52), ChrW(&H0E53), _
ChrW(&H0E54), ChrW(&H0E55), ChrW(&H0E56), ChrW(&H0E57), _
ChrW(&H0E58), ChrW(&H0E59))
' Loop through the Thai numbers and replace with Arabic numbers in the document
For i = 1 To Len(arabicNums)
With ActiveDocument.Content.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = thaiNums(i - 1) ' Find Thai number using Unicode
.Replacement.Text = Mid(arabicNums, i, 1) ' Replace with corresponding Arabic number
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
Next i
End Sub