VBA Excel-mso常量为空

VBA Excel-mso常量为空,excel,vba,constants,Excel,Vba,Constants,由于某种原因,我无法在mso中安装contants来工作。我有一个新安装的Excel 2003,我想知道我是否需要包括一些类型的库,它的功能,任何帮助是感激的。以下是一个例子: 这项工作: If sh.Type = 13 Then ' image found msoPicture picIdx = sh.ZOrderPosition ' image index End If 这不是,msoPicure显示为空变量 If sh.Type = msoPicture Then

由于某种原因,我无法在mso中安装contants来工作。我有一个新安装的Excel 2003,我想知道我是否需要包括一些类型的库,它的功能,任何帮助是感激的。以下是一个例子:

这项工作:

  If sh.Type = 13 Then  ' image found msoPicture
    picIdx = sh.ZOrderPosition ' image index
  End If
这不是,msoPicure显示为空变量

  If sh.Type = msoPicture Then  ' image found 
    picIdx = sh.ZOrderPosition ' image index
  End If
下一个

但是,当我查看
sh
内部时,对象类型正确显示
msoPicture


我感到莫名其妙,再多的谷歌也没有把我带到任何地方

msoPicture
是微软Office X.Y对象库的一部分。您需要确保已将其添加为引用

你可以做些什么来检查这个问题:

  • 在对象浏览器中搜索。如果你没有点击,它是不可用的
  • ctrl+space以查看intellisense是否会看到您的对象
  • 始终为您编写的所有代码设置
    Option Explicit
    Tools>Options>Editor>Require Variable Declaration
  • 经常编译。我希望编译按钮随时可用。您可以轻松地将其添加到工具栏
    右键单击工具栏>自定义>命令>调试>编译项目
    (将其拖动到工具栏上的适当位置)

它是否编译?您是否声明了
选项Explicit
?是的,这个程序过去常常在不同的计算机上运行,只是因为vba运行并不意味着当您点击“编译”时它会成功。因为VBA可以被解释,所以在遇到编译错误之前,您可以避免编译错误。@TimWilliams我同意。应该是。那个枚举在另一个库中吗?你认为有冲突吗?也许是偶然发现的……它就在你提到的图书馆里——但只有在没有发现的情况下,它才会丢失。非常感谢。我知道这和推荐信有关,但不知道是哪一个。看起来我没有通用的MS office对象库,相反,我有特定的应用程序MS对象。@user3512822,如TimWilliams所说,除非您取消选中该引用,否则默认情况下应该包括它。这就是我选择的未选中的[图像]()