Giúp em tìm lỗi Lỗi run time error 91 object variable or with block variable not set trong code Wf.Max

Liên hệ QC

AnhThu-1976

Thành viên tích cực
Tham gia
17/10/14
Bài viết
1,061
Được thích
175
Gởi Anh/chị
Em muốn tính cột F và G trong file đính kèm bằng Wf.Max
nhưng nó báo lỗi như tiêu đề
Mã:
Sub CuoiKy()
    Dim KqArr, Data, i As Long, Wf As WorksheetFunction, k
    Data = Range("A3", Range("A65000").End(3)).Resize(, 5).Value

    ReDim KqArr(1 To UBound(Data), 1 To 7)
    For i = 1 To UBound(Data)
        k = k + 1
        KqArr(k, 1) = Data(i, 1)
        KqArr(k, 2) = Data(i, 2)
        KqArr(k, 3) = Data(i, 3)
        KqArr(k, 4) = Data(i, 4)
        KqArr(k, 5) = Data(i, 5)

        KqArr(k, 6) = Wf.Max(0, ((KqArr(k, 2) + KqArr(k, 4)) - (KqArr(k, 3) + KqArr(k, 5))))
        KqArr(k, 7) = Wf.Max(0, ((KqArr(k, 3) + KqArr(k, 5)) - (KqArr(k, 2) + KqArr(k, 4))))
    Next
    Range("a3").Resize(k, 7) = KqArr
End Sub
Nhờ anh/chị kiểm tra, phân tích & sửa giúp. Em cảm ơn!
 

File đính kèm

Gởi Anh/chị
Em muốn tính cột F và G trong file đính kèm bằng Wf.Max
nhưng nó báo lỗi như tiêu đề
Mã:
Sub CuoiKy()
    Dim KqArr, Data, i As Long, Wf As WorksheetFunction, k
    Data = Range("A3", Range("A65000").End(3)).Resize(, 5).Value

    ReDim KqArr(1 To UBound(Data), 1 To 7)
    For i = 1 To UBound(Data)
        k = k + 1
        KqArr(k, 1) = Data(i, 1)
        KqArr(k, 2) = Data(i, 2)
        KqArr(k, 3) = Data(i, 3)
        KqArr(k, 4) = Data(i, 4)
        KqArr(k, 5) = Data(i, 5)

        KqArr(k, 6) = Wf.Max(0, ((KqArr(k, 2) + KqArr(k, 4)) - (KqArr(k, 3) + KqArr(k, 5))))
        KqArr(k, 7) = Wf.Max(0, ((KqArr(k, 3) + KqArr(k, 5)) - (KqArr(k, 2) + KqArr(k, 4))))
    Next
    Range("a3").Resize(k, 7) = KqArr
End Sub
Nhờ anh/chị kiểm tra, phân tích & sửa giúp. Em cảm ơn!
Option Explicit

Sub CuoiKy()
Dim KqArr, Data, i As Long, k
Data = Range("A3", Range("A65000").End(3)).Resize(, 5).Value

ReDim KqArr(1 To UBound(Data), 1 To 7)
For i = 1 To UBound(Data)
k = k + 1
KqArr(k, 1) = Data(i, 1)
KqArr(k, 2) = Data(i, 2)
KqArr(k, 3) = Data(i, 3)
KqArr(k, 4) = Data(i, 4)
KqArr(k, 5) = Data(i, 5)

KqArr(k, 6) = Application.Max(0, ((KqArr(k, 2) + KqArr(k, 4)) - (KqArr(k, 3) + KqArr(k, 5))))
KqArr(k, 7) = Application.Max(0, ((KqArr(k, 3) + KqArr(k, 5)) - (KqArr(k, 2) + KqArr(k, 4))))
Next
Range("a3").Resize(k, 7) = KqArr
End Sub
Hình như bị lỗi ở chỗ khai báo biến Wf As WorksheetFunction. Bạn xem lại thử xem
 
Upvote 0
Gởi Anh/chị
Em muốn tính cột F và G trong file đính kèm bằng Wf.Max
nhưng nó báo lỗi như tiêu đề
Mã:
Sub CuoiKy()
    Dim KqArr, Data, i As Long, Wf As WorksheetFunction, k
    Data = Range("A3", Range("A65000").End(3)).Resize(, 5).Value

    ReDim KqArr(1 To UBound(Data), 1 To 7)
    For i = 1 To UBound(Data)
        k = k + 1
        KqArr(k, 1) = Data(i, 1)
        KqArr(k, 2) = Data(i, 2)
        KqArr(k, 3) = Data(i, 3)
        KqArr(k, 4) = Data(i, 4)
        KqArr(k, 5) = Data(i, 5)

        KqArr(k, 6) = Wf.Max(0, ((KqArr(k, 2) + KqArr(k, 4)) - (KqArr(k, 3) + KqArr(k, 5))))
        KqArr(k, 7) = Wf.Max(0, ((KqArr(k, 3) + KqArr(k, 5)) - (KqArr(k, 2) + KqArr(k, 4))))
    Next
    Range("a3").Resize(k, 7) = KqArr
End Sub
Nhờ anh/chị kiểm tra, phân tích & sửa giúp. Em cảm ơn!
Thêm câu lệnh này trên đầu nhé.
Mã:
Set Wf = WorksheetFunction
 
Upvote 0
Mã:
        KqArr(k, 6) = Wf.Max(0, ((KqArr(k, 2) + KqArr(k, 4)) - (KqArr(k, 3) + KqArr(k, 5))))
End Sub
Nếu chỉ so sánh như vậy thì viết thành như bên dưới cho tiện
Mã:
        if (KqArr(k, 2) + KqArr(k, 4)) - (KqArr(k, 3) + KqArr(k, 5))>0  then KqArr(k, 6) =(KqArr(k, 2) + KqArr(k, 4)) - (KqArr(k, 3) + KqArr(k, 5))
 
Upvote 0
Web KT

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

Back
Top Bottom