Lỗi 2015 trong lập trình VBA excel
Thưa ngài
Tôi đang viết một chương trình VBA trong excel để so sánh chênh lệch thời gian và nếu chênh lệch hơn 01 phút thì nên tô sáng. Chương trình hoạt động hoàn hảo nhưng khi thay vì thời gian trong một cột thì là #VALUE! thì chương trình báo lỗi 2015. Chương trình được đưa ra bên dưới
Thống kê phụ1()
Bộ đếm Dim là số nguyên
Bộ đếm = Cells(Rows.Count, "A").End(xlUp).Row
tôi = 3
LÀM
tôi = tôi + 1
diff01 = 0
khác biệt02 = khác biệt01
number1 = Cells(i, 2).Giá trị
number2 = Cells(i, 4).Giá trị
numbera = Cells(i, 3).Value
diff01 = số2 - số1
diff01 = Định dạng(diff01, "hh:mm:ss")
diff02 = numbera - number2
diff02 = Định dạng(diff02, "hh:mm:ss")
Nếu diff01 >= "00:01:00" Và diff01 <= "00:05:00" Và diff02 >= "00:01:00" Và diff02 <= "00:05:00" Thì
Cells(i, 4).Interior.ColorIndex = 20
Cells(i, 7).Interior.ColorIndex = 20
Nếu không thì nếu diff01 > "00:05:00" và diff01 > "00:05:00" thì
Cells(i, 4).Interior.ColorIndex = 24
Cells(i, 7).Interior.ColorIndex = 24
Khác
'không làm gì cả
Cells(i, 4).Interior.ColorIndex = 0
Cells(i, 7).Interior.ColorIndex = 0
Kết thúc nếu
Vòng lặp While i < Bộ đếm
Kết thúc Sub
00:00:01 | 00:00:00 | 00:00:00 |
#GIÁ TRỊ! | 00:00:22 | 00:00:21 |
00:00:18 | 00:00:20 | 00:00:19 |
00:00:05 | 00:00:05 | 00:00:07 |
Xin hãy giúp đỡ để nó không báo lỗi và chuyển đến ô tiếp theo.
Trả lời:
Bạn có thể để mã kiểm tra giá trị lỗi:
Thống kê phụ1()
Dim i Như Số Nguyên
Bộ đếm Dim là số nguyên
Mờ số1, số2, sốa, diff01, diff02
Bộ đếm = Cells(Rows.Count, "A").End(xlUp).Row
tôi = 3
LÀM
tôi = tôi + 1
diff01 = 0
khác biệt02 = khác biệt01
' *** Kiểm tra giá trị lỗi ***
Nếu IsError(Cells(i, 2).Value) Hoặc IsError(Cells(i, 4).Value) Hoặc _
IsError(Cells(i, 3).Value) Sau đó
' Bỏ qua hàng này
Khác
number1 = Cells(i, 2).Giá trị
number2 = Cells(i, 4).Giá trị
numbera = Cells(i, 3).Value
diff01 = số2 - số1
diff01 = Định dạng(diff01, "hh:mm:ss")
diff02 = numbera - number2
diff02 = Định dạng(diff02, "hh:mm:ss")
Nếu diff01 >= "00:01:00" Và diff01 <= "00:05:00" Và _
diff02 >= "00:01:00" Và diff02 <= "00:05:00" Sau đó
Cells(i, 4).Interior.ColorIndex = 20
Cells(i, 7).Interior.ColorIndex = 20
ElseIf diff01 > "00:05:00" Và diff01 > "00:05:00" Thì
Cells(i, 4).Interior.ColorIndex = 24
Cells(i, 7).Interior.ColorIndex = 24
Khác
'không làm gì cả
Cells(i, 4).Interior.ColorIndex = 0
Cells(i, 7).Interior.ColorIndex = 0
Kết thúc nếu
Kết thúc nếu
Vòng lặp While i < Bộ đếm
Kết thúc Sub
Trả lời:
Thưa ông,
Cảm ơn bạn rất nhiều. Nó thực sự rất hữu ích và cảm ơn vì sự giúp đỡ nhanh chóng.
Trân trọng,
Ravindra D. Havnur
Trả lời:
Xin chào. Chỉ là một ý tưởng thôi...
Tôi thấy bạn đang làm việc với Strings. Bạn có muốn ý tưởng chung sau không?
Dim Diff01 Theo Ngày
Dim Min1 Như Ngày
Dim Min5 Như Ngày
Min1 = TimeSerial(0, 1, 0)
Min5 = TimeSerial(0, 5, 0)
' Một số giá trị thời gian
[A1] = TimeSerial(8, 45, 0) '8:45 Sáng
[A2] = TimeSerial(8, 48, 0) '8:48 Sáng
Diff01 = Cells(2, 1) - Cells(1, 1)
Nếu Diff01 >= Min1 và Diff01 <= Min5 thì
Gỡ lỗi.In "Đúng"
Kết thúc nếu
- - - -
tôi = 3
LÀM
tôi = tôi + 1
'...
Vòng lặp While i < Bộ đếm
Một ý tưởng...
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
> Đối với R = 4 đến LastRow
'..
Tiếp theo R
Hoặc chỉ cần...
Đối với R = 4 Đến ô (Hàng. Đếm, "A"). Kết thúc (xlUp). Hàng
'..
Tiếp theo R
Đây có phải là lỗi logic không:
Nếu không thì nếu diff01 > "00:05:00" và diff01 > "00:05:00" thì
Trả lời:
Xin chào ông
Cảm ơn sự giúp đỡ. Cả hai chương trình đều hoạt động hoàn hảo.
Trân trọng,
Ravindra D. Havnur
Comments
Post a Comment