Nhờ sửa lỗi code VBA tính sumifs từ 1 file dữ liệu khác

Liên hệ QC

tinydragon

Thành viên mới
Tham gia
1/11/13
Bài viết
17
Được thích
4
Giới tính
Nữ
Dear các anh/chị,
Em có viết 1 đoạn code VBA trong file W154_macro để tính dữ liệu từ file Data input như bên dưới.
Tuy nhiên nó chưa tính ra được kết quả. Em nghĩ lỗi ở chỗ em set wb = Workbooks.Open(Filename).
Rất mong được các anh, chị hỗ trợ. Em cảm ơn nhiều ạ!
"Sub sumif_Loop_W154()
Dim Filename As Variant
Dim i As Integer
Dim wb As Workbook
Dim sh As Worksheet
Dim Total As Long
Filename = Application.GetOpenFilename(filefilter:="Excel Files, *.xl*")
If Not IsArray(Filename) Then Exit Sub
Application.ScreenUpdating = False
Set wb = Workbooks.Open(Filename)
Set sh = ThisWorkbook.Worksheets("CBD_Loan")
For i = 5 To 18
sh.Cells(i, 5).Select
Total = WorksheetFunction.SumIfs(wb.Worksheets("Excel").Range("Q:Q"), wb.Worksheets("Excel").Range("J:J"), "C", wb.Worksheets("Excel").Range("B:B"), sh.Cells(i, 1).Value, _
wb.Worksheets("Excel").Range("G:G"), "USD", wb.Worksheets("Excel").Range("H:H"), "<>GLFU", _
wb.Worksheets("Excel").Range("H:H"), "<>GLFV")
ActiveCell.Value = Total

Next
wb.Close
Application.ScreenUpdating = True

End Sub"
 

File đính kèm

  • Data input.xlsx
    430.6 KB · Đọc: 8
  • W154_macro.xlsm
    20.4 KB · Đọc: 6
Dear bạn, mình bỏ đoạn code đó ra thì nó báo lỗi ở dòng sh.cells(i,5).select
Tại sao bạn nhỉ?
Cảm ơn bạn!

Lỗi là do bạn mở file Data input mà không active windows W154
Sub sumif_Loop_W154()
Dim Filename As Variant
Dim wb As Workbook
Dim sh As Worksheet
Dim Total As Long
Filename = Application.GetOpenFilename(filefilter:="Excel Files, *.xl*")
' If Not IsArray(Filename) Then Exit Sub
Application.ScreenUpdating = False
Set wb = Workbooks.Open(Filename)
Set sh = ThisWorkbook.Worksheets("CBD_Loan")
Windows("W154_macro.xlsm").Activate
For i = 5 To 18
sh.Select
sh.Cells(i, 5).Select
Total = WorksheetFunction.SumIfs(wb.Worksheets("Excel").Range("Q:Q"), wb.Worksheets("Excel").Range("J:J"), "C", wb.Worksheets("Excel").Range("B:B"), sh.Cells(i, 1).Value, _
wb.Worksheets("Excel").Range("G:G"), "USD", wb.Worksheets("Excel").Range("H:H"), "<>GLFU", _
wb.Worksheets("Excel").Range("H:H"), "<>GLFV")
ActiveCell.Value = Total

Next i
wb.Close
Application.ScreenUpdating = True

End Sub
 
Cảm ơn bạn nhiều nhé! Mình sửa được rồi!
 
Web KT
Back
Top Bottom