ขอคำชี้แนะเกิ่ยวกฟบ Select Case DirectCast operator '-' is not defined for type char and char
แก้ไขครั้งสุดท้ายโดย outhai1992 เมื่อ 2020-9-15 14:02Public Function Main(ByVal StrChr As Char) As Char
Select Case DirectCast((StrChr1 - "x"c), Char)
Case ChrW(0)
Return "x"c
Case ChrW(1), ChrW(2), ChrW(3), ChrW(4), ChrW(5), ChrW(6), ChrW(7), vbBack, vbTab, vbLf, vbVerticalTab, vbFormFeed, vbCr, ChrW(14), ChrW(15), ChrW(16), ChrW(17), ChrW(18), ChrW(19), ChrW(20), ChrW(21), ChrW(22), ChrW(23), ChrW(24), ChrW(25), ChrW(26), ChrW(27), ChrW(28), ChrW(29), ChrW(30), ChrW(31), " "c, "!"c, """"c, "#"c, "$"c, "%"c, "&"c, "'"c, "("c, "4"c, ">"c, "?"c, "O"c, "R"c, "S"c, "T"c, "X"c, "Y"c, "Z"c, "["c, "\"c, "]"c, "^"c, "_"c, "`"c, "a"c, "b"c, "c"c, "d"c, "e"c, "f"c, "g"c, "h"c, "i"c, "j"c, "k"c, "l"c, "m"c, "n"c, "o"c, "p"c, "q"c, "u"c, "v"c, "w"c, ChrW(135), ChrW(136), ChrW(137), ChrW(138), ChrW(139), ChrW(140), ChrW(141), ChrW(142), ChrW(143), ChrW(144), ChrW(145), ChrW(146), ChrW(147), ChrW(148), ChrW(149), ChrW(150), ChrW(151), ChrW(152), ChrW(153), ChrW(154), ChrW(155), ChrW(156), ChrW(157), ChrW(158), ChrW(159), " "c, "¡"c, "¢"c, "£"c, "¤"c, "¥"c, "¦"c, "§"c, "¨"c, "©"c, "ª"c, "«"c, "¬"c, ""c, "®"c, "¯"c, "°"c, "±"c, "²"c, "³"c, "´"c, "µ"c, "¶"c, "·"c, "¸"c, "¹"c, "º"c, "»"c, "¼"c, "½"c, "¾"c, "¿"c, "À"c, "Á"c, "Â"c, "Ã"c, "Ä"c, "Å"c, "Æ"c, "Ç"c, "È"c, "É"c, "Ê"c, "Ë"c, "Ì"c, "Í"c, "Î"c, "Ï"c, "Ð"c, "Ñ"c, "Ò"c, "Ó"c, "Ô"c, "Õ"c, "Ö"c, "×"c, "Ø"c, "Ù"c
Return StrChr
Case ")"c
Return "ກ"c
Case "*"c
Return "ຂ"c
Case "+"c
Return "ຄ"c
Case ","c
Return "ງ"c
Case "-"c
Return "ຈ"c
Case "."c
Return "ສ"c
Case "/"c
Return "ຊ"c
Case "0"c
Return "ຍ"c
Case "1"c
Return "ດ"c
Case "2"c
Return "ຕ"c
Case "3"c
Return "ຖ"c
Case "5"c
Return "ນ"c
Case "6"c
Return "ບ"c
Case "7"c
Return "ປ"c
Case "8"c
Return "ຜ"c
Case "9"c
Return "ຝ"c
Case ":"c
Return "ພ"c
Case ";"c
Return "ຟ"c
Case "<"c
Return "ມ"c
Case "="c
Return "ຢ"c
Case "@"c
Return "ວ"c
Case "A"c
Return "ຫ"c
Case "B"c
Return "ອ"c
Case "C"c
Return "ຮ"c
Case "D"c
Return "ຽ"c
Case "E"c
Return "ະ"c
Case "F"c
Return "າ"c
Case "G"c
Return "ຳ"c
Case "H"c
Return "ເ"c
Case "I"c
Return "ແ"c
Case "J"c
Return "ໂ"c
Case "K"c
Return "ໃ"c
Case "L"c
Return "ໄ"c
Case "M"c
Return "ໆ"c
Case "N"c
Return "ຯ"c
Case "P"c
Return "່"c
Case "Q"c
Return "້"c
Case "U"c
Return "ຫ"c
Case "V"c
Return "ໜ"c
Case "W"c
Return "ໝ"c
Case "r"c
Return "ທ"c
Case "s"c
Return "ຣ"c
Case "t"c
Return "ລ"c
Case "x"c
Return "ໍ"c
Case "y"c
Return "ັ"c
Case "z"c
Return "ິ"c
Case "{"c
Return "ີ"c
Case "|"c
Return "ຶ"c
Case "}"c
Return "ື"c
Case "~"c
Return "ົ"c
Case ChrW(127)
Return "ຸ"c
Case ChrW(128)
Return "ູ"c
Case ChrW(129)
Return "ຼ"c
Case ChrW(130)
Return "່"c
Case ChrW(131)
Return "້"c
Case ChrW(132)
Return "໊"c
Case ChrW(133)
Return "໋"c
Case ChrW(134)
Return "໌"c
Case "Ú"c
Return "-"c
End Select
Return StrChr
End Function
ไม่สามารถเอา String หรือ Character มาลบกันได้ครับ จะต้องแปลงค่าพวกนี้ให้เป็นตัวเลขก่อนด้วยคำสั่ง ASC("ตัวเลข/ตัวอักษร 1 ค่า") ...
ตัวอย่างการหาค่า ASCII Code เพื่อเปลี่ยนตัวเลข 0 - 9 ให้เป็น ๐ - ๙
โดยที่ 0 มี ASCII Code = 48 และ ๐ มีค่า ASCII Code = 240 ซึ่งจะมีค่าห่างกัน 192 ค่า ... การหาคำตอบจะไม่ใช้การเปรียบเทียบค่า แต่อาศัยรหัสแอสกี้โค้ดแทน
Function ConvertNum(ByVal strChr As Char) As Char
ConvertNum = ""
Select Case strChr
Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
'// เมื่อ 0 มี ASCII Code = 48, ๐ มี ASCII Code = 240 ...
'// ระยะห่างกัน 192 ค่า
Return Chr(192 + Asc(strChr))
End Select
End Function
ตัวอย่าง ...
Dim Num As String = String.Empty
Dim NumThai As String = String.Empty
For i = 0 To 9
Num = Num & " " & i
NumThai = NumThai & " " & ConvertNum(Chr(48 + i))
Next
Debug.Print("Num: " & Num & vbCrLf & "Num Thai: " & NumThai)
ผลลัพธ์ ...
Num:0 1 2 3 4 5 6 7 8 9
Num Thai:๐ ๑ ๒ ๓ ๔ ๕ ๖ ๗ ๘ ๙
หน้า:
[1]