类属性错误“需要对象”,但工作正常

时间:2019-05-14 10:23:02

标签: excel vba

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

1 个答案:

答案 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