VBA:从函数返回工作表对象引用

时间:2013-05-31 11:48:40

标签: function vba reference module

如何返回工作表对象参考?我一直在浏览各种谷歌搜索结果。

例如,我有一个像这样的功能代码。 wSheet已经暗淡了:

Public wSheet As Worksheet
...
Set wSheet = ActiveWorkbook.Worksheets("ExampleSheet")
wSheet.Range("A1").Value = "Hello"

但是,我希望wSheet现在调用一个模块来提供正确的引用。像这样:

Public wSheet As Worksheet
...
Set wSheet = myModule.get_ExampleSheet
wSheet.Range("A1").Value = "Hello"

然后在模块myModule中有一个函数

Function get_ExampleSheet() As Worksheets
    get_ExampleSheet = ActiveWorkbook.Worksheets("ExampleSheet")
End Function

我尝试的一切都给了我各种运行时错误。反正有没有让它发挥作用?

谢谢并提前!

5 个答案:

答案 0 :(得分:15)

您在函数中返回了错误类型的对象。

Function get_ExampleSheet() As Worksheets
    get_ExampleSheet = ActiveWorkbook.Worksheets("ExampleSheet")
End Function

目前有几个错误。

Function get_ExampleSheet() As Worksheet
   Set get_ExampleSheet = ActiveWorkbook.Sheets("Sheet1")
End Function

注意我改变了:

  1. 将类型返回到Worksheet(您正尝试将Worksheet类型的变量wSheet设置为Worksheets类型变量)
  2. 添加了set关键字
  3. 已更改为.Worksheets.Sheets以返回您感兴趣的特定工作表

答案 1 :(得分:2)

Sub Lookup()
Dim state As Variant
Dim PodName As Variant
Set state = ThisWorkbook.Worksheets("Sheet1").Range("E:E")
Sheets("Sheet1").Activate
PodName = WorksheetFunction.VLookup(state, Range("A1:C55"), 2, False)
ThisWorkbook.Worksheets("Sheet1").Range("F:F") = PodName
End Sub

目标单元格为空白后,宏应停止

答案 2 :(得分:1)

要从函数返回Object,您需要提供Set关键字:

Function get_ExampleSheet() As Worksheet
    Set get_ExampleSheet = ActiveWorkbook.Worksheets("ExampleSheet")
End Function

答案 3 :(得分:1)

http://excelmacromastery.com/Blog/index.php/the-complete-guide-to-worksheets-in-excel-vba/

在代码的常规部分

<li>
    <a tabindex="-1" href="base_pages_profile.html">
       <i class="si si-user pull-right"></i>
            <span class="badge badge-success pull-right"></span>USERNAME
    </a>
</li>

该功能可以是

    Dim issues_sheet As Worksheet
    Set issues_sheet = create_working_sheet("Issues")
    issues_sheet.Range("A1").Value = "bssssbb"

答案 4 :(得分:-1)

有关使用VBA设置工作表的方法的完整概述,请访问:http://codevba.com/excel/set_worksheet.htm