10

如何返回工作表对象引用?我一直在仔细阅读各种带有 nada 结果的 Google 搜索。

例如,我有一个这样的功能代码。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

我尝试的一切都给了我各种运行时错误。反正有没有让这个工作?

感谢并提前!

4

5 回答 5

17

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

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(您正在尝试设置一个变量 wSheet,它是类型变量WorksheetWorksheets类型)
  2. 添加set关键字
  3. 更改为.Worksheets.Sheets返回您感兴趣的特定工作表
于 2013-05-31T12:59:33.253 回答
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

一旦目标单元格为空白,宏应该停止

于 2013-11-01T18:04:17.260 回答
1

为了从函数返回对象,您需要提供Set关键字:

Function get_ExampleSheet() As Worksheet
    Set get_ExampleSheet = ActiveWorkbook.Worksheets("ExampleSheet")
End Function
于 2013-05-31T11:57:02.863 回答
1

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

在代码的常规部分

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

该功能可以是

Function create_working_sheet(sheet_name As String) As Worksheet


For i = 1 To Worksheets.Count
    If Worksheets(i).Name = sheet_name Then
        exists = True
    End If
Next i

If Not exists Then
    Worksheets.Add.Name = sheet_name
    'if we want it at the end
    'Sheets.Add(After:=Sheets(Sheets.Count)).Name = sheet_name
End If
Set create_working_sheet = ThisWorkbook.Sheets(sheet_name)
End Function
于 2016-01-27T21:13:32.417 回答
-1

可以在此处找到使用 VBA 设置工作表的方法的完整概述:http: //codevba.com/excel/set_worksheet.htm

于 2016-02-07T08:52:23.453 回答