Hộp thông báo MsgBox không hiện lên (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

khuongvietphong

Be all you can be !
Tham gia
6/7/14
Bài viết
2,069
Được thích
1,444
Nghề nghiệp
Ăn không ngồi rồi ^.^
Thân chào các thành viên GPE. Em có 1 đoạn sub tính căn bậc 2 như thế này :

Sub tinh_can_bac_hai()
Dim i As Integer
i = InputBox("Hay nhap so do vao")
If IsNumeric(i) = True And i >= 0 Then
MsgBox "Can Bac Hai Cua no bang : " & Sqr(i)
Else
MsgBox "Ban phai nhap 1 so khong am"
End If
End sub

Trong đó em có dùng hộp thoại MsgBox để hiện thông báo khi số nhập vào không phải là 1 số >=0. Tuy nhiên nếu em nhập 1 số <0

thì hộp thoại MsgBox này mới xuất hiện còn khi em nhập vào ký tự không phải là số ví dụ như chữ a chẳng hạn thì hộp thoại MsgBox

này không xuất hiện mà thay vào đó là hộp thông báo lỗi thế này:

Capture.PNG

Xin mọi người cho em biết lý do vì đâu ạ. Em xin cảm ơn !
 
Lần chỉnh sửa cuối:
Uiiiiiiii Zaaaa ! Em biết lỗi sai ở đâu rồi ạ. Phải khai báo Dim i as Variant mới chính xác. Hi hi, chưa suy nghĩ kĩ đã vội lên diễn đàn hỏi rồi. Xin lỗi vì đã làm phiền mọi người hì hì......&&&%$R&&&%$R
 
Lần chỉnh sửa cuối:
Upvote 0
Thân chào các thành viên GPE. Em có 1 đoạn sub tính căn bậc 2 như thế này :

Xin mọi người cho em biết lý do vì đâu ạ. Em xin cảm ơn !
Phong nhìn xem Phong khai biến I là kiểu gì. Mà đòi gõ chữ a nhỉ. Giờ chỉ để Dim I không thôi rồi cảm nhận nhé.
 
Upvote 0
PHP:
Option Explicit
Sub tinh_can_bac_hai()
On Error GoTo LoiCT
Dim i As Integer
i = InputBox("Hay nhap so do vao")
MsgBox i & Str(10)
If IsNumeric(i) = True And i >= 0 Then
    MsgBox "Can Bac Hai Cua no bang : " & Sqr(i)
ElseIf CLng(i) < 0 Then
    MsgBox "Ban phai nhap 1 so khong am"
End If
Err_: Exit Sub
LoiCT:
    If Err = 13 Then
        MsgBox "Di Cho Khác Choi Di Ban!"
    Else
        Resume Err_
    End If
End Sub
 
Upvote 0
PHP:
Option Explicit
Sub tinh_can_bac_hai()
On Error GoTo LoiCT
Dim i As Integer
i = InputBox("Hay nhap so do vao")
MsgBox i & Str(10)
If IsNumeric(i) = True And i >= 0 Then
    MsgBox "Can Bac Hai Cua no bang : " & Sqr(i)
ElseIf CLng(i) < 0 Then
    MsgBox "Ban phai nhap 1 so khong am"
End If
Err_: Exit Sub
LoiCT:
    If Err = 13 Then
        MsgBox "Di Cho Khác Choi Di Ban!"
    Else
        Resume Err_
    End If
End Sub

Em không hiểu đoạn MsgBox i & Str(10) (ở dòng thứ 6) có tác dụng gì. Xin tác giả giải thích cho em được không ạ. Em cảm ơn !
 
Upvote 0
Em không hiểu đoạn MsgBox i & Str(10) (ở dòng thứ 6) có tác dụng gì. Xin tác giả giải thích cho em được không ạ. Em cảm ơn !

Thì bạn cứ cho Code chạy & nhập số nào đó như '10' xem sao?!
 
Upvote 0
Thì bạn cứ cho Code chạy & nhập số nào đó như '10' xem sao?!
dạ nó ra được cái này

HW4RqVzoDWPZGVXkS3CUi6oEVmxY8fAGipcLCW7iUP0=w162-h155-no
 
Upvote 0
Thì bạn cứ cho Code chạy & nhập số nào đó như '10' xem sao?!

Khi em nhập 1 số >=0 thì nó sẽ ra 1 hộp gồm số vừa nhập vào sau đó đến dấu cách và sau đó đến số 10. Ví dụ nếu trong hộp thoại InputBox

em nhập vào số 10 thì sau khi ấn ok đc như thế này:
2.PNG
Em không hiểu như vậy để làm gì ??
 
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Mọi người cho em hỏi, với đoạn sub của em bên trên, bây giờ em muốn khi nhập vào không phải là 1 số >=0 thì hộp thoại msgbox hiện lên
gồm 2 tùy chọn OK và CANCEL để ta tùy chọn ạ. Em đã thử viết sub thế này :

Sub tinh_can_bac_hai()
Dim i As Variant
Dim Chon As VbMsgBoxResult

badentry:
i = InputBox("Hay nhap so do vao")
If IsNumeric(i) = True And i >= 0 Then
MsgBox "Can Bac Hai Cua no bang : " & Sqr(i)
Else
Chon = MsgBox("Ban phai nhap so khong am", vbOKCancel)

If Chon = vbOK Then
Resume badentry
Else
Exit Sub
End If

End If

End Sub

Cho em hỏi khi hộp thoại MsgBox hiện lên thông báo "Ban phải nhap vao so khong am" , bam vao Ok làm sao để nó quay lại hộp InPutBox cho ta nhập lại số được ạ. Em bấm OK nó hiện lỗi như thế này:
3.PNG

Xin mọi người giúp đỡ em với ạ !
 
Lần chỉnh sửa cuối:
Upvote 0
Mọi người cho em hỏi, với đoạn sub của em bên trên, bây giờ em muốn khi nhập vào không phải là 1 số >=0 thì hộp thoại msgbox hiện lên
gồm 2 tùy chọn OK và CANCEL để ta tùy chọn ạ. Em đã thử viết sub thế này :

Sub tinh_can_bac_hai()
Dim i As Variant
Dim Chon As VbMsgBoxResult

badentry:
i = InputBox("Hay nhap so do vao")
If IsNumeric(i) = True And i >= 0 Then
MsgBox "Can Bac Hai Cua no bang : " & Sqr(i)
Else
Chon = MsgBox("Ban phai nhap so khong am", vbOKCancel)

If Chon = vbOK Then
Resume bad
Else
Exit Sub
End If

End If

End Sub

Cho em hỏi khi hộp thoại MsgBox hiện lên thông báo "Ban phải nhap vao so khong am" , bam vao Ok làm sao để nó quay lại hộp InPutBox cho ta nhập lại số được ạ. Em bấm OK nó hiện lỗi như thế này:
View attachment 146158

Xin mọi người giúp đỡ em với ạ !
OK thì làm gì. Cancel thì làm gì bạn

sao không cho nó hiện Box inpux để nhập tiếp luôn
Mã:
Option Explicit
Sub tinh_can_bac_hai()
On Error GoTo LoiCT
Dim i As Integer
i = InputBox("Hay nhap so do vao")
MsgBox i & Str(10)
If IsNumeric(i) = True And i >= 0 Then
    MsgBox "Can Bac Hai Cua no bang : " & Sqr(i)
ElseIf CLng(i) < 0 Then
    MsgBox "Ban phai nhap 1 so khong am"
    Call tinh_can_bac_hai
End If
Err_: Exit Sub
LoiCT:
    If Err = 13 Then
        MsgBox "Di Cho Khác Choi Di Ban!"
    Else
        Resume Err_
    End If
End Sub
 
Upvote 0
To langtuchungtinh

Đoạn sub của bạn vẫn chưa đúng theo ý mình muốn. Ý mình là sau khi nhập vào 1 ký tự không phải số hoặc là 1 số ầm thì hộp thoại

MsgBox hiện lên báo "Ban phai nhap vao so khong am" đòng thời có 2 tùy chọn để ta lựa chọn là OK hay Cancel. Nếu chọn OK thì hộp

thoại InputBox hiện lại lên lần nữa để ta nhập giá trị khác vào, còn nếu chọn Cancel thì sẽ thoát khỏi Sub.

Mong nhận được sự trợ giúp từ tất cả mọi người. Em xin cảm ơn !
 
Upvote 0
Mọi người cho em hỏi, với đoạn sub của em bên trên, bây giờ em muốn khi nhập vào không phải là 1 số >=0 thì hộp thoại msgbox hiện lên
gồm 2 tùy chọn OK và CANCEL để ta tùy chọn ạ. Em đã thử viết sub thế này :

Sub tinh_can_bac_hai()
Dim i As Variant
Dim Chon As VbMsgBoxResult

badentry:
i = InputBox("Hay nhap so do vao")
If IsNumeric(i) = True And i >= 0 Then
MsgBox "Can Bac Hai Cua no bang : " & Sqr(i)
Else
Chon = MsgBox("Ban phai nhap so khong am", vbOKCancel)

If Chon = vbOK Then
Resume badentry
Else
Exit Sub
End If

End If

End Sub

Cho em hỏi khi hộp thoại MsgBox hiện lên thông báo "Ban phải nhap vao so khong am" , bam vao Ok làm sao để nó quay lại hộp InPutBox cho ta nhập lại số được ạ. Em bấm OK nó hiện lỗi như thế này:


Xin mọi người giúp đỡ em với ạ !

Chỗ màu đỏ sửa thành Goto thử xem
 
Upvote 0
Chỗ màu đỏ sửa thành Goto thử xem

Hay quá ! Được luôn rồi chú ơi ! Mà tại sao cái này con đọc trong sách có nói là dùng Resume để nhảy ngược về nhãn nào đó, ví dụ trong TH này là badentry, tại sao dùng Resume lại không được mà sao dùng Goto thì lại được vậy chú
 
Upvote 0
thích xôi cho ăn xôi
Mã:
Sub tinh_can_bac_hai()
Dim i As Variant
Dim Chon As VbMsgBoxResult
badentry:
i = InputBox("Hay nhap so do vao")
If IsNumeric(i) = True And i >= 0 Then
MsgBox "Can Bac Hai Cua no bang : " & Sqr(i)
Else
Chon = MsgBox("Ban phai nhap so khong am", vbOKCancel)
If Chon = vbOK Then
On Error GoTo errHere
errHere:
Resume badentry
Else
Exit Sub
End If
End If
End Sub

trong bài này dùng goto là thích hợp . viết như tôi chỉ là quậy phá thôi %#^#$%#^#$%#^#$
 
Upvote 0
Giải đáp thắc mắc trên giùm em với được không anh doveandrose
 
Upvote 0
Chán vậy anh. Chú Ndu ơi, chú giải thích giúp con với
 
Upvote 0
Chán vậy anh. Chú Ndu ơi, chú giải thích giúp con với

Resume phải đi với 1 lỗi nào đó, tức khi có lỗi xuất hiện thì mới dùng Resume. Trong khi code của bạn đã có lỗi gì đâu mà Resume
Tóm lại: Nếu code không có lỗi gì mà cố tình Resume thì lại.. lỗi (dzô dziên)
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom