dim ws as workheet set ws = ActiveSheet给我“Type Mismatch”

时间:2014-07-28 17:48:14

标签: excel-vba vba excel

我希望有一个无模型表单,可以对当前工作表执行某些操作。 当我在定义表单的同一工作簿中的工作表上使用它时,一切正常。 (ActiveSheet表示当前工作表)。

当我在有不同的活动工作簿时尝试使用表单时会出现问题,当我单击某个表单时,它会立即激活定义它的工作簿,并且ActiveSheet不再适用于我。它很奇怪:

dim ws as worksheet
set ws=ActiveSheet

给了我"类型不匹配"

debug.print ActiveSheet.Name ' prints the name of the original worksheet
debug.print ActiveSheet.Parent.Name ' prints the name of the workbook where form is defined

这是Excel 2013。 我想我能够在以前的版本中做到这一点。这种能力丢失了吗?

2 个答案:

答案 0 :(得分:4)

如果图表或其他非工作表有效

,则会发生这种情况

答案 1 :(得分:3)

Dim ws as worksheet
Set ws= ThisWorkbook.ActiveSheet