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 (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

AnhThu-1976

Thành viên tích cực
Tham gia
17/10/14
Bài viết
1,063
Đượ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