vmhieu.cdcs
Thành viên mới
- Tham gia
- 21/5/09
- Bài viết
- 26
- Được thích
- 2
Chỉnh for i=1 to lr thànhNhờ anh/chị xem giúp câu lệnh Select bị bắt lỗi mảng b (cột b) này hoài. trong khi cửa sổ Local thì thấy mảng o(cột O) mảng kết quả trả về giá trị đúng. Xin chỉ giúp ạ, Xin cảm ơn
View attachment 267840
Xin cảm ơn bạn rất nhiềuChỉnh for i=1 to lr thành
for i=1 to ubound(b)
Tự kiểm tra khác nhau lr và ubound(b)
Cảm ơn bạn rất nhiềuBạn thử lại nhé.
Bạn sửa lại code nhé.Nhờ anh/chị xem giúp câu lệnh Select bị bắt lỗi mảng b (cột b) này hoài. trong khi cửa sổ Local thì thấy mảng o(cột O) mảng kết quả trả về giá trị đúng. Xin chỉ giúp ạ, Xin cảm ơn
View attachment 267840
Sub mau()
Dim b(), o()
Dim i As Long
Dim LR As Long
Set Sh = Sheets("DsHoTroCovid")
LR = Sh.Range("B" & Rows.Count).End(xlUp).Row
b = Sh.Range("B2:B" & LR).Value
ReDim o(1 To UBound(b), 1 To 1)
For i = 1 To UBound(b)
If b(i, 1) = "NQ11621" Then
o(i, 1) = "3B"
Else
o(i, 1) = "3A"
End If
Next
Sh.[O2].Resize(UBound(b), 1) = o
End Sub
Cảm ơn rất nhiều ạBạn sửa lại code nhé.
Sai ở chỗ khai báo lại kích thước mảng o (redim o(1 to LR,1))Mã:Sub mau() Dim b(), o() Dim i As Long Dim LR As Long Set Sh = Sheets("DsHoTroCovid") LR = Sh.Range("B" & Rows.Count).End(xlUp).Row b = Sh.Range("B2:B" & LR).Value ReDim o(1 To UBound(b), 1 To 1) For i = 1 To UBound(b) If b(i, 1) = "NQ11621" Then o(i, 1) = "3B" Else o(i, 1) = "3A" End If Next Sh.[O2].Resize(UBound(b), 1) = o End Sub
Sai ở chỗ gán mảng xuống sh (Sheet1.range("o2").resize(ubound(b(i,1),1)
Duyệt các phần tử của mảng không nên dùng chỉ số của Sh (for i=1 to LR) thay bằng For i = 1 to Ubound(b)
Nên sử dụng IF... then với 2 giá trị cần gán (3A, 3B) có lẽ hay hơn là select ....case