Dấu / (chia) không thực hiện được trong code

  • Thread starter Thread starter yeudoi
  • Ngày gửi Ngày gửi
Liên hệ QC

yeudoi

Thành viên gắn bó
Thành viên BQT
Moderator
Tham gia
12/6/06
Bài viết
3,184
Được thích
7,633
Tôi có làm code sau nhưng với các dấu +,-,* đều thực hiện được nhưng với dâu / ( chia) thì không. Tôi tìm hoài chẳng biết do đâu mong mọi người giải thích giúp.
'Chen cong thuc vao dong tong
Dim CL As Object

Set zonac = Range(Cells(11, 1), Cells(65536, 2).End(xlUp))
For Each CL In zonac
If CL.Value = "" Then
Dotim = Application.WorksheetFunction.VLookup(CL.Offset(0, 6), Range("[Data]DataHososanpham!F3:AH" & HC), 29, 0)

CL.Offset(0, 12).Value = Format(CL.Offset(0, 11) / Dotim, "#.#0")
'CL.Offset(0, 14).Value = Format(CL.Offset(0, 13) / Dotim, "#.#0")
'CL.Offset(0, 16).Value = Format(CL.Offset(0, 15) / Dotim, "#.#0")
'CL.Offset(0, 22).Value = Format(CL.Offset(0, 21) / Dotim, "#.#0")
'CL.Offset(0, 24).Value = Format(CL.Offset(0, 23) / Dotim, "#.#0")
'CL.Offset(0, 26).Value = Format(CL.Offset(0, 25) / Dotim, "#.#0")

End If
Next
 
Anh cho em hỏi là nó bị lỗi gì, "Run time error 13" ? hay là 11 ?
 
Upvote 0
Rất có thể do dò tìm không ra (lỗi NA của Vlookup), hoặc Vlookup cho kết quả 0, sinh ra lỗi Divided by zero.
Mà biến "HC" chưa có giá trị mà ta?
 
Upvote 0
Upvote 0
Chưa chắc được 100% có thể rơi vào trường hợp Vlookup ra kết quả là 0 hoặc NA như anh Ptm0412 nói
Em đang thử phép chia như anh Hướng nói nên thử theo dạng công thức có chứa phép chia đó. Vậy còn kiểm tra công thức dò tìm nữa thì liên quan đến dữ liệu nên em nhờ anh Hướng post file lên thử mà anh.
 
Upvote 0
Tôi có làm code sau nhưng với các dấu +,-,* đều thực hiện được nhưng với dâu / ( chia) thì không. Tôi tìm hoài chẳng biết do đâu mong mọi người giải thích giúp.
Khẳng định rằng dấu / thực hiện được
Thí nghiệm nhé
- Cell A1 ta gõ số 5
- Cell B1 ta gõ số 2
Chạy code:
PHP:
Sub Test()
 MsgBox Format(Range("A1").Value / Range("B1").Value, "0.000")
End Sub
Kết quả nhận được từ MsgBox là 2.500
Tuy nhiên, code này:
CL.Offset(0, 12).Value = Format(CL.Offset(0, 11) / Dotim, "#.#0")
Lại chẳng có tác dụng gì
Thí nghiệm:
PHP:
Sub Test()
 Range("C1").Value = Format(Range("A1").Value / Range("B1").Value, "0.000")
End Sub
Format thế nào thì kết quả tại C1 vẫn cứ là 2.5 mà thôi (Trừ phi Cell C1 đã được Format bằng tay trước đó)
Có chăng thế này thì được
PHP:
Sub Test()
  Range("C1").Value = Range("A1").Value / Range("B1").Value
  Range("C1").NumberFormat = "0.000"
End Sub
 
Upvote 0
Có phải nguyên nhân do
Mã:
[COLOR=#000000][COLOR=#007700][/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"C1"[/COLOR][COLOR=#007700])[B].[/B][/COLOR][COLOR=#0000BB][B]Value[/B] [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Format[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"A1"[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Value [/COLOR][COLOR=#007700]/ [/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"B1"[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Value[/COLOR][COLOR=#007700], [/COLOR][COLOR=#DD0000]"0.000"[/COLOR][COLOR=#007700])[/COLOR][/COLOR]
(Range("C1") đặt thuộc tính Value)
Phải không sư phụ?
 
Upvote 0
Mình thấy phép chia chả có lỗi gì nếu hạn chế hết lỗi của dữ liệu. Code của bạn rất có thể đã có On Error resume next nên khi gặp lỗi nó bỏ qua
Hàm Format không có tác dụng vì ô kết quả sẽ bị chi phối bởi định dạng của chính nó, trừ khi định dạng ô kết quả là Text
Mình test bằng code như sau:

Mã:
Sub Test()
Dim cl As Range, Dotim
For Each cl In Sheet1.[a1:a6]
If WorksheetFunction.CountIf(Sheet1.[i1:i3], cl.Offset(, 1)) > 0 Then
Dotim = WorksheetFunction.VLookup(cl.Offset(, 1), Sheet1.[I1:J3], 2, 0)
 cl.Offset(, 12) = Format(cl / Dotim, "0.00")
End If
Next
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bài nào cũng thấy tác giả nhấn cám ơn, mà không biết bài nào chữa đúng bệnh.
 
Upvote 0
Web KT

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

Back
Top Bottom