Giúp sửa lỗi Application-defined or object-defined error

Liên hệ QC

bebo021999

Thành viên gạo cội
Tham gia
26/1/11
Bài viết
5,837
Được thích
8,567
Donate (Momo)
Donate
Giới tính
Nam
Nghề nghiệp
GPE
Chào cả nhà,
Mình đang thử viết 1 đoạn code để kiểm tra doanh thu OK hay not OK như sau:

untitled5.JPG

PHP:
Private Sub Worksheet_Activate()
Dim i, j As Integer
For i = 1 To 4 'Range([d1], [65000].End(xlUp) - 1).Count ' kiem tra tung dong
  If Range("d1").Offset(i, 0).Resize(0, 4).Summary = 0 Then
    For j = 1 To 4
      If Range("d1").Offset(i, j) <> 0 Then ' kiem tra tung cot
      Range("d1").Offset(i, 5).Value = "OK" ' neu bat ky o nao trong dong <> 0 thi hien OK
      Else
       Range("d1").Offset(i, 5).Value = "Not OK"
      End If
    Next
   Else
    Range("d1").Offset(i, 5).Value = "OK"
  End If
Next
End Sub
Bị báo lỗi, không biết sao?
Nhờ cả nhà giúp đỡ.
 
Có phải bị ngay dòng này:
If
Range("d1").Offset(i, 0).Resize(0, 4).Summary = 0 Then


Vì Summary là cái gì Anh Bill hông biết đó mà.
Lại còn resize(0, 4): Sau khi resize phải còn ít nhất 1 cell, chứ có range nào mà 0 dòng 4 cột.
 
Upvote 0
Có phải bị ngay dòng này:
If
Range("d1").Offset(i, 0).Resize(0, 4).Summary = 0 Then


Vì Summary là cái gì Anh Bill hông biết đó mà.
Lại còn resize(0, 4): Sau khi resize phải còn ítnh ất 1 cell, chứ có range nào mà 0 dòng 4 cột.
Có vụ Summary đấy sư phụ à

untitled.JPG
 
Upvote 0
Tại hong thấy (chưa thấy) cao thủ GPE xài, nên chưa học được. Ẹc ẹc.
 
Upvote 0
Tại hong thấy (chưa thấy) cao thủ GPE xài, nên chưa học được. Ẹc ẹc.
Có điều Summary này phải tính cho nguyên dòng
Hoặc là Rows(...).Summary
Hoặc là Range(...)..EntireRow.Summary
thì nó mới chịu
Còn viết theo kiểu Range(...).Summary nó báo lỗi là cái chắc
 
Upvote 0
Dòng thứ 3 cũng bị báo lỗi, em phải thay bằng số 4:
'Range([d1], [65000].End(xlUp) - 1).Count '
 
Upvote 0

File đính kèm

  • VD2.xls
    30 KB · Đọc: 23
Upvote 0
For i = 1 To Range([d1], [65000].End(xlUp) - 1).Count
Dòng này lỗi là vì
- thiếu chữ D trong cell [D65000]
- trừ 1 không đúng chỗ
Phải sửa là:
For i = 1 To Range([d1], [D65000].End(xlUp)).Count - 1

Ngoài ra, hình như bé bo định lấy Sum chứ không phải Summary, nên câu

If Range("d1").Offset(i, 0).Resize(0, 4).Summary = 0 Then

phải sửa là

If Application.Sum(Range("d1").Offset(i, 0).Resize(1, 4)) = 0 Then

Đó là sửa code bé bo từng câu, chứ mà làm lại hết thì chỉ cần:
PHP:
Private Sub abc()
Dim i, j As Integer
For i = 1 To Range([c2], [c65000].End(xlUp)).Count  
    Range("C1").Offset(i, 5).Value = "Not OK"
    For j = 1 To 4
      If Range("C1").Offset(i, j) <> 0 Then 
            Range("C1").Offset(i, 5).Value = "OK"
            Exit For
      End If
    Next
Next
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Một chiêu khác tương đương như dùng công thức
PHP:
Private Sub Worksheet_Activate()
  With Range([D2], [D65000].End(xlUp)).Offset(, 4)
    .Value = "=IF(COUNTIF(RC[-4]:RC[-1],0)=4,""Not OK"",""OK"")"
    .Value = .Value
  End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
mong các cao thủ trong GPE giúp đở

Private Sub Po_RowStart_End()
Dim c As Integer
Dim ws As Worksheet
Set ws = Worksheets("DMUC")
' -1 la len 1 dong, o la cot 0 tuong ung voi vi tri A0
c = ActiveCell.Column - 2
If c > -1 Then ' côt phai la cot thu hai
If Selection.Offset(-1, 0).Text <> "" Then
If temp = 0 Then
temp = 1
Save_Po 2, 24 ' Sum lay theo cot 25
Else
If temp = 1 Then
temp = 2
Save_Po 2, 25 ' Luu vi tri dong dau tien
End If
End If
End If
' Xuat Sumif
If temp = 2 And ws.Cells(2, 24).Value >= ws.Cells(2, 25).Value Then
temp = 1
Else
If temp = 2 And ws.Cells(2, 24).Value < ws.Cells(2, 25).Value Then
temp = 1
Xuat ws.Cells(2, 24).Value, 2 'dong luu tam
ws.Cells(2, 24).Value = ws.Cells(2, 25).Value
End If
End If
End If
End Sub

Private Sub Xuat(gt As Integer, gan As Integer)
Dim Chuoi, Tong, Tong1 As String
Chuoi = """dm"""
Dim ws As Worksheet
Set ws = Worksheets("LPA")
If gan = 2 Then
Tong = "=Sumif(A" & gt + 1 & ":G" & n - 1 & ";" & Chuoi & ";G" & gt + 1 & ":G" & n - 1 & ")"
ws.Cells(gt, 7).Value = Tong ' máy cứ bào lỗi ngay dòng này "Application-defined ỏ object-defined eror"
Else
Tong1 = "=sum(" & "G" & gt + 1 & ":" & "G" & n & ")"
ws.Cells(gt, 7).Value = Tong1
End If
End Sub
 
Upvote 0
Nhân tiện nhờ mọi người coi giúp cái dòng công thức sau của mình sao nó cũng báo lỗi như trên với, mình tìm hoài chẳng ra:
.Range("P5").Value = "=IF(AND(ROW(RC[-1])=5,RC[-1]>0),RC[-9]*RC[-2]*RC[-1]/360,IF(OR(AND(RC[-12]<Edate,EXACT(R[1]C[-10],RC[-1O])=FALSE,RC[-2]=R[-1]C[-2],RC[-1]>0),AND(R[1]C[-12]>Edate,EXACT(R[1]C[-10],RC[-1O])=TRUE,RC[-2]=R[-1]C[-2],RC[-1]>0)),SUM(RC[-9]*RC[-2]*RC[-1]/360,RC[-6]*RC[-2]*(Edate-MAX(Sdate,RC[-12])+1)/360),IF(OR(AND(RC[-12]<Edate,EXACT(R[1]C[-10],RC[-1O])=FALSE,RC[-2]<>R[-1]C[-2],RC[-1]>0),AND(R[1]C[-12]>Edate,EXACT(R[1]C[-10],RC[-1O])=TRUE,RC[-2]<>R[-1]C[-2],RC[-1]>0)),SUM(RC[-9]*R[-1]C[-2]*RC[-1]/360,RC[-6]*RC[-2]*(Edate-MAX(Sdate,RC[-12])+1)/360),IF(AND(R[1]C[-12]<Edate,EXACT(R[1]C[-10],RC[-1O])=TRUE,RC[-2]<>R[-1]C[-2],RC[-1]>0),RC[-9]*R[-1]C[-2]*RC[-1]/360,0))))"
 
Upvote 0
Web KT
Back
Top Bottom