code สลับตำแหน่งตัวเลข
กระทู้เก่าบอร์ด อ.Yeadram

 2,878   0
URL.หัวข้อ / URL
code สลับตำแหน่งตัวเลข

ผมอยากได้ code สลับตำแหน่งตัวเลขดังนี้ครับ
เมื่อกดปุ่ม cmd ให้เช็คว่า ตัวเลขใน text 0 กับ text 1 สลับตำแหน่งกันหรือไม่ถ้าใช่ให้ส่งข้อความ ว่า "ตัวเลขสลับตำแหน่ง"
แต่ถ้าตัวเลขทั้ง 2 ไม่ตรงกันเลย ให้ส่งขอความ ว่า "ตัวเลขไม่ถูกต้อง"
ขอบพระคุณล่วงหน้าด้วยครับ

คำถามจาก http://access.crtrading.net/webboard/view.aspx?id=524


แนวทางคำตอบ :
ลำดับการทำงานของโค้ด
1 ตรวจสอบว่า text1 เป็นตัวเลขล้วนๆ หรือไม่ ถ้าไม่ ไปข้อ 8
2 ตรวจสอบว่า text2 เป็นตัวเลขล้วนๆ หรือไม่ ถ้าไม่ ไปข้อ 8
3 เอาตัวเลขใน text1 มาเรียงลำดับจากน้อยไปหามาก
4 เอาตัวเลขใน text2 มาเรียงลำดับจากน้อยไปหามาก
5 ตรวจสอบว่า ค่าจากข้อ 3 เท่ากับ ข้อ 4 หรือไม่ ถ้าไม่เท่า บอก "ตัวเลขไม่ถูกต้อง" ไปข้อ 8
6 เอาค่าจาก text1 เปรียบเทียบกับ ค่าจาก text2 เท่ากันหรือไม่ ถ้าเป็นจริง ไป ข้อ 8
7 ถ้าค่าจากข้อ 6 เป็นเท็จ แจ้ง "ตัวเลขสลับตำแหน่ง" ไปข้อ 8
8 ออกจากการทำงาน

** เราอาจต้องเขียนฟังก์ชั่นเฉพาะมาเพื่อ ช่วยทำงานในขั้นตอนที่ 3 กับ 4 ครับ

ตัวอย่างโค้ด:
Private Sub Cmd1_Click()
Dim i as integer

for i = 1 to len(text1)
if isnumeric(mid(text1,i,1) =false then goto NotNum
next

for i = 1 to len(text2)
if isnumeric(mid(text2,i,1) =false then goto NotNum
next


if text1 <> text2 then
if sortstr(text1) = sortstr(text2) then
msgbox "ตัวเลขสลับตำแหน่ง"
else
msgbox "ตัวเลขไม่ถูกต้อง"
end if
else
msgbox "ตัวเลขถูกต้องตรงกันทุกประการ"
end if

exit sub

NotNum:
msgbox "อักขระบางตัว ไม่ใช่ตัวเลข"
End sub

'-----------------------------------------------------------------
Function sortStr(ByVal yourNumber, Optional sortAsc = True) As String
Dim i, j As Integer
i = Len(yourNumber)
Do While i > 0
For j = 1 To Len(yourNumber) - 1
If Mid(yourNumber, j + Abs(sortAsc), 1) < Mid(yourNumber, j + Abs((sortAsc + 1) * -1), 1) Then _
yourNumber = Left(yourNumber, j - 1) & Mid(yourNumber, j + 1, 1) & _
Mid(yourNumber, j, 1) & Mid(yourNumber, j + 2)
Next
i = i - 1
Loop
srtStr = yourNumber
End Function
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0638s