你好,我想聊天,我在互联网上搜索,我最终找到了可能有用的东西。但现在我得到一个错误的名称,它说变量名称在分配值
之前使用代码:
Public Sub findForm1()
If Trim(Mid(My.Forms.Private1.Text, My.Forms.Private1.Text.Length - 2)) = formNo Then
My.Forms.Private1.RichTextBox1.Text = My.Forms.Private1.RichTextBox1.Text & poruka + vbCrLf
ElseIf Trim(Mid(My.Forms.Private2.Text, My.Forms.Private2.Text.Length - 2)) = formNo Then
My.Forms.Private2.RichTextBox1.Text = My.Forms.Private2.RichTextBox1.Text & poruka + vbCrLf
Else
If My.Forms.Private1.Visible = False Then
Dim name As String
For i As Integer = 1 To poruka.Length
If Mid(poruka, i, 2) = ": " Then
Exit For
name = name & Mid(poruka, i, 1)
End If
Next
My.Forms.Private1.Show()
My.Forms.Private1.Text = Trim(name) & " " & br
My.Forms.Private1.RichTextBox1.Text = My.Forms.Private1.RichTextBox1.Text & poruka + vbCrLf
Else
Dim name As String
For i As Integer = 1 To poruka.Length
If Mid(poruka, i, 2) = ": " Then
Exit For
End If
name = name & Mid(poruka, i, 1)
Next
My.Forms.Private2.Show()
My.Forms.Private2.Text = Trim(name) & " " & br
My.Forms.Private2.RichTextBox1.Text = My.Forms.Private2.RichTextBox1.Text & poruka + vbCrLf
End If
End If
formNo = Nothing
poruka = Nothing
End Sub
我该如何解决这个错误? 我已经尝试移动结束,如果并改变其他一些如果。 但仍未找到合适的代码PLEAS HELP。
答案 0 :(得分:2)
是的,编译器绝对正确。您的代码中的问题可以简化为:
Dim name as String
name = name & "Foo"
您尝试将name
的当前值与另一个字符串(“Foo”)连接 - 但name
>一个值。
您可以将其更改为:
Dim name as String = ""
name = name & "Foo"
...但你最好使用StringBuilder
。例如,您的第一个循环可能是:
Dim nameBuilder As StringBuilder = New StringBuilder()
For i As Integer = 1 To poruka.Length
If Mid(poruka, i, 2) = ": " Then
Exit For
nameBuilder.Append(Mid(poruka, i, 1))
End If
Next
My.Forms.Private1.Show()
My.Forms.Private1.Text = Trim(nameBuilder.ToString()) & " " & br
答案 1 :(得分:0)
问题是有几种情况可能会导致您的变量从未被初始化。要修复,只需提供默认值,例如
Dim Name As String = ""
另外,你要重新声明两次相同的变量,你只需要这样做一次,如果你需要它为下一个循环“空白”或者使用2个单独的变量(即更具体地命名),只需再次清除它)而不是。