繁体   English   中英

VBA-公式中的工作表引用

[英]vba - worksheet references in formula

我不知道。 我正在尝试使我的配方设计师更具活力。 但是它总是说找不到 prev,但是我将prev设置为工作表。 PrevSheetName会返回上一个工作表的名称(有效)。 请帮助我,在我的其他代码中,我始终尝试使用“ ActiveSheet.Previous”,但它似乎不适用于公式。

Set prev = Worksheets(PrevSheetName)
Set rng = ActiveSheet.Range("D3")
rng.FormulaR1C1 = "=SUMIF(prev!C[1],RC[-2],prev!C[5])"
Range("D3").Copy Range("D4:D" & lRow)

这是我的第一个代码,并且有效

Set rng = ActiveSheet.Range("D3")
rng.FormulaR1C1 = "=SUMIF('Projekt 1'!C[1],RC[-2],'Projekt 1'!C[5])"
Range("D3").Copy Range("D4:D" & lRow)

这是我的PrevSheetName,已经将名称放在" "

Function PrevSheetName(Optional ByVal WS As Worksheet = Nothing) As String
    Application.Volatile True
    Dim S As String
    Dim Q As String
    If IsObject(Application.Caller) = True Then
        Set WS = Application.Caller.Worksheet
        If WS.Index = 1 Then
            With Application.Caller.Worksheet.Parent.Worksheets
                Set WS = .Item(.Count)
            End With
        Else
           Set WS = WS.Previous
        End If
        If InStr(1, WS.Name, " ", vbBinaryCompare) > 0 Then
            Q = "'"
        Else
            Q = vbNullString
        End If
    Else
        If WS Is Nothing Then
            Set WS = ActiveSheet
        End If
        If WS.Index = 1 Then
            With WS.Parent.Worksheets
                Set WS = .Item(.Count)
            End With
        Else
            Set WS = WS.Previous
        End If
        Q = vbNullString
    End If
    PrevSheetName = Q & WS.Name & Q
End Function

我只想与上一张表格交换“ Projekt 1”

prev是公式的字面部分。 正在寻找被称为“上一页”的表。 您需要连接公式: "=SUMIF(" & PrevSheetName & "!C[1],RC[-2]," & PrevSheetName & "!C[5])"

如果工作表名称中包含空格和后缀,则需要在公式中的名称周围添加',例如“ = SUMIF('”&PrevSheetName&“'!C [1],RC [-2],'”& PrevSheetName和“'!C [5])”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM