从属性获取代号并作为变量传递

时间:2019-12-17 20:26:16

标签: excel vba

我有一个将工作表名称作为参数的函数,例如

Sub do_things(sheetCodeName as Variant)
      sheetCodeName.Cells(1,1) = "Hello"
End Sub

我希望能够使用ActiveSheet.Codename之类的东西来获取给定工作表的代号,并将其作为代号参数传递给我的do_things子例程。但是,我得到

  

需要运行时错误'424'对象。

这似乎是因为ActiveSheet.Codename是一个字符串,而实际上在子例程调用中键入代号时会将其作为工作表传递。

我是否可以通过一种方法来收集工作表的代号并将其传递给我的do_things子项,而无需手动键入它?

2 个答案:

答案 0 :(得分:2)

更简单的解决方案是传递一个Worksheet对象:

Sub do_things(ByVal ws As Worksheet)
      ws.Cells(1,1).Value = "Hello"
End Sub

如果需要,您可以直接通过ActiveSheet。无需使用.CodeName

答案 1 :(得分:-1)

您可以只通过ActiveSheet,但是如果由于某种原因而不能这样做,则可以更改您的子目录:

Sub do_things(sheetCodeName as Variant)
      Worksheets(sheetCodeName).Cells(1,1) = "Hello"
End Sub

由于该字符串不是对象,因此现在不起作用。