Vb.net 为什么它不接受赋值运算符?如何修复它

Vb.net 为什么它不接受赋值运算符?如何修复它,vb.net,excel,vba,Vb.net,Excel,Vba,在if not语句中,它表示=操作不是一个数据类型,正如Proputix所说,这不可能是实际的错误消息,但主要问题是在VB中,您没有使用“=”来测试引用类型的标识,我猜“DataSource”是一个引用类型实例,所以您必须使用“is”: Sub searchfilter(ByVal mytextbox As TextBox, ByVal myfield As String) If Not source1.DataSource = ExcelDB.DataSource Then

在if not语句中,它表示=操作不是一个数据类型,正如Proputix所说,这不可能是实际的错误消息,但主要问题是在VB中,您没有使用“=”来测试引用类型的标识,我猜“DataSource”是一个引用类型实例,所以您必须使用“is”:

Sub searchfilter(ByVal mytextbox As TextBox, ByVal myfield As String)
    If Not source1.DataSource = ExcelDB.DataSource Then
        source1.DataSource = ExcelDB.DataSource
    End If
    ExcelDB.DataSource = source1
    Dim searchstring As String = ""
    If mytextbox.Text = "" Then
        source1.RemoveFilter()
    Else
        source1.Filter = myfield & " = '" & mytextbox.Text & "'"
        addquery(myfield & "= '" & mytextbox.Text & "'")
    End If
End Sub
或使用较新的语法:

If Not source1.DataSource Is ExcelDB.DataSource Then
    source1.DataSource = ExcelDB.DataSource
End If

请详细描述您的问题,并将代码格式化为代码。这不是确切的错误消息。什么是
source1
,甚至是
ExcelDB
。什么类型的控件或对象?你不能在一个语句中声明和分配变量(只有常量),所以这不起作用:
Dim searchstring As String=“”
@Rory:实际上你可以,你应该这样做。@DaveDoknjas这也是标记为Excel VBA(这就是我看到它的原因)的原因,你不能在其中。
If source1.DataSource IsNot ExcelDB.DataSource Then
    source1.DataSource = ExcelDB.DataSource
End If