Microsoft visual basic runtime error 6 overflow là gì
Lỗi khi lập trình VBA trong Excel là không thể tránh khỏi. Nếu như chúng ta hiểu về các lỗi, các nguyên nhân xảy ra lỗi thì chúng ta có thể khắc phục được các lỗi đó. Để giúp các bạn làm việc tốt hơn trên VBA Excel, trong bài viết này Học Excel Online sẽ hướng dẫn các bạn tìm hiểu về lỗi thi hành (Run-time Error) trong Excel và cách khắc phục lỗi này. Xem nhanh 1. Lỗi thi hành (Lỗi thực thi – Run-time Error) trong VBA ExcelLỗi thi hành là lỗi xảy ra khi bạn chạy 1 chương trình (Sub hoặc Function). Lỗi thi hành được hiểu là lỗi khi VBA không thể thực hiện được (không thi hành được) hoàn thiện một chương trình hay 1 câu lệnh. Nguyên nhân của việc này không phải là viết sai cú pháp (không phải lỗi cú pháp) mà là không thi hành được bởi một số lý do:
(Xem thêm: Tìm hiểu về lỗi cú pháp trong VBA Excel và cách khắc phục) 2. Nhận diện lỗi thi hành và cách khắc phụcLỗi này khá dễ nhận diện, bởi có xuất hiện thông báo lỗi và ghi rõ là lỗi Run-time error và có kèm theo cả mã lỗi (Xem thêm: Những lỗi thường gặp trong VBA Excel – Mã lỗi trong VBA) Lỗi này có ghi rõ là Run-time error ‘5’. Tức là: Lỗi thi hành, mã lỗi là 5: tham số truyền không đúng Để khắc phục lỗi này chúng ta sẽ làm như sau:
Cách thứ 1 – Gián tiếp: Dùng cấu trúc bẫy lỗi chung On Error…(khi gặp lỗi thì sẽ có hành động…) Cách thứ 2 – Trực tiếp: Biện luận logic trực tiếp cho trường hợp lỗi có thể xảy ra để điều hướng lỗi đó một cách có thể kiểm soát rõ ràng, cụ thể (Xem thêm: Hướng dẫn cách bẫy lỗi khi viết code trong VBA) Như vậy qua bài viết này chúng ta đã có thể hiểu thêm về lỗi thi hành (lỗi thực thi, run-time error) trong VBA rồi. Lỗi thi hành là lỗi thiên về tư duy logic do đó việc khắc phục lỗi này cũng đòi hỏi người dùng phải có 1 tư duy logic tốt và nắm được kỹ thuật bẫy lỗi trong VBA. Để tìm hiểu thêm nhiều kiến thức về VBA, mời bạn tham dự khóa học VBA101 – Tự động hóa Excel với lập trình VBA. Đây là khóa học rất hữu ích dành cho bạn: Ngoài kiến thức về kỹ thuật bẫy lỗi trong VBA chúng ta còn được học thêm rất nhiều kiến thức khác về VBA, ứng dụng VBA vào công việc. Tôi có file Nhật ký này nhưng khi nhấn Cap Nhat thì bị lỗi Runtime error "6" Over Flow. Mong các thành viên trợ giúp sửa lỗi trên cho tôi. Password project VBA bác à.
khóa rồi biết gì mà sửa bác!!. làm biếng mở khóa lắm.
Bạn giaiphap và langtuchungtinh360 : Đây là code trong sheet Nhatky Dim TGmin As Double Dim TGmax As Double Dim Itg As Double Public Sub HamDuyet() Dim i As Integer Dim j As Integer Dim k As Integer Dim h As Integer Dim g As Integer For i = 15 To 400 Sheet4.Cells(i, 1).Value = "" Sheet4.Cells(i, 2).Value = "" Sheet4.Cells(i, 3).Value = "" Sheet4.Cells(i, 4).Value = "" Next i TGmin = Sheet5.Cells(5, 6).Value TGmax = Sheet5.Cells(6, 6).Value Itg = TGmin k = 14 g = 1 Do While Itg <= TGmax i = 15 Sheet4.Cells(k, 1).Value = g Sheet4.Cells(k, 2).Value = Itg Sheet4.Cells(k, 4).Value = "Mua Công truong nghi" j = 0 h = 0 Do While Sheet1.Cells(i, 1).Text <> "ket thuc" ' Phan nghiem thu If Sheet1.Cells(i, 11).Value = Itg Then Sheet4.Cells(k + j, 3).Value = Sheet1.Cells(i, 2).Value Sheet4.Cells(k + j, 4).Value = "Nghiêm thu " + Sheet1.Cells(i, 3).Value j = j + 1 h = 1 End If 'Phan thi cong If (Sheet1.Cells(i, 6).Value <= Itg) And (Sheet1.Cells(i, 7).Value >= Itg) Then Sheet4.Cells(k + j, 3).Value = Sheet1.Cells(i, 2).Value Sheet4.Cells(k + j, 4).Value = "Thi công " + Sheet1.Cells(i, 3).Value j = j + 1 h = 1 End If i = i + 1 Loop If h = 1 Then j = j - 1 End If Itg = Itg + 1 k = k + j + 1 g = g + 1 Loop End Sub Private Sub CapNhatNK_Click() HamDuyet End Sub
Tại ô A102 ở sheet 01-Danh Muc sửa chữ "Kết thúc" thành "ket thuc" như trong code là được. Không thì anh sửa code theo ô A102.
Chuẩn là chữ "ket thuc" đó bạn. Do mình tự sửa thành "Kết thúc" hiii Mà sao ngày Kết thúc thi công công việc số 7 là 16/06/2015 mà bên Nhật ký chỉ chạy ra đến ngày 10/06/2015 bạn nhỉ?
em nghĩ chỗ này Mã:
thay bằng Mã:
thì có lẽ nó sẽ nhanh hơn là duyệt qua 385x4 ô nhỉ ------ rồi mấy chữ trong ngoặc kép "xxx" thì em nghĩ nếu trong biên bản có chữ đó thì cho nó bằng với value tại cells đó thì có lẽ chính xác hơn, cho dù biên bản có sửa đổi thì cũng không sai Lần chỉnh sửa cuối: 10/11/15
Mã:
Hình như là thế này: Sheet4.[A15400].Value="" Mà sao ngày Kết thúc thi công công việc số 7 là 16/06/2015 mà bên Nhật ký chỉ chạy ra đến ngày 10/06/2015 bạn nhỉ? Nhìn hông có hiểu nên hông có biết sửa sao luôn anh. Nếu tiện thì anh chỉ rõ nhật ký nó chạy ra nằm dòng nào. (Dòng 55 phải hông nhỉ?) Lần chỉnh sửa cuối: 10/11/15
thì tác giả muốn dùng cells thì em dùng cells thôi mà bác cũng bắt lỗi. không lẽ em ghi vậy rồi mà em không biết nó là vùng A15400
Mã:
Hehe. Thấy range rõ ràng cơ mà nên mới thò vô chứ. P/s: Có câu nào nói là bạn hông biết đâu.
thì em nghĩ là chắc nghĩ em không biết. do em không biết căn bản nên có thể ghi sai vậy Sheet4.Range(Cells(15,1),Cells(400,4)).value="" phải ghi thế nào để bỏ chữ Range đi luôn bác. ngoài vụ [ ] này vì em có đọc ở đây Mã:
nguồn [/B]http://www.giaiphapexcel.com/forum/showthread.php?21361-Tăng-tốc-cho-code-VBA-của-bạn như thế ghi [] thì code sẽ chậm
tôi nói là bạn không biết nó là vùng A15400 đấy , có ý kiến mời vào đây giao lưu
Mã:
nó ghi 8888 từ A15400 đấy thôi bác. -------- topic người ta vào chém gió hoài. chắc bị đình chỉ hoạt động quá
Hí hí, Kể từ hồi viết VBA tới giờ Ít bao giờ (có thể chưa bao giờ) mình viết kiểu vầy Mã:
[/I]Cứ toàn là Range("Axx") hoặc [Axx] Mình lạc hậu quá chăng....[/COLOR][/COLOR]
nó ghi 8888 từ A15400 đấy thôi bác.
--------
topic người ta vào chém gió hoài. chắc bị đình chỉ hoạt động quácách viết này với cách viết trước của bạn đã thay đổi rồi sao bạn không dám ghi là Sheet4.Range(Cells(15, 1), Cells(400, 4)).Value = 8888 nữa ta ?
Mã:
Cứ toàn là Range("Axx") hoặc [Axx]
Mình lạc hậu quá chăng.... chắc là có mình em viết vậy quá. à. đúng là code trên sai thật, mới nhìn ra Mã:
thì nó mới làm việc trên sheet4 được. có thể có nhiều cách chọn vùng khác mà em chưa biết chăng ghi [xxxxx] em đọc được thì nghe là code sẽ chạy chậm nên hạn chế dùng. còn ghi Axy thì cũng được. nhưng em đang tập làm quen R1C1 nên chơi vậy.
tại code trên là dùng cho sheet4 mà bác. câu trên em sửa lại rồi. cứ thích bắt lỗi mấy con gà như em
[] là ký hiệu viết tắt của hàm Evaluate. Mõi lần gặp [] thì VBA phải gọi hàm Evaluate ra để tính cái bên trong nó và trả về range. Vì vậy nó hơi chậm hơn chiếu thẳng vào thuộc tính Range. Tuy nhiên, cái chậm đó rất nhỏ, chả đáng phải lo. Điểm quan trọng là [] chỉ hoạt động với hằng số (bên trong nó phải là hằng số). Cho nên sử dụng nó thì code được gọi là code cứng.
Mã:
thì nó mới làm việc trên sheet4 được.
có thể có nhiều cách chọn vùng khác mà em chưa biết chăng
ghi [xxxxx] em đọc được thì nghe là code sẽ chạy chậm nên hạn chế dùng.
còn ghi Axy thì cũng được. nhưng em đang tập làm quen R1C1 nên chơi vậy.Mời đồng chí đọc cái này sẽ vỡ ra được tí. Anh Lê Văn Duyệt vừa chia sẽ tối qua trên GPE: http://www.giaiphapexcel.com/dienda...g-thức-Evaluate-Understanding-Evaluate-Method |