求助 一道VB题

来源:百度知道 编辑:UC知道 时间:2024/06/15 16:53:54
题目是:设计一自定义函数SortStr(str1),将任意输入的一个字符串str1按升序输出。例SortStr(”welcome”)=”ceelmow”
下面是我的代码:
Private Sub Command1_Click()
Dim a As String
a = Text1.Text
Call sortstr

End Sub
Sub sortstr()
Dim i As Integer, b() As Variant
n = Len(Trim(a))
For j = i + 1 To n
For i = 2 To n
b(j) = Mid(a, i, 1)
If b(j) > b(i) Then Temp = b(j): b(j) = b(i): b(i) = Temp
Next i
Text2.Text = Text2.Text & b(j)
Next j
End Sub

但是text2始终显示不出来,会做的同志帮一下忙,万分感谢哈~

你用我这个看看
Private Sub Command1_Click()
Dim s As String
s = Text1.Text
Text2.Text = MySort(s)

End Sub

Function MySort(s As String) As String
Dim A() As String, T As String
ReDim A(Len(s)) As String
For i = 1 To Len(s)
A(i - 1) = Mid(s, i, 1)
Next
For i = 0 To Len(s)
For j = i To Len(s) - 1
If Asc(A(i)) > Asc(A(j)) Then
T = A(i)
A(i) = A(j)
A(j) = T
End If
Next
Next
MySort = Join(A, "")
End Function

关键是你在Sub sortstr() 中处理a这个变量有问题,你的本意是要处理Command1_Click()中的a变量,但是你并没有给sortstr() 传过去,所以text2始终显示不出来。

修改方法是给Sub sortstr()加参数,改为Sub sortstr(a as String),然后在call的时候把a传过去。

为什么sortstr() 中的a没有定义也能用呢?这是VB的特性,VB定义变量可以显示声明和非显示声明,就是用Option Explicit来表示,如果在代码的最前面加Option Explicit这句,那么变量就需要定义才能使用,如果不加这句,不用定义变量就可以使用