无法激活特定工作表但我可以激活其他工作表:S

时间:2015-08-19 03:44:58

标签: excel vba excel-vba excel-2010 excel-2013

在这里遇到了一些困难...编码和VBA的新手,使用2013年编写了一个代码而没有意识到我在2010版本上运行后退问题...... Derp ..

我有一个奇怪的问题。

我正在使用工作表(" ...")。激活在工作表之间移动(这样做是为了减少"工作表的数量(" .. 。")。"在我的代码的每一行之前。)

无论如何,除了一个之外,宏没有问题激活所有表格。有问题的工作表是原始按钮运行代码的位置。我似乎也无法使用activex命令按钮(这可能是我的问题的根源)。

注意:我已经尝试过"删除x文件"这是由Windows更新引起的 - 这不是问题的根源,我仍然可以添加新的activex控件等

编辑:我已经通过从ActiveX控件更改为调用调用userform的宏的按钮来解决问题。似乎与该工作表上的ActiveX控件有关,使它无法通过模块激活。有人对此有解释吗?

1 个答案:

答案 0 :(得分:0)

我没有回答为什么你无法激活工作表,并且不认为我可以在不查看相关工作簿的情况下回答它。但是,我可以帮你避免首先使用激活;)

根据您的说明,您似乎正在使用Worksheet(index).Activate,因此您可以使用ActiveSheet.SomeMember来处理工作表对象。

如果是这样,您可以使用with block节省时间并提高程序效率。

例如:

With Worksheets("...")
    Debug.Print "working with """ & .Name & """."
    Debug.Print "which belongs to """ & .Parent.Name &  """."
End With

如果您需要在多个地方引用它,我建议将对象分配给变量。

E.g:

Dim MySheet as Worksheet 
Set MySheet = Worksheets("...")

With MySheet
    'Do something 
End With

MySheet.range("A:A").Copy Destination:= WorkSheets("Someothersheet").Range("B:B")