10 个解决方案
#1
查看index属性
#2
Dim obj As Object
For Each obj In Form1.Controls
Debug.Print obj.Name
Next
'如果有两个控件的名称相同,那就是数组型的
For Each obj In Form1.Controls
Debug.Print obj.Name
Next
'如果有两个控件的名称相同,那就是数组型的
#3
isarray(变量名)
#4
谢谢大家的帮忙,我想我不是上面的意思,我的问题是这样的:
已知条件:字符串text1(5);
要求:在Form上查找是否存在text1(5)这个控件,如果存在,将它的backcolor=rgb(255,0,0)
所以我在遍历controls时,必须先知道controls是否为控件数组,如果是,我在查看是否存在index=5的控件,如果不是控件数组,怎么查看index啊(这样会出错的)。
拜托大家,继续帮忙!
已知条件:字符串text1(5);
要求:在Form上查找是否存在text1(5)这个控件,如果存在,将它的backcolor=rgb(255,0,0)
所以我在遍历controls时,必须先知道controls是否为控件数组,如果是,我在查看是否存在index=5的控件,如果不是控件数组,怎么查看index啊(这样会出错的)。
拜托大家,继续帮忙!
#5
TO mmcgzs(毛毛虫) ,好像isarray(变量名)对控件好像不适用啊!如果是变量的话,是可以的!
#6
dim obj as object
dim sum as long
sum=0
for each obj in form1.controls
if lcase(obj.name)="text1" then
sum=sum+1
if sum>1 then
exit for
end if
end if
next
if sum>1 then
for each obj in form1.controls
if lcase(obj.name)="text1" and obj.index=5 then
obj.backcolor=rgb(255,0,0)
exit for
end if
next
end if
dim sum as long
sum=0
for each obj in form1.controls
if lcase(obj.name)="text1" then
sum=sum+1
if sum>1 then
exit for
end if
end if
next
if sum>1 then
for each obj in form1.controls
if lcase(obj.name)="text1" and obj.index=5 then
obj.backcolor=rgb(255,0,0)
exit for
end if
next
end if
#7
更正
Private Sub Form_Load()
Dim obj As Object
Dim sum As Long
sum = 0
For Each obj In Form1.Controls
If LCase(obj.Name) = "text1" Then
sum = sum + 1
If sum > 1 Then
Exit For
End If
End If
Next
If sum > 1 Then
For Each obj In Form1.Controls
If LCase(obj.Name) = "text1" Then
If obj.Index = 5 Then
obj.BackColor = RGB(255, 0, 0)
Exit For
End If
End If
Next
End If
End Sub
Private Sub Form_Load()
Dim obj As Object
Dim sum As Long
sum = 0
For Each obj In Form1.Controls
If LCase(obj.Name) = "text1" Then
sum = sum + 1
If sum > 1 Then
Exit For
End If
End If
Next
If sum > 1 Then
For Each obj In Form1.Controls
If LCase(obj.Name) = "text1" Then
If obj.Index = 5 Then
obj.BackColor = RGB(255, 0, 0)
Exit For
End If
End If
Next
End If
End Sub
#8
TO liuyanghe111(yang) 估计你的方法也不是最终的解决办法,因为控件text1(0),是存在的,text1控件只有一个元素,就是text1(0),不存在text1(1)、text1(2)……,那按你的算法,它就不是控件数组了,但是它实际上是控件数组!请再帮忙!
#9
我忽略了这个问题,但目前我还没有找到答案,我的这个办法也很笨
#10
有没有办法知道一个form上是否存在某个控件对象,比如能不能判断form1是否存在控件
text1(0)?
text1(0)?
#1
查看index属性
#2
Dim obj As Object
For Each obj In Form1.Controls
Debug.Print obj.Name
Next
'如果有两个控件的名称相同,那就是数组型的
For Each obj In Form1.Controls
Debug.Print obj.Name
Next
'如果有两个控件的名称相同,那就是数组型的
#3
isarray(变量名)
#4
谢谢大家的帮忙,我想我不是上面的意思,我的问题是这样的:
已知条件:字符串text1(5);
要求:在Form上查找是否存在text1(5)这个控件,如果存在,将它的backcolor=rgb(255,0,0)
所以我在遍历controls时,必须先知道controls是否为控件数组,如果是,我在查看是否存在index=5的控件,如果不是控件数组,怎么查看index啊(这样会出错的)。
拜托大家,继续帮忙!
已知条件:字符串text1(5);
要求:在Form上查找是否存在text1(5)这个控件,如果存在,将它的backcolor=rgb(255,0,0)
所以我在遍历controls时,必须先知道controls是否为控件数组,如果是,我在查看是否存在index=5的控件,如果不是控件数组,怎么查看index啊(这样会出错的)。
拜托大家,继续帮忙!
#5
TO mmcgzs(毛毛虫) ,好像isarray(变量名)对控件好像不适用啊!如果是变量的话,是可以的!
#6
dim obj as object
dim sum as long
sum=0
for each obj in form1.controls
if lcase(obj.name)="text1" then
sum=sum+1
if sum>1 then
exit for
end if
end if
next
if sum>1 then
for each obj in form1.controls
if lcase(obj.name)="text1" and obj.index=5 then
obj.backcolor=rgb(255,0,0)
exit for
end if
next
end if
dim sum as long
sum=0
for each obj in form1.controls
if lcase(obj.name)="text1" then
sum=sum+1
if sum>1 then
exit for
end if
end if
next
if sum>1 then
for each obj in form1.controls
if lcase(obj.name)="text1" and obj.index=5 then
obj.backcolor=rgb(255,0,0)
exit for
end if
next
end if
#7
更正
Private Sub Form_Load()
Dim obj As Object
Dim sum As Long
sum = 0
For Each obj In Form1.Controls
If LCase(obj.Name) = "text1" Then
sum = sum + 1
If sum > 1 Then
Exit For
End If
End If
Next
If sum > 1 Then
For Each obj In Form1.Controls
If LCase(obj.Name) = "text1" Then
If obj.Index = 5 Then
obj.BackColor = RGB(255, 0, 0)
Exit For
End If
End If
Next
End If
End Sub
Private Sub Form_Load()
Dim obj As Object
Dim sum As Long
sum = 0
For Each obj In Form1.Controls
If LCase(obj.Name) = "text1" Then
sum = sum + 1
If sum > 1 Then
Exit For
End If
End If
Next
If sum > 1 Then
For Each obj In Form1.Controls
If LCase(obj.Name) = "text1" Then
If obj.Index = 5 Then
obj.BackColor = RGB(255, 0, 0)
Exit For
End If
End If
Next
End If
End Sub
#8
TO liuyanghe111(yang) 估计你的方法也不是最终的解决办法,因为控件text1(0),是存在的,text1控件只有一个元素,就是text1(0),不存在text1(1)、text1(2)……,那按你的算法,它就不是控件数组了,但是它实际上是控件数组!请再帮忙!
#9
我忽略了这个问题,但目前我还没有找到答案,我的这个办法也很笨
#10
有没有办法知道一个form上是否存在某个控件对象,比如能不能判断form1是否存在控件
text1(0)?
text1(0)?