VB程序修改,考试要用,帮帮忙咯~~~

来源:百度知道 编辑:UC知道 时间:2024/05/25 03:34:21
'题目:修改程序,使程序可以自动适应分隔符是逗号或者空格的情况
Option Explicit
Dim a() As String
Private Sub Command2_Click() ' 将数组a中各元素合并,以空格为分隔符放入Text2中
Text2 = Join(a, " ")
End Sub

Private Sub Form_Load()

End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim S As String * 1
S = Chr(KeyAscii)
Select Case S
Case "0" To "9", ",", ".", "-"
' 0~9, 逗号,负号,小数点 为有效数字串,可以继续输入
Case Else
' 输入非数字字符,去除非法字符,再输入"
KeyAscii = 0
End Select
End Sub
' 方法一: 逗号为分隔符逐一分离,结果放入a字符数组中,并在图形框显示
Private Sub Command1_Click()
Dim i%
Stra = Text1
Lenstra = Len(Stra)
j = InStr(Stra, ",")
Do While j > 0 ' 以逗号为分界符
ReDim Preserve a(i)
a(i) = Val(Left(Stra, j - 1)) '分离出的数据项存入数组
Stra =

假如原程序可以实现 逗号为分隔符逐一分离 的话
修改可能是这样,把:

j = InStr(Stra, ",")
Do While j > 0 ' 以逗号为分界符
ReDim Preserve a(i)
a(i) = Val(Left(Stra, j - 1)) '分离出的数据项存入数组
Stra = Mid(Stra, j + 1) ' 取其余数字串再分离
i = i + 1
j = InStr(Stra, ",")
Loop

改为:

j = InStr(Stra, ",") : k = InStr(Stra, " ")
Do While ((j > 0) Or (k > 0)) ' 以逗号或空格为分界符
ReDim Preserve a(i)
If (j < k) Then
a(i) = Val(Left(Stra, j - 1)) '分离出的数据项存入数组
Stra = Mid(Stra, j + 1) ' 取其余数字串再分离
Else
a(i) = Val(Left(Stra, k - 1)) '分离出的数据项存入数组
Stra = Mid(Stra, k + 1) ' 取其余数字串再分离
End If
i = i + 1
j = InStr(Stra, ",")
k = InStr(Stra, " ")
Loop

但是我认为原程序还有其他的错误:
Private Sub Command1_Click() 中
变量Stra、Lenstra、j均未定义。
且i没有初始化。
a(i) = Val(Left(Stra, j - 1)) 这句中的Val()函数不知道干什么用的,要是我就不会用这