如何正确公开和设置工作表?

时间:2012-09-08 07:00:11

标签: excel vba excel-vba

Public sp As Worksheet  //  on top of ThisWorkbook module
...
Sub one()
Set sp = Sheets("blueSky")  // marked
MsgBox sp.Name
...
Sub two()
Set sp = Sheets("blueSky")  //  marked
MsgBox sp.Range("A1").Value

标记线总是一样的。
那么,是否可以只标记一次标记线 - 以及在哪里?
我试过Workbook.Open事件 - 没有结果
我想在每个Sub中只写第三行 - 这总是不同的。

1 个答案:

答案 0 :(得分:4)

如果您将以下内容放入模块(而非ThisWorkbook),则会获得全局Worksheet变量:

Option Explicit

Global sp As Worksheet

然后您可以通过ThisWorkbook中的任何一种方式对其进行处理(子one()two()也可以在模块中使用):

Option Explicit

Public Sub one()
    Set sp = Sheets("Sheet1")  '// marked
    MsgBox sp.Name
End Sub

Sub two()
    Set sp = Sheets("Sheet2") ' //  marked
    MsgBox sp.Range("A1").Value
End Sub

Private Sub Workbook_Open()
    Set sp = Sheets("Sheet3")
End Sub