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 Excel

Lỗ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:

  • Tham chiếu tới 1 đối tượng không tồn tại
  • Tham số truyền vào các textbox không phù hợp để thực thi tiếp các câu lệnh sau đó (ví dụ chỉ được nhập số vào Textbox nhưng người dùng lại nhập lẫn cả ký tự Text thì sẽ không thực thi tiếp được câu lệnh liên quan tới dữ liệu mới nhập vào đó)

(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ục

Lỗ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)

Microsoft visual basic runtime error 6 overflow là gì

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:

  • Dựa vào mã lỗi để đoán nguyên nhân gây lỗi
  • Thêm cấu trúc bẫy lỗi để tránh những nguyên nhân gây lỗi: có 2 cách

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 à.

  • 3

    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.

khóa rồi biết gì mà sửa bác!!. làm biếng mở khóa lắm.

Microsoft visual basic runtime error 6 overflow là gì

  • 4

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

Microsoft visual basic runtime error 6 overflow là gì

  • 5

    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.
Do tôi không phải chủ nhân của file này nên không có pass VBA mà phải dùng Remove VBA ... của bác siwtom.

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.

Microsoft visual basic runtime error 6 overflow là gì

  • 6

    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ỉ?

  • 7

    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ã:

[COLOR=
# 000000]For i = 15 To 400[/COLOR]
[COLOR=
# 000000]Sheet4.Cells(i, 1).Value = ""[/COLOR]
[COLOR=
# 000000]Sheet4.Cells(i, 2).Value = ""[/COLOR]
[COLOR=
# 000000]Sheet4.Cells(i, 3).Value = ""[/COLOR]
[COLOR=
# 000000]Sheet4.Cells(i, 4).Value = ""[/COLOR]
[COLOR=
# 000000]Next i
[/COLOR]

thay bằng

Mã:

Sheet4.Range(Cells(15,1),Cells(400,4)).value=""

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

Microsoft visual basic runtime error 6 overflow là gì

  • 8

    em nghĩ chỗ này

Mã:

Sheet4.Range(Cells(15,1),Cells(400,4)).value=""

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

  • 9

    Hình như là thế này: Sheet4.[A15400].Value=""
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ỉ?)

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

Microsoft visual basic runtime error 6 overflow là gì

Microsoft visual basic runtime error 6 overflow là gì

  • 10

    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
    Microsoft visual basic runtime error 6 overflow là gì

Mã:

Sheet4.[COLOR=

ff0000]Range/COLOR,Cells(400,4)).value=""

Hehe. Thấy range rõ ràng cơ mà nên mới thò vô chứ.

Microsoft visual basic runtime error 6 overflow là gì
P/s: Có câu nào nói là bạn hông biết đâu.

  • 11

    Hehe. Thấy range rõ ràng cơ mà nên mới thò vô chứ.
    Microsoft visual basic runtime error 6 overflow là gì
    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ã:

[COLOR=
# 000000]Ngoài ra khi tham chiếu đến ô [/COLOR][B][COLOR=blue]A1[/COLOR], các bạn có thể dùng code
Cách 1:Code:
Range("A1")
hoặc 
Cách 2:Code:
[A1]
Trong hai cách ở trên, cách 2 ngắn gọn hơn nhưng sẽ chậm hơn cách 1.

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

  • 12

    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
    Microsoft visual basic runtime error 6 overflow là gì

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

  • 13

    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ã:

Sub code()
Range(Cells(15, 1), Cells(400, 4)).Value = 8888
End Sub

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á

  • 14

    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

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ã:

 [COLOR=
# 000000][COLOR=
# 000000][I]Sheet4.[/I][/COLOR][/COLOR][COLOR=
# ff0000][B][I]Range[/I][/B][COLOR=
# 000000][I][B](Cells(15,1),Cells(400,4)[/B][/I][/COLOR][/COLOR][COLOR=
# 000000][COLOR=
# 000000][I]).value=""

[/I]Cứ toàn là Range("Axx") hoặc [Axx] Mình lạc hậu quá chăng....[/COLOR][/COLOR]

  • 15

    Mã:

Sub code() Range(Cells(15, 1), Cells(400, 4)).Value = 8888 End Sub

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 ?

  • 16

    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ã:

[COLOR=

000000][COLOR=

000000][I]Sheet4.[/I][/COLOR][/COLOR][COLOR=

ff0000][B][I]Range[/I][/B][COLOR=

000000]I][B,Cells(400,4)[/B][/I][/COLOR][/COLOR][COLOR=

000000][COLOR=

000000][I]).value="" [/I][/COLOR][/COLOR]

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ã:

 [COLOR=
# 000000][COLOR=
# 000000][I]Sheet4.[/I][/COLOR][/COLOR][COLOR=
# ff0000][B][I]Range[/I][/B][COLOR=
# 000000][I][B]([/B][/I][/COLOR][/COLOR][I]Sheet4.[/I][COLOR=
# ff0000][COLOR=
# 000000][I][B]Cells(15,1),[/B][/I][/COLOR][/COLOR][I]Sheet4.[/I][COLOR=
# ff0000][COLOR=
# 000000][I][B]Cells(400,4)[/B][/I][/COLOR][/COLOR][COLOR=
# 000000][COLOR=
# 000000][I]).value="" [/I][/COLOR][/COLOR]

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.

  • 17

    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 ?

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

Microsoft visual basic runtime error 6 overflow là gì

  • 18

    ... như thế ghi [] thì code sẽ chậm

[] 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.

  • 19

    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ã:

[COLOR=

000000][COLOR=

000000][I]Sheet4.[/I][/COLOR][/COLOR][COLOR=

ff0000][B][I]Range[/I][/B][COLOR=

000000][I][B]([/B][/I][/COLOR][/COLOR][I]Sheet4.[/I][COLOR=

ff0000][COLOR=

000000][I][B]Cells(15,1),[/B][/I][/COLOR][/COLOR][I]Sheet4.[/I][COLOR=

ff0000][COLOR=

000000][I][B]Cells(400,4)[/B][/I][/COLOR][/COLOR][COLOR=

000000][COLOR=

000000][I]).value="" [/I][/COLOR][/COLOR]

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