กระทู้เก่าบอร์ด อ.Yeadram
3,169 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
เมื่อกดปุ่ม 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
Time: 0.1131s