如何在VBA对象中存储工作表引用?

迈克尔·格林

对于那些精通Excel对象编程的人来说,这似乎是微不足道的,但这让我很吃惊。

过去,我在Excel的vba中完成了以下操作,以在退出子例程之前还原活动表。

sub foo()
dim cursheet
cursheet = ActiveSheet

someOtherSheet.activate
....
cursheet.activate
end sub

很好 我尝试使用对象做类似的事情,并通过几种不同的方法,在一个新的Problem类中编写了以下内容...

''''''''''''''''''''''
' sheet property
''''''''''''''''''''''
Public Property Get sheet() As Worksheet

  Set sheet = psheet
End Property
Public Property Let sheet(Value As Worksheet)

   Set psheet = Value
End Property

Public Sub saveCursheet()
Me.sheet = ActiveSheet
End Sub
Public Sub activateSheet()
Me.sheet.Activate
End Sub

在我的代码中,我以这种方式调用方法...

Sub TallyQuizScore() 
Dim curStudent As Problem 
Set curStudent = New Problem

curStudent.saveCursheet

Worksheets("QuizTallies").Activate
...
curStudent.activateSheet

End Sub

当我尝试执行curStudent.activateSheet时,出现一条错误消息,提示我需要一个对象。因此,我重新运行了调用代码,并逐步执行了saveCursheet方法。我看到了活动工作表已存储,但是请注意,当我点击设置器的end属性行时,工作表对象就会消失。我不知道这是调试器的人工产物,还是当我碰到end属性行时表单确实被扔掉了,但是不管它是什么,当我尝试在完成后重新激活它时,该对象都消失了。

令人沮丧的是,我真正想在调用方中编写的内容是curStudent.sheet = Activesheet
和curStudent.sheet.Activate

通过某种方式继承了内置的工作表方法,但是当我尝试使其工作时,这导致了兔子的代码大战。

所以三个问题:

  1. 为什么我保存在saveCursheet中的工作表消失了?
  2. 为了使代码正常工作,我需要更改什么?
  3. 为了使curStudent.sheet = Activesheet及其合作伙伴curStudent.sheet.Activate方法有效,我需要与上述方法做些什么不同?
道格·格兰西

在代码执行其他操作时,您需要一个模块级变量来存储值。请注意,它是私人的。

另外,正如ja72所捕获的,对于对象而言,它Set不是Let

未测试:

Private m_Sheet as Worksheet

Public Property Get Sheet() As Worksheet
  Set sheet = m_Sheet
End Property

Public Property Set Sheet(Value As Worksheet)
   Set m_Sheet = Value
End Property

Public Sub saveCursheet()
Me.Sheet = ActiveSheet
End Sub

Public Sub activateSheet()
Me.m_Sheet.Activate
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对象引用如何在JavaScript中工作

来自分类Dev

引用对象如何在Java中工作

来自分类Dev

如何通过另一个工作簿中的 VBA 对象名称引用 Excel 工作表?

来自分类Dev

如何在std :: set中存储指向对象的指针(或引用)

来自分类Dev

如何在std :: set中存储指向对象的指针(或引用)

来自分类Dev

如何在函数中引用Excel工作表

来自分类Dev

如何在 sum 命令中引用您所在的工作表

来自分类Dev

如何在VBA中动态引用对象属性

来自分类Dev

如何在VBA中动态引用对象属性

来自分类Dev

VBA Excel从关闭的文件中获取工作簿对象或通过工作表索引引用Excel SQL表

来自分类Dev

如何在 Excel VBA 中自动更改工作表名称

来自分类Dev

如何检索存储在列表中的对象的引用?

来自分类Dev

如何在VBA中的新工作簿中的复制的工作表的名称中添加数字

来自分类Dev

Excel 2013如何在多个工作表中引用数据+随机化表内容?

来自分类Dev

如何在 VBA 中的 sharepoint 上引用存储在 Excel 文件中的单元格值

来自分类Dev

如何使用VBA在Excel中引用表?

来自分类Dev

如何在工作簿的每个工作表中运行此VBA代码?

来自分类Dev

python 引用如何在列表中工作

来自分类Dev

如何在perl6中存储对父对象的引用(从perl5转换)

来自分类Dev

我们如何在指针中存储对对象的引用?

来自分类Dev

如何在通用类数组列表中存储对象并按名称引用Java-Homework

来自分类Dev

如何在QUERY函数中引用另一个工作表?

来自分类Dev

如何在工作表上的所有公式中更改单元格引用

来自分类Dev

如何在QUERY函数中引用另一个工作表?

来自分类Dev

如何在VBA中复制整个工作表并将粘贴转置到另一张工作表中?

来自分类Dev

如何在 Excel 2010 的同一工作簿中的不同工作表中引用 Sheet1 名称?

来自分类Dev

如何在VBA中引用特定的外部应用程序窗口(对象)?

来自分类Dev

如何在NSMutableSets中引用对象

来自分类Dev

如何在事件块中引用“this”对象?

Related 相关文章

  1. 1

    对象引用如何在JavaScript中工作

  2. 2

    引用对象如何在Java中工作

  3. 3

    如何通过另一个工作簿中的 VBA 对象名称引用 Excel 工作表?

  4. 4

    如何在std :: set中存储指向对象的指针(或引用)

  5. 5

    如何在std :: set中存储指向对象的指针(或引用)

  6. 6

    如何在函数中引用Excel工作表

  7. 7

    如何在 sum 命令中引用您所在的工作表

  8. 8

    如何在VBA中动态引用对象属性

  9. 9

    如何在VBA中动态引用对象属性

  10. 10

    VBA Excel从关闭的文件中获取工作簿对象或通过工作表索引引用Excel SQL表

  11. 11

    如何在 Excel VBA 中自动更改工作表名称

  12. 12

    如何检索存储在列表中的对象的引用?

  13. 13

    如何在VBA中的新工作簿中的复制的工作表的名称中添加数字

  14. 14

    Excel 2013如何在多个工作表中引用数据+随机化表内容?

  15. 15

    如何在 VBA 中的 sharepoint 上引用存储在 Excel 文件中的单元格值

  16. 16

    如何使用VBA在Excel中引用表?

  17. 17

    如何在工作簿的每个工作表中运行此VBA代码?

  18. 18

    python 引用如何在列表中工作

  19. 19

    如何在perl6中存储对父对象的引用(从perl5转换)

  20. 20

    我们如何在指针中存储对对象的引用?

  21. 21

    如何在通用类数组列表中存储对象并按名称引用Java-Homework

  22. 22

    如何在QUERY函数中引用另一个工作表?

  23. 23

    如何在工作表上的所有公式中更改单元格引用

  24. 24

    如何在QUERY函数中引用另一个工作表?

  25. 25

    如何在VBA中复制整个工作表并将粘贴转置到另一张工作表中?

  26. 26

    如何在 Excel 2010 的同一工作簿中的不同工作表中引用 Sheet1 名称?

  27. 27

    如何在VBA中引用特定的外部应用程序窗口(对象)?

  28. 28

    如何在NSMutableSets中引用对象

  29. 29

    如何在事件块中引用“this”对象?

热门标签

归档