Lỗi khi chạy VBA 424

MrSongu

Yêu THVBA
Chào A(c)
Em bắt đầu học VBA, có đoạn code trong sách như dứoi đây.
Khi click nút OK, để ghi thông tin Tên và giới tính, nhờ anh chị giải thích hộ chỗ họ viết khai báo biến, ngoài ra khi ấn F5 hiện Form và nhập liệu thì báo lỗi 424, chỗ này lNextRow = wf.CountA(Sheet1.Range("A:A")) + 1
Vậy nhờ A(c) giải thích dùm e với.
Cảm ơn
Mã:
Private Sub cmdOK_Click()
Dim lNextRow As Long
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction
' Make sure a name is entered
If Len(Me.tbxName.Text) = 0 Then
MsgBox "You must enter a name."
Me.tbxName.SetFocus
Else
' Determine the next empty row
lNextRow = wf.CountA(Sheet1.Range("A:A")) + 1
' Transfer the name
Sheet1.Cells(lNextRow, 1) = Me.tbxName.Text
' Transfer the sex
With Sheet1.Cells(lNextRow, 2)
If Me.optMale.Value Then .Value = "Male"
If Me.OptFemale.Value Then .Value = "Female"
If Me.optUnknown.Value Then .Value = "Unknown"
End With
' Clear the controls for the next entry
Me.tbxName.Text = vbNullString
Me.optUnknown.Value = True
Me.tbxName.SetFocus
End If
End Sub
 
Sửa lần cuối bởi điều hành viên:

tuhocvba

Administrator
Thành viên BQT
Bạn có thể bớt chút thời gian để trình bày lại cho dễ hiểu không ạ?
  • Nếu bạn không biết cách upload ảnh lên diễn đàn, bạn vui lòng tham khảo topic sau: .
  • Bạn lưu ý phải sử dụng thẻ Code khi viết code trên forum. Xin xem mục 4 trong .
  • Bạn nên nói rõ Input là gì? Output muốn ra sao?
  • Bạn nên có file demo. Bạn có thể upload file lên google drive hoặc mediafire.com rồi dẫn link về diễn đàn.

Một bài viết trình bày dễ hiểu là một bài viết sử dụng hình minh họa trực quan. Một bài viết chỉ toàn chữ sẽ khiến người khác không muốn đọc.

Một bài viết dễ hiểu sẽ giảm thiểu thời gian đọc hiểu cho người khác, bạn sẽ nhanh chóng nhận được hỗ trợ nếu bài viết của bạn là một bài viết dễ hiểu.
Chúng tôi mong bạn hiểu và hợp tác.
 

MrSongu

Yêu THVBA
Chào a(c)
Em vừa upload file lên, nhờ a(c) xem dùm. Em lập Form và đã nhập code theo sách, mà tới khâu nhập dữ liệu thì nó cứ báo lỗi. Nhờ a(c) chữa dùm, đồng giải thích rõ chỗ khúc khai báo biến hộ em hiểu với (Mới nhập môn a(c) thông cảm).
Cảm ơn nhiều!

 

tuhocvba

Administrator
Thành viên BQT
Hãy để file chế độ public thì người khác mới coi được.
Nếu không biết thì tham khảo ở đây:

Cần mô tả bằng hình ảnh, bạn thao tác như thế nào, nhập dữ liệu như thế nào, vào đâu, sau đó click vào nút nào, thì ra lỗi như thế nào.
Nếu không biết upload ảnh lên diễn đàn thì xem lại bài trên tôi đã dẫn link.
 

MrSongu

Yêu THVBA
Dear:
Em vừa sửa lại File chia sẻ, và upload ảnh như bên dưới, Nhờ mấy a(c) xem hộ.
Cảm ơn nhiều
Bạn cần đăng nhập để thấy hình ảnh

Bạn cần đăng nhập để thấy hình ảnh

Bạn cần đăng nhập để thấy hình ảnh
 

tuhocvba

Administrator
Thành viên BQT
Tên đối tượng đặt một tên, tên gõ trong code lại là một cái tên khác.
Bạn cần đăng nhập để thấy hình ảnh
 

MrSongu

Yêu THVBA
Chào Admin
Do công việc của e thường xuyên nhập liệu, muốn học để tạo cái Form nhập liệu cho đơn giản, chính xác.
Cái file hôm qua, em đã sửa nhưng khi chạy vẫn tiếp tục báo lỗi, nhờ A xem hộ, hoặc khắc phục giúp e, đồng thời giải thích hộ chỗ khai báo biến giúp em với, đoạn này chưa rõ ý của sách viết.
Cảm ơn nhiều!

Bạn cần đăng nhập để thấy hình ảnh
 

tuhocvba

Administrator
Thành viên BQT
Tôi không biết bạn sửa ở đâu, file bạn gửi lên vẫn là tbxname và txbName. Bạn hãy ngừng đưa câu hỏi kiểu này lên diễn đàn. Tôi gợi ý bạn hãy tham gia diễn đàn như giaiphapexcel.com thì phù hợp hơn.
 

Euler

Administrator
Thành viên BQT
Mua sách của ai thì hỏi người đó. Tôi nghĩ diễn đàn là nơi thảo luận hỏi các vấn đề khúc mắc. Nhưng vấn đề bạn đưa lên bị lặp lại, Admin chỉ lỗi, bạn không sửa, tiếp tục bê file có lỗi đã chỉ như lần trước, với người đọc, cảm thấy có sự phiền hà rất lớn. Người ta muốn đi vào nơi bạn gặp lỗi, nhưng lại gặp phải đống đá sỏi mà bạn chưa dọn là cái tên sai ở trên.

Nói về công thức của bạn thì nên sửa như sau:
Mã:
lNextRow = wf.CountA(Range("A:A")) + 1
Sửa xong vẫn sẽ lỗi.
Vì bạn viết như này:
Mã:
Sheet1.Cells(lNextRow, 1) = Me.txbName.Text
Trình biên dịch không hiểu không hiểu Sheet1 là cái gì. Một là viết Sheets("Sheet1") hoặc là viết Sheets(1).
Kiến thức của bạn ở mức quá thấp nên hãy xem từ video cơ bản

Và tốt nhất là tìm một khóa học VBA cơ bản mà học. Trả tiền và nhận về kiến thức, bên giaiphapexcel họ thường mở các khóa học đấy. Admin đã khuyên bạn đi con đường đúng.
 
Như vậy sau khi sửa tên như admin chỉ ra, và ở dưới anh Euler nói về sheet1 bạn dùng thì code bạn nên sửa lại thành như sau:
Mã:
Private Sub cmdOK_Click()
Dim lNextRow As Long
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction
' Make sure a name is entered
If Len(Me.txbName.Text) = 0 Then
MsgBox "You must enter a name."
Me.txbName.SetFocus
Else
' Determine the next empty row
lNextRow = wf.CountA(Range("A:A")) + 1
' Transfer the name
Sheets(1).Cells(lNextRow, 1) = Me.txbName.Text
' Transfer the sex
With Sheets(1).Cells(lNextRow, 2)
If Me.optMale.Value Then .Value = "Male"
If Me.optFemale.Value Then .Value = "Female"
If Me.OptUnknown.Value Then .Value = "Unknown"
End With
' Clear the controls for the next entry
Me.txbName.Text = vbNullString
Me.OptUnknown.Value = True
Me.txbName.SetFocus
End If
End Sub
 

MrSongu

Yêu THVBA
Cảm ơn rất nhiều!
Website mang nội dung là "Tự học vba", còn mình chưa hề từng nói mình ở trình biên dịch hay gì cả, mình chỉ nói là công việc thường xuyên nhập liệu muốn tạo một cái Form để công việc thuận tiện hơn thôi, nếu ở đây chỉ dành cho dân chuyên môn thì các bạn có thể đóng topic dạng cở bản của mình lại, hoặc đơn giản thì nói câu "bạn không post những câu đơn giản ở đây" thì mình cũng tự động đi ra chẳng có vấn đề gì cả. Còn file sau khi Admin chỉ đã sửa rồi, nhưng sơ suất vẫn dùng file cũ để chụp hình và upload hình.
Rất chân thành cảm ơn Admin đã chỉ giáo, cảm ơn bạn Mod đã dội một gáo nước lạnh buổi sáng, mình tỉnh rồi! Cảm ơn
Yukino Ichikawa đã làm được rồi.
Bạn cần đăng nhập để thấy hình ảnh
 
Sửa lần cuối:

tuhocvba

Administrator
Thành viên BQT
Trình biên dịch không hiểu
Có nghĩa là trình biên dịch VBA không hiểu code bạn gõ. Chứ ở đây không nói gì tới trình độ của bạn!
VBA muốn chạy code của bạn, nó phải biên dịch ra mã máy, loại bỏ dấu comment, kiểm tra lỗi viết code. Đây gọi là trình biên dịch.
 
Top