Vba 我需要修正这行,它说需要对象:如果FullName.Contains(";,";),那么

Vba 我需要修正这行,它说需要对象:如果FullName.Contains(";,";),那么,vba,Vba,我需要修正这行,它说需要对象: 如果FullName.包含(“,”),则 这是我的代码: Private Sub retrieveinput_Click() FullName = inputText.Text Dim NameArray() As String If FullName.Contains(",") Then NameArray = Split(FullName, ",") First = NameArray(1)

我需要修正这行,它说需要对象: 如果FullName.包含(“,”),则

这是我的代码:

Private Sub retrieveinput_Click()
     FullName = inputText.Text
     Dim NameArray() As String

     If FullName.Contains(",") Then
         NameArray = Split(FullName, ",")
         First = NameArray(1)
         Last = NameArray(0)
     Else
         NameArray = Split(FullName)
         First = NameArray(0)
         Last = NameArray(1)
     End If

     TextBox2.Text = First
     TextBox3.Text = Last

End Sub

“需要对象”之类的错误通常意味着您错过了某个作业。在这种情况下,如果错误在线路上

If FullName.Contains(",") Then
则FullName为null或尚未定义。这可能是由于以下原因:

  • inputText不是变量或控件
  • 文本不是inputText的属性或方法
  • inputText。文本值为空
  • 在这些情况下,首先要检查的是您尝试访问的变量是否有值(即非空)

    您不能这样做:

    Dim foo As String
    foo = "foobar"
    
    If foo.Contains("bar") Then
    ...
    
    这不是VB.NET,字符串不是VBA中的对象,因此没有要调用的
    Contains
    方法。VBA执行此操作的方法是使用
    InStr
    函数,如下所示:

    If InStr(FullName, ",") > 0 Then
    
    Public Function Contains(ByVal string_source As String, ByVal find_text As String, Optional ByVal caseSensitive As Boolean = False) As Boolean
    
        Dim compareMethod As VbCompareMethod
    
        If caseSensitive Then
            compareMethod = vbBinaryCompare
        Else
            compareMethod = vbTextCompare
        End If
    
        Contains = (InStr(1, string_source, find_text, compareMethod) <> 0)
    
    End Function
    
    见此帖:

    您还可以使自己成为如下所示的助手函数:

    If InStr(FullName, ",") > 0 Then
    
    Public Function Contains(ByVal string_source As String, ByVal find_text As String, Optional ByVal caseSensitive As Boolean = False) As Boolean
    
        Dim compareMethod As VbCompareMethod
    
        If caseSensitive Then
            compareMethod = vbBinaryCompare
        Else
            compareMethod = vbTextCompare
        End If
    
        Contains = (InStr(1, string_source, find_text, compareMethod) <> 0)
    
    End Function
    

    好的,谢谢你的编辑,但我仍然在vba excel中的同一行中得到错误:If FullName.Contains(“,”),那么这是vba还是VB.NET?在我生成If语句之前,它对else语句有效。我将我的名字输入文本,点击我的按钮,它将名字分割成另外两个文本框,但当使用逗号时,它不会在出现错误的行上设置断点-然后检查inputText.text的值。如前所述,请确保Dim FullName在您的方法中(或在范围外)使用之前已存在。我对此一无所知,它是向我抛出的,并且不是线条左侧边距中的CS majorClick(应显示红色圆圈),或者选择线条并按F9,或者右键单击该行并选择breakpoint—根据您使用的环境,有许多方法可以实现这一点。然后在调试模式下运行它,程序将在断点处暂停执行。除了在调试模式下运行之外,还得到了吗?当它是红色的时候,我正常地运行它,没有什么不同的事情发生