Excel VBA错误 - 标记为受限制的功能或接口。或者该函数使用Visual Basic中不支持的自动化类型

时间:2013-03-17 18:52:41

标签: excel-vba compiler-errors vba excel

我正在VBA中编写一个小分数查找程序,下面的代码给出了标题中的错误,我是VBA的新手,错误指向Excel本身生成的第一行。

Private Sub btnSearch_Click()
    Name = txtSearch.Text
    AmountOfEntries = Range("i10")
    For i = 1 To AmountOfEntries
        If Range("a" + i) = Name Then
            cell = i
        Else
            cell = "Error"
        End If
    Next i

    If cell = "Error" Then
        lblScore.Caption = "Your Username is Incorrect. Please Try Again"
    Else
        lblScore.Caption = "Your Score Is : " + Range("b" + cell)
    End If
End Sub

我的电子表格包含' A'中的名称列表。列然后是' B'中的分数列表。柱。在' I10'有一个字段包含列表中的条目数量。

1 个答案:

答案 0 :(得分:0)

您应该尽量避免使用“名称”,“单元格”等(VBA中的通用术语)作为变量名称。尝试定义变量Dim strName as String, i as Integer, intCell as Integer, intAmountOfEntries as Integer

此外,您的范围语句应更改为使用&并指定您要使用VALUE而不是对象的RANGE方面:

Range("a" & i).ValueRange("b" & intCell).Value

编辑=============

重新评论以下内容:

我认为问题是由于您使用单元格作为整数(行号)和字符串(“错误”)。我会创建一个新变量来检测是否有错误:

Dim blnError as Boolean

然后替换它:

带有cell = "Error"

blnError = True

以下您的If语句需要修改为If blnError = True Then

您能否确认您有一张名为“Sheet1”的工作表?如果没有,那么这就是Sheets("Sheet1")代码不起作用的原因。我通常使用表单的VBA名称 - 在VBE中,您可以看到它们在项目资源管理器中的位置(括号前的名称),您可以使用属性窗口更改它们。然后你只需使用sheetname.Range("A1")