在这里遇到了一些困难...编码和VBA的新手,使用2013年编写了一个代码而没有意识到我在2010版本上运行后退问题...... Derp ..
我有一个奇怪的问题。
我正在使用工作表(" ...")。激活在工作表之间移动(这样做是为了减少"工作表的数量(" .. 。")。"在我的代码的每一行之前。)
无论如何,除了一个之外,宏没有问题激活所有表格。有问题的工作表是原始按钮运行代码的位置。我似乎也无法使用activex命令按钮(这可能是我的问题的根源)。
注意:我已经尝试过"删除x文件"这是由Windows更新引起的 - 这不是问题的根源,我仍然可以添加新的activex控件等
编辑:我已经通过从ActiveX控件更改为调用调用userform的宏的按钮来解决问题。似乎与该工作表上的ActiveX控件有关,使它无法通过模块激活。有人对此有解释吗?
答案 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")