[英]Excel VBA Workbook_Open Application or Object defined error
我有一个工作簿,一旦打开将运行一个宏。
Private Sub Workbook_Open()
GetPaymentTypes
CreateHyperlinks paymentType, paymentTypeLocation
End Sub
子GetPaymentTypes
和CreateHyperLinks
可以很好地运行(它们在各自的模块中),但是当Workbook_Open运行时,出现“应用程序定义”或“对象定义”错误。
该错误发生在CreateHyperlinks
:
Sub CreateHyperlinks(paymentType, paymentTypeLocation)
' Below errors with Worksheets(1) or Active Sheet, ONLY from Workbook_Open()
With ActiveSheet
.Hyperlinks.Add Anchor:=.Range(paymentTypeLocation), _
Address:="", _
SubAddress:="", _
ScreenTip:="Go to 80 byte population guide for: " & paymentType, _
TextToDisplay:=paymentType
End With
End Sub
对于超链接,我必须引用“ ActiveSheet”,但我似乎无法解决此问题。 非常感谢您提供的任何帮助。
变量paymentType在类模块中定义。 私人付款类型为字符串
有一个函数可以填充一个paymentTypes数组。 然后,我将相关的一个分配给paymentType,并调用将paymentType传递给它的CreateHyperlinks。
“在VBA中是否有一个等效于Getter方法的VBA?”
是的,这里有一个例子
Private mSomeValue As String
Public Property Get SomeValue() As String
SomeValue= mSomeValue
End Property
'A corresponding setter method could look like this'
Public Property Let SomeValue(aValue As String)
mSomeValue = aValue
End Property
因此,正如我们在评论中同意的那样,关于您的变量没有传递给Workbook_open
。
解决您的问题的方法是将变量设置为Public。
示例: Public paymentType as String
实际上,将它们Public
是没有错的。 设置了具有Public属性的变量,并且所有子例程都可以使用它们(不仅是设置该子例程的子例程)。
如果要编写更复杂的子例程,有时需要将它们设置为公共。 无论如何,如果您对数据隐私敏感,则不应使用Excel文件作为数据载体。
可变范围的一些指南: http : //www.excel-easy.com/vba/examples/variable-scope.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.