excel - 动态工作表索引号

标签 excel vba

我正在尝试编写一个函数,该函数返回该函数所在工作表的索引号。

我有这个:

Function Sheet()    
Sheet = ThisWorkbook.ActiveSheet.Index    
End Function

我的工作簿中有多个工作表,它们都使用该函数,但都需要引用自己的特定工作表。一旦我更新一张工作表,就使用“activesheet”,所有其他工作表都会将其结果更改为该新工作表,而不是保留自己的工作表。

有没有办法将函数限制为仅限其所在的工作表?

最佳答案

在 Excel 2016、Excel 2013、Excel Online、Excel 2016 for Mac 中,您可以使用内置 Excel 函数:

=SHEET()

否则,请使用 chris neilsen 方法或类似的方法: Get sheet index number from cell reference (Function)

Function SheetNum(Optional celRef As Range) As Long 

    With Application.Caller.Parent 
        If celRef Is Nothing Then 
            SheetNum = .Index 
        Else 
            SheetNum = celRef.Parent.Index 
        End If 
    End With 

End Function

建议:将 UDF 的名称从 Sheet 更改为 MySheet 之类的名称。

如果您想要一个公式来获取工作表的名称(而不是索引),您可以使用以下公式:

=REPLACE(CELL("filename"),1,FIND("]",CELL("filename")),"")

关于excel - 动态工作表索引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34541197/

相关文章:

python - PyInstaller 和 python-docx 模块不能一起工作

vba - 用于修改未知名称打开工作簿中的单元格值的命令按钮

vba - 如何为用户窗体添加最小化按钮?

vba - 复制/粘贴错误 特殊粘贴

vba - Rows.Count 方法在 Excel VBA 中运行不佳(尽管我指定了获取行数的工作表,但它在错误的工作表中获取行数。)

excel - "Run-time error ' 1004 '"打印PDF时

excel - ISERROR 似乎忽略了#REF!由间接生成

vba - 隐藏工作表或工作簿上可以执行哪些 Excel VBA 操作?

vba - 运行时错误 '13' : type mismatch VBA 2010 to ensure uppercase text in cell

vba - 从 vba 中的函数返回字典。错误450