vb text内容重复比较

现在有Text4(0),Text5(0),Text6(0),Text7(0),Text8(0),Text9(0)

一,每一个Text最多输入0-9个数(只能输入数字,其他字符与字母不可,如出现msgbox弹出“请输入数字”并删除这个字符),
二,并且在同一Text不能有重复的,如在同一Text输入了相同的,则弹出“有相同的”并把最后一次输入相同的删除,
三,并且Text4(0),Text5(0),Text6(0),Text7(0),Text8(0),Text9(0)每组里的数字也不能和其他组有相同的,如有相同,则弹出“组有相同的”并把相同的删除,
也可以这么理解
就是某一Text,输入完的数字,在其他Text不可用,能用的只能是那几个text没有用的
如Text4(0)输入了012。那么其他5个text,只能选择3456789,如Text5(0)又输入了579,那么其他4个text只能选择3468,这6个text不一定都有数据
有可能一个text输入0123456789,就完事了,不一定每个text里面都有数据的
反正就是单个text里不能有重复的text组之间也不能有重复的,重复就弹出对话并删除

我很笨的,可能不符合你的要求
我用的是vb6,你试试看吧
新建两个text,然后把它们的index属性改成1.
两个离远点

Dim i%, m%
Dim d(1 To 10) As Boolean, f(1 To 10) As Boolean 'd()用来保存十个数字,可以判断是否被引用。若被引用则=true。f用来判断是否是在同一个text内
Private Sub Form_Load() '建立两个控件数组,我实在不知道怎么避免陷入递归所以只好这样
Text1(1) = ""
Text2(1) = ""

For i = 2 To 6
Load Text1(i)
Load Text2(i)
If i > 3 Then
Text1(i).Top = Text1(1).Top + Text1(1).Height + 100
Text1(i).Left = Text1(i).Width * (i - 3) + Text1(1).Left - Text1(i).Width
Text2(i).Top = Text2(1).Top + Text2(1).Height + 100
Text2(i).Left = Text2(i).Width * (i - 3) + Text2(1).Left - Text2(i).Width
Else
Text1(i).Left = Text1(1).Left + Text1(1).Width * (i - 1) + 100
Text2(i).Left = Text2(1).Left + Text2(1).Width * (i - 1) + 100
End If

Text1(i) = ""
Text2(i) = ""
Text1(i).Visible = True
Text2(i).Visible = True
Next i

For i = 1 To 10 '给d()赋值,序号和值一样
d(i) = True
Next i
End Sub
Private Sub Text1_Change(Index As Integer) '和下面的判断相同,分开写是因为文本keypress时还没有输入文本框
If m >= 48 And m <= 57 Then '是数字执行,否则text2无反应
If d(m - 47) = False And f(m - 47) = True Then 'f=true表示在同一组
ElseIf d(m - 47) = False And f(m - 47) = False Then
Else
d(m - 47) = False
f(m - 47) = True
Text2(Index) = Text2(Index) & Chr(m)
End If

End If
End Sub

Private Sub Text1_GotFocus(Index As Integer)
Text1(Index) = "" '方便输入
End Sub

Private Sub Text1_KeyPress(Index As Integer, keyascii As Integer)
m = keyascii
If Not (keyascii >= 48 And keyascii <= 57) Then
MsgBox "请输入数字!"
Else
If d(keyascii - 47) = False And f(keyascii - 47) = True Then 'f=true表示在同一组
MsgBox "有相同的"
ElseIf d(keyascii - 47) = False And f(keyascii - 47) = False Then
MsgBox "组有相同的"
End If
End If
End Sub
Private Sub Text1_LostFocus(Index As Integer)
Erase f() '当换个text时,f()重置
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-15
只能和你说下思路。
一种方法是这样:建一个数组,然后设一个变量,数值随机0到9,
第一次变量随机赋值后,把变量赋值给数组(此时数组只有一个数,下标0)
第二次变量随机赋值,然后与数组里所有值比较,无重复的话,数组新增下标1,赋值这个变量。
第三次变量随机赋值,然后与数组里所有值比较,无重复的话,数组新增下标2,赋值这个变量。
这样一直到你需要的文档个数为止,
然后开始建文档,并存入相应数字。
第2个回答  2009-04-15
用text数组控件

Dim aaa As String

Private Sub Form_Activate()
aaa = "0123456789"
End Sub

Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
If KeyAscii <= 57 And KeyAscii >= 47 Then
If InStr(aaa, Chr(KeyAscii)) Then
aaa = Replace(aaa, Chr(KeyAscii), "")
Else
MsgBox "已输入过"
KeyAscii = 0
End If
Else
MsgBox "请输入数字"
KeyAscii = 0
End If
End Sub本回答被网友采纳