Thứ tự khi khai báo biến ? (1 người xem)

Liên hệ QC

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

hongthequang

Thành viên mới
Tham gia
5/12/13
Bài viết
8
Được thích
1
Chào cả nhà! Em là thành viên mới của GPE. Em có chút thắc mắc mong mọi người chỉ bảo.
Em có đoạn code
Mã:
Public Sub Sochan()
Dim A, B, Dem, i As Integer
Do
A = InputBox("Nhap A ")
B = InputBox("Nhap B ")
If A > B Then MsgBox "A phai lon hon B"
Loop While (A > B)
i = A
Dem = 0
Do While i <= B
    If (i Mod 2) = 0 Then Dem = Dem + 1
    i = i + 1
Loop
MsgBox "So so chan la " & Dem
End Sub

Nếu khai báo biến như trên thì chương trình chạy Ok. Nhưng nếu em sửa lại là
Mã:
Dim A, B, i, Dem as Integer
đưa biến Dem ra sau biến i, thì khi chạy sẽ phát sinh lỗi Overflow???
Mọi người giải đáp giúp em với. Cảm ơn mọi người !
 
Chào cả nhà! Em là thành viên mới của GPE. Em có chút thắc mắc mong mọi người chỉ bảo.
Em có đoạn code
Mã:
Public Sub Sochan()
Dim A, B, Dem, i As Integer
Do
A = InputBox("Nhap A ")
B = InputBox("Nhap B ")
If A > B Then MsgBox "A phai lon hon B"
Loop While (A > B)
i = A
Dem = 0
Do While i <= B
    If (i Mod 2) = 0 Then Dem = Dem + 1
    i = i + 1
Loop
MsgBox "So so chan la " & Dem
End Sub

Nếu khai báo biến như trên thì chương trình chạy Ok. Nhưng nếu em sửa lại là
Mã:
Dim A, B, i, Dem as Integer
đưa biến Dem ra sau biến i, thì khi chạy sẽ phát sinh lỗi Overflow???
Mọi người giải đáp giúp em với. Cảm ơn mọi người !
Nếu chưa rành thì bỏ câu As Integer đi, chạy ào ào.
Code viết ngộ: If A> B then Msgbox "A phai lon hon B" >>> Câu này hỏng biết tương tác gì nữa
 
Upvote 0
Chào cả nhà! Em là thành viên mới của GPE. Em có chút thắc mắc mong mọi người chỉ bảo.
Em có đoạn code
Mã:
Public Sub Sochan()
Dim A, B, Dem, i As Integer
Do
A = InputBox("Nhap A ")
B = InputBox("Nhap B ")
If A > B Then MsgBox "A phai lon hon B"
Loop While (A > B)
i = A
Dem = 0
Do While i <= B
    If (i Mod 2) = 0 Then Dem = Dem + 1
    i = i + 1
Loop
MsgBox "So so chan la " & Dem
End Sub

Nếu khai báo biến như trên thì chương trình chạy Ok. Nhưng nếu em sửa lại là
Mã:
Dim A, B, i, Dem as Integer
đưa biến Dem ra sau biến i, thì khi chạy sẽ phát sinh lỗi Overflow???
Mọi người giải đáp giúp em với. Cảm ơn mọi người !
Đây không phải là câu trả lời cho câu hỏi chính của bạn, nhưng tôi muốn góp ý một chút về cách khai báo biến của bạn: Với khai báo bạn sử dụng trong code trên thì chỉ có biến được khai báo cuối cùng (biến i ở trên và biến Dem ở dưới) mang kiểu Integer, các biến còn lại đều có kiểu Variant, và có thể đây là nguyên nhân gây ra lỗi trên (cái này thì tôi không chắc).
Khi khai báo biến, nếu đã dự định trước mỗi biến thuộc kiểu dữ liệu nào thì bạn nên khai báo tường minh trong phần khai báo biến. Cụ thể, phần khai báo biến phải được viết lại là:
Mã:
Dim A as Integer, B as Integer, i as Integer, Dem as Integer
Hoặc thậm chí, bạn có thể thay toàn bộ kiểu Integer trong khai báo trên bởi kiểu Long. Về nguyên nhân của vấn đề này, bạn có thể tham khảo tại topic sau: Biến integer & biến long cái nào nhanh hơn?
 
Upvote 0
Cảm ơn bác đã kịp thời giải đáp cho em! Vậy mà em cứ nghĩ là khi khai báo
Dim A, B, C, D as Integer
thì tất cả là Integer. -+*/
Đúng là bể học vô biên. Cảm ơn bác lần nữa
 
Upvote 0
Cảm ơn bác đã kịp thời giải đáp cho em! Vậy mà em cứ nghĩ là khi khai báo
Dim A, B, C, D as Integer
thì tất cả là Integer. -+*/
Đúng là bể học vô biên. Cảm ơn bác lần nữa
Tôi cũng đã từng có ý nghĩ giống như bạn lúc mới làm quen với VBA, vì tôi làm quen với "em" này sau khi biết "em" Pascal. Nhưng sau đó mới ngộ ra là không phải vậy, mỗi "em" một tính khác nhau. --=0
 
Upvote 0
Upvote 0
Tôi cũng đã từng có ý nghĩ giống như bạn lúc mới làm quen với VBA, vì tôi làm quen với "em" này sau khi biết "em" Pascal. Nhưng sau đó mới ngộ ra là không phải vậy, mỗi "em" một tính khác nhau. --=0
Lâu nay em lầm tưởng như vậy, nguy hiểm thiệt bác ạ :=\+
Mà cộng đồng GPE mình thật tuyệt vời bác nhỉ.
 
Upvote 0

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

Back
Top Bottom