vba的奇怪问题。我正在尝试创建具有表装饰属性的模块。在表单中,用户选择表标题背景的颜色。颜色改变了,但是有错误。 我怎样才能解决这个问题?想法?
DecorationModule:
Private sHeaderTextBackground As Double
Public sHeaderRange As Range
Public Sub initVars()
Set sHeaderRange = Range("A1:F1")
End Sub
Public Property Let HeaderTextBackground(ByVal color As Double)
Let sHeaderTextBackground = color
End Property
Public Property Get HeaderTextBackground() As Double
HeaderTextBackground = sHeaderTextBackground
End Property
代码形式:
Private Sub changeStyleApplyButton_Click()
'Call DecorationModule.initVars
If Application.Dialogs(xlDialogEditColor).Show(40) = True Then
MsgBox (VarType(ThisWorkbook.Colors(40))) '<--- 5 = vbDouble
DecorationModule.HeaderTextBackground = ThisWorkbook.Colors(40) <---Error here
DecorationModule.sHeaderRange.Interior.color = DecorationModule.HeaderTextBackground
End If
答案 0 :(得分:0)
对于将来出现此错误的人员:确保正确命名了Module
,并且没有任何拼写错误。那应该涵盖了大多数错误。
问题是使用了ClassModule
而不是Module
。应将代码粘贴到Module
(具有正确的名称)中,然后代码才能工作。确保在执行代码之前初始化sHeaderRange
。如果要确保仅将其初始化一次,可以将initVars()
子项更改为:
Public Sub initVars()
If sHeaderRange Is Nothing Then
Set sHeaderRange = Range("A1:F1")
End If
End Sub