由于ActiveX元素,VBA代码不会执行(错误32809)

时间:2015-01-26 15:35:23

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

我有一个文件,其中包含链接到VBA代码的ActiveX元素。这个文件工作正常,直到大约1.5个月前。现在我怀疑它因为MS herehere所述的MS更新问题而停止工作。

到目前为止一切顺利。

运行它的计算机安装了Office 2010。我尽职尽责地检查了更新是否已安装。事实并非如此。

事实上,文章描述了如果安装了更新,ActiveX控件将停止工作。经过进一步的测试,我意识到一些conrols继续工作!所以我认为不可能再这样了......

......然而......似乎确实是问题所在。

我创建并测试了两个文件:一个使用ActiveX控件一个使用表单控件。相同的控件,相同的代码。真的很简单的代码。这是:

Sub Schaltfläche2_Klicken()
    With ActiveSheet
        .Range("a10000").End(xlUp).Offset(1, 0).Select
        Selection = 1000
    End With
End Sub

这两个版本在我自己的计算机上运行得很好,该计算机安装了Excel 2013,MS更新,以及应用文章中引用的修复程序! 然而在2010版本中,它只需要运行Form控件就可以运行!

ActiveX版本创建了 VBA错误32809 !它在.Range行出错了。

我进一步测试了...尝试使用.cells(1,1)引用一个单元格,再次产生相同的错误! Dito可以直接选择.Range("A1")

最后,我尝试录制一个宏。这是有效的,它产生的代码像这样反映了细胞,这是正常的:

ActiveCell.FormulaR1C1 = "10000"

我检查了宏安全设置。一切都被激活了。没有选择“Lotus Compatibility”之类的特殊设置。 “Z1S1”参考样式也不活动。在我看来,这些都不会影响VBA代码,但这是我唯一能想到的东西。

最后,我再也无法用鼠标选择ActiveX元素。当它们继续工作时,我无法选择它们或者右击它们以便菜单出现进行编辑! / p>

所以你有......有谁知道为什么会这样?还有其他人有这个吗?还有什么我能看的吗?我一直在寻找intertubes并做空。

提前致谢!

2 个答案:

答案 0 :(得分:0)

疯狂猜测:FM20.DLL库可能存在问题。 您可以查看

Sub M_snb()
  c00 = Replace(Mid(Environ(6), 9), "\cmd.exe", "\FM20.DLL")
  MsgBox CreateObject("wscript.shell").exec("cmd /c Dir """ & c00 & """").stdout.readall
End Sub

答案 1 :(得分:0)

确定。这是我解决自己问题的非解决方案。

Microsoft告诉您,该问题的解决方案是安装他们在所有其他计算机上发布的错误更新,然后手动修复每个计算机。当然,我没有管理员的权利,也没有时间来实现它。

可悲的是,这让我只能解决问题。 取出所有ActiveX控件并将其替换为Form Controlls。

完成此操作后,我的电子表格,我的所有代码和表单控件都可以在任何excel版本中完美运行。

我真的希望微软提出一个更好的解决方案,因为目前的解决方案对绝大多数人来说都是行不通的。