2011-09-28 171 views
1

我有我分配给一个变量组合框:分裂在VB字符串

Dim var as String = ComboBox1.SelectedValue 
Dim name As String = var.Split(",") 

这给我的错误类型“串的1维阵列”的

值不能为转换为字符串

任何有关我哪里出错的想法?

+1

这是vb.net还是vb6? –

+1

@Lance,VB6不支持显示的初始值设定项。 –

+0

@agent,谢谢,我主要用VBA工作,并不确定VB6是否工作。 –

回答

4

Split返回字符串的数组。您的变量需要更改为数组,而不仅仅是一个字符串。

1

名称需要声明为一个数组。

dim name() as string = var.split(",") 

的分裂()方法将分手基于给定字符的字符串,并把每个新创建的串到一个数组并返回它。

这是你的错误信息告诉你:

Value of type '1-dimensional array of string' cannot be converted to String 

该方法返回一个字符串数组,但你试图把它变成只是一个字符串!

编辑:在回答你的答案......

到目前为止,您已经成功地用自己的拆分法拆分字符串。要输出给你的消息框,您需要连接的两个元素以正确的顺序:

msgbox(name(1) & " " & name(0)) 

通知我索引的阵列的两倍!元素1是第一个名字,元素0是最后一个名字。请记住,你的名字是lname,fname格式。传递数组本身并不合理!请记住,数据类型不等于该类型的数组,它们是两个不同的东西。因此,字符串与字符串数组不兼容。但是,数组中的每个单独元素都是一个字符串,因此每个元素都与字符串类型兼容(因为它们是相同的东西)!

+0

当我将Name添加到数组值时,我现在正在收到错误。 “从类型'DataRowView'转换为类型'String'无效。”这是在“Dim var As String = ComboBox1.SelectedValue”行上的运行时 - – user765942

+0

@ user765942通过调用它的.ToString()方法将SelectedValue转换为字符串。 – MGZero

+0

我已经习惯了ToString()方法,但是现在我在运行时遇到了这个错误...“参数'Prompt'无法转换为类型'String'。”这是当我尝试并显示在消息框中的结果 - MsgBox(名称) – user765942

1

我VB是有点生疏,但我认为你必须作出name数组:

Dim name() As String = var.Split(",") 
+0

当我将名称添加到数组值时,我现在正在收到错误。 “从类型'DataRowView'转换为类型'String'无效。”这是在运行时在“Dim var As String = ComboBox1.SelectedValue” – user765942

+2

用'Dim var as String = ComboBox1.SelectedValue.ToString'替换'Dim var as String = ComboBox1.SelectedValue'。 – Blender

0

或者,也许“名”是不是数组,目标是填充“名”的一切直到第一个逗号为止,在这种情况下,修正为:

Dim name as String = var.Split(",")(0) 

注意:假定var不是Nothing。

1
Dim var As String = ComboBox1.SelectedValue 
Dim temp() As String = Split(var, ",", -1, CompareMethod.Binary) 
Dim name As String = temp(0)