Sửa lỗi "Method 'Value' of object 'Range' failed"

Liên hệ QC

Nguyễn T. M. Hường

Thành viên mới
Tham gia
23/7/19
Bài viết
9
Được thích
2
Giới tính
Nữ
Chào mọi người,
Mọi người xem giúp mình đoạn code trong form frm_THEMSP. Khi mình thực hiện click THÊM luôn thông báo lỗi Method 'Value' of object 'Range' failed.
 

File đính kèm

  • Test.xlsm
    83.8 KB · Đọc: 6
Lần chỉnh sửa cuối:
Không xem được file, làm sao giúp?
 
Ở bên ni nì

 
Bạn gỡ mật khẩu ra mọi người mới xem được form chứ!
Xin lỗi bạn, mình quên mất. Mật khẩu là P@ssw0rd
Bài đã được tự động gộp:

Không xem được file, làm sao giúp?
Mình quên mất, bạn nhập pass là P@ssw0rd giúp mình nhen. Để mình up lại file không có mật khẩu :D
Bài đã được tự động gộp:

Ở bên ni nì

Hi, chào bạn. Có gì xem code giúp mình với nhen
 
Lần chỉnh sửa cuối:
Sau từng câu lệnh bạn có kiểm tra xem nó thực thi & cho bạn kết quả ra sao không?
Mình lấy ví dụ:
Sau câu lệnh
Mã:
dongcuoi = sanpham.Offset(sanpham.Rows.Count, 0).End(xlUp).Row - 7
Bạn thêm dòng lệnh
PHP:
MsgBox DongCuoi
Xem nó trả lới bạn như thế nào & có đúng ý đồ của bạn hay không?
 
Sau từng câu lệnh bạn có kiểm tra xem nó thực thi & cho bạn kết quả ra sao không?
Mình lấy ví dụ:
Sau câu lệnh
Mã:
dongcuoi = sanpham.Offset(sanpham.Rows.Count, 0).End(xlUp).Row - 7
Bạn thêm dòng lệnh
PHP:
MsgBox DongCuoi
Xem nó trả lới bạn như thế nào & có đúng ý đồ của bạn hay không?
Chào bạn, nó ra đúng ý đồ của mình. Giờ mình click THÊM thì không báo lỗi, mà có lúc tự nhiên lại báo lỗi. Mình không biết code bị sai lỗi gì mà lúc được lúc không. Bạn có ý kiến gì giúp mình với. Cám ơn bạn nhiều
 
Bạn đánh số các dòng lệnh
& thực hiện macro xem khi có lỗi thì nó báo dòng lệnh nào đang lỗi & bạn ghi lại hàm mà lỗi trả về:
PHP:
Private Sub btn_them_Click()
On Error GoTo LoiCT
1    DongCuoi = SanPham.Offset(SanPham.Rows.Count, 0).End(xlUp).Row - 7
    DongThemdl = DongCuoi + 1
   
3    SanPham.Cells(DongThemdl, 1).Value = Me.txt_makho
    SanPham.Cells(DongThemdl, 2).Value = Me.txt_matk
5    SanPham.Cells(DongThemdl, 3).Value = Me.txt_mabh
    SanPham.Cells(DongThemdl, 4).Value = Me.cbx_phanloai.Value
7    SanPham.Cells(DongThemdl, 5).Value = Me.cbx_xuatxu.Value
    SanPham.Cells(DongThemdl, 6).Value = Me.txt_ktvien
9    SanPham.Cells(DongThemdl, 7).Value = Me.txt_ktvi
    SanPham.Cells(DongThemdl, 8).Value = Format(Me.txt_m2thung, "#,##0")
11    SanPham.Cells(DongThemdl, 11).Value = Me.cbx_donvitinh.Value
    txt_makho = "":                     txt_matk = ""
13    txt_mabh = "":                  cbx_phanloai = ""
    cbx_xuatxu = "":                    txt_ktvien = ""
15    txt_ktvi = "":                      txt_m2thung = ""
    txt_makho.SetFocus
Err_:                   Exit Sub
LoiCT:
    MsgBox Error, , "Lôi Dòng: " & Erl
    Resume Err_
End Sub

& mình tin là macro chưa thực hiện đúng ý đồ của bạn;
Hiện dòng 8 đang có dữ liệu; Bạn nhập mới dữ liệu sẽ phải nhập vô dòng 9
Nhưng hiện tại dòng sẽ nhập liệu là dong2
 
Bạn đánh số các dòng lệnh
& thực hiện macro xem khi có lỗi thì nó báo dòng lệnh nào đang lỗi & bạn ghi lại hàm mà lỗi trả về:
PHP:
Private Sub btn_them_Click()
On Error GoTo LoiCT
1    DongCuoi = SanPham.Offset(SanPham.Rows.Count, 0).End(xlUp).Row - 7
    DongThemdl = DongCuoi + 1
  
3    SanPham.Cells(DongThemdl, 1).Value = Me.txt_makho
    SanPham.Cells(DongThemdl, 2).Value = Me.txt_matk
5    SanPham.Cells(DongThemdl, 3).Value = Me.txt_mabh
    SanPham.Cells(DongThemdl, 4).Value = Me.cbx_phanloai.Value
7    SanPham.Cells(DongThemdl, 5).Value = Me.cbx_xuatxu.Value
    SanPham.Cells(DongThemdl, 6).Value = Me.txt_ktvien
9    SanPham.Cells(DongThemdl, 7).Value = Me.txt_ktvi
    SanPham.Cells(DongThemdl, 8).Value = Format(Me.txt_m2thung, "#,##0")
11    SanPham.Cells(DongThemdl, 11).Value = Me.cbx_donvitinh.Value
    txt_makho = "":                     txt_matk = ""
13    txt_mabh = "":                  cbx_phanloai = ""
    cbx_xuatxu = "":                    txt_ktvien = ""
15    txt_ktvi = "":                      txt_m2thung = ""
    txt_makho.SetFocus
Err_:                   Exit Sub
LoiCT:
    MsgBox Error, , "Lôi Dòng: " & Erl
    Resume Err_
End Sub

& mình tin là macro chưa thực hiện đúng ý đồ của bạn;
Hiện dòng 8 đang có dữ liệu; Bạn nhập mới dữ liệu sẽ phải nhập vô dòng 9
Nhưng hiện tại dòng sẽ nhập liệu là dong2
Cám ơn bạn nhiều.
Mình chạy code này thì chỉ báo lỗi dòng 1 do mình chưa set biến vùng sanpham. Còn lại chạy bình thường. Chắc phải để bữa nào file này bị lỗi lại mình lại đưa lên tiếp. Giờ mình không biết nó bị lỗi gì luôn mà lúc này lúc khác. Cám ơn bạn nhiều ạ.
 
Nó báo lỗi dòng 1 thì có nghĩa dòng 1 hay dòng dưới liền kề với nó bị lỗi
Mà đáng để ý sẽ là dòng 1
Ta thử dịch dòng lênh lày sang tiếng Việt:
DongCuoi = SanPham.Offset(SanPham.Rows.Count, 0).End(xlUp).Row - 7
Trong file của bạn Vùng mà bạn gán tên 'SanPham' là B8:AJ8 (vùng chỉ chứa trong 1 dòng )
Thêm nữa, trong phần khai báo biến toàn cục, bạn có khai báo
Mã:
Public SanPham As Range
Như vậy xài trùng tên này đã là không nên
Thứ nữa
Trước dòng 1 bạn thử thêm dòng lệnh này xem sao:
MsgBox SanPham.Address
xem nó báo thông tin gì cho bạn

Để chắc cú bạn nên làm vầy:
Set SanPham = Range("B8:AJ8")

Mà sao bạn không xài câu lệnh vầy để xác định dòng cuối nhì:
DongCuoi= [B65500].End(xlUp).row + 1
Vừa đơn gian như đang zởn thôi!
 
Nó báo lỗi dòng 1 thì có nghĩa dòng 1 hay dòng dưới liền kề với nó bị lỗi
Mà đáng để ý sẽ là dòng 1
Ta thử dịch dòng lênh lày sang tiếng Việt:
DongCuoi = SanPham.Offset(SanPham.Rows.Count, 0).End(xlUp).Row - 7
Trong file của bạn Vùng mà bạn gán tên 'SanPham' là B8:AJ8 (vùng chỉ chứa trong 1 dòng )
Thêm nữa, trong phần khai báo biến toàn cục, bạn có khai báo
Mã:
Public SanPham As Range
Như vậy xài trùng tên này đã là không nên
Thứ nữa
Trước dòng 1 bạn thử thêm dòng lệnh này xem sao:
MsgBox SanPham.Address
xem nó báo thông tin gì cho bạn

Để chắc cú bạn nên làm vầy:
Set SanPham = Range("B8:AJ8")

Mà sao bạn không xài câu lệnh vầy để xác định dòng cuối nhì:
DongCuoi= [B65500].End(xlUp).row + 1
Vừa đơn gian như đang zởn thôi!
Hi hi, câu lệnh xác định dòng cuối do hồi học biết có mỗi mấy code kiểu vậy nên dùng nó miết. :D. Để mai mình đổi lại code xem thế nào. Cám ơn bạn đã giúp đỡ, có gì mai lại nhờ vả tiếp
 
Web KT
Back
Top Bottom