bar*_*ani 5 excel vba excel-vba
我目前卡住尝试构建一个将运行sumifs宏的按钮.我正在尝试构建按钮Sheet1并执行sumifs Sheet2.我现在拥有的是:
Option Explicit
Sub Sumifs()
    Dim Sht2 As Worksheet
    Dim EndRow As Long
    Dim i As Integer
    Dim SumRange As Range
    Dim CrtA As Range
    Dim CrtB As Range
    With Sht1
        EndRow = Cells(Rows.Count, "A").End(xlUp).Row
    End With
    Set Sht2 = Worksheets("Sheet2")
    Set SumRange = Worksheets("Sheet3").Range("L5:L10")
    Set CrtA = Worksheets("Sheet3").Range("C5:C10")
    Set CrtB = Worksheets("Sheet3").Range("K5:K10")
    For i = 5 To EndRow
        sht2.Cells(i, 4) = WorksheetFunction.SumIfs(SumRange, crtA, Range("G" & i), crtB, Range("B" & i))
    Next i
End Sub
我已经尝试过运行它,alt + F8只要我在Sheet2,它就可以运行,如果我尝试运行它就Sheet1没有任何反应.
另外,有没有办法将sumifs标准链接到单独的工作表?具体来说,我想有Range ("B" & 1)链接到细胞J5:J10上Sheet3.目前,每当我尝试时,我都会收到类型错误
worksheets("sheet3").range ("B" & 1)
非常感谢您提供的任何建议.谢谢
将代码放在一个模块中:
Option Explicit
Sub SumIfS()
    Dim Sht1 As Worksheet
    Dim Sht2 As Worksheet
    Dim EndRow As Long
    Dim i As Integer
    Dim SumRange As Range
    Dim CrtA As Range
    Dim CrtB As Range
    Set Sht2 = Worksheets(2)
    Set Sht1 = Worksheets(1)
    With Sht1
        EndRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With
    Set SumRange = Worksheets("Sheet3").Range("L5:L10")
    Set CrtA = Worksheets("Sheet3").Range("C5:C10")
    Set CrtB = Worksheets("Sheet3").Range("K5:K10")
    For i = 5 To EndRow
        With Sht2
            .Cells(i, 4) = WorksheetFunction.SumIfS(SumRange, CrtA, .Range("G" & i), CrtB, .Range("B" & i))
        End With
    Next i
End Sub
这个想法是提到范围的"父 - 工作表"是一个很好的做法.否则它将采用ActiveSheet(如果在模块中)或worksheet代码所在的位置.
无论什么时候使用这样的结构:
With Sht1
    EndRow = Cells(Rows.Count, "A").End(xlUp).Row
End With
你需要告诉VBA以某种方式参考Sht1.这是通过点在这里完成的:
否则它需要父工作表,它是ActiveSheet代码所在的代码(如果不在模块中).
| 归档时间: | 
 | 
| 查看次数: | 73 次 | 
| 最近记录: |