如何判断一个变量是数组类型的还是非数组类型的?

时间:2021-02-09 20:39:40
我的Form上有一些控件,其中有些是控件数组,有些不是,我想知道哪些控件是数组类型的,哪些不是,不知道有没有什么函数或控件属性,可以判断出其中某个控件是数组类型的还是非数组类型的?谢谢!

10 个解决方案

#1


查看index属性

#2


Dim obj As Object
    
    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啊(这样会出错的)。
拜托大家,继续帮忙!

#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

#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

#8


TO  liuyanghe111(yang) 估计你的方法也不是最终的解决办法,因为控件text1(0),是存在的,text1控件只有一个元素,就是text1(0),不存在text1(1)、text1(2)……,那按你的算法,它就不是控件数组了,但是它实际上是控件数组!请再帮忙!

#9


我忽略了这个问题,但目前我还没有找到答案,我的这个办法也很笨

#10


有没有办法知道一个form上是否存在某个控件对象,比如能不能判断form1是否存在控件
text1(0)?

#1


查看index属性

#2


Dim obj As Object
    
    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啊(这样会出错的)。
拜托大家,继续帮忙!

#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

#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

#8


TO  liuyanghe111(yang) 估计你的方法也不是最终的解决办法,因为控件text1(0),是存在的,text1控件只有一个元素,就是text1(0),不存在text1(1)、text1(2)……,那按你的算法,它就不是控件数组了,但是它实际上是控件数组!请再帮忙!

#9


我忽略了这个问题,但目前我还没有找到答案,我的这个办法也很笨

#10


有没有办法知道一个form上是否存在某个控件对象,比如能不能判断form1是否存在控件
text1(0)?