在 vba 我得到一个未设置的对象变量(错误 91)

in vba I am getting a Object variable not set (Error 91)

这是我的基本错误或缺乏理解。我在这里搜索了很多问题,但似乎没有任何适用的问题。

这是代码

Option Explicit

Public Function ReturnedBackGroundColor(rnge As Range) As Integer
    ReturnedBackGroundColor = rnge.Offset(0, 0).Interior.ColorIndex
End Function

Public Function SetBackGroundColorGreen()
    ActiveCell.Offset(0, 0).Interior.ColorIndex = vbGreen
End Function

Public Function CountBackGroundColorGreen(rnge As Range) As Integer
    Dim vCell As Range

CountBackGroundColorGreen = 0

For Each vCell In rnge.Cells
    With vCell
        If ReturnedBackGroundColor(vCell) = 14 Then
            CountBackGroundColorGreen = CountBackGroundColorGreen + 1
        End If
    End With
Next
End Function

Public Function GetBackgroundColor() As Integer
Dim rnge As Range

GetBackgroundColor = 3
rnge = InputBox("Enter Cell to get Background color", "Get Cell Background Color")

GetBackgroundColor = ReturnedBackGroundColor(rnge)
End Function

我正在添加最后一个函数,在此之前其他所有功能都在运行,但在该函数的第一条语句中出现错误。

对于错误,可能的修复方法之一是添加对正确库的引用。我不知道要引用的正确库是什么,也找不到包含 InputBox 的库。它是一个 activeX 控件,但我没有在工具-> 参考下拉列表中看到它。我确实检查了 Microsoft Forms 2.0。

我尝试了各种设置语句,但我认为我添加的唯一对象是输入框。

有什么建议吗?

谢谢。

使用application.inputbox,将类型添加为范围并设置返回的范围对象。

Option Explicit

Sub main()
    Debug.Print GetBackgroundColor()
End Sub

Public Function GetBackgroundColor() As Integer
    Dim rnge As Range        
    Set rnge = Application.InputBox(prompt:="Enter Cell to get Background color", _
                                    Title:="Get Cell Background Color", _
                                    Type:=8)        
    GetBackgroundColor = ReturnedBackGroundColor(rnge)
End Function

Public Function ReturnedBackGroundColor(rnge As Range) As Integer
    ReturnedBackGroundColor = rnge.Offset(0, 0).Interior.ColorIndex
End Function