为什么不用控件数组
for each control in form if control is label then 
  array(i)=control.caption
i=i+1
end if
next 

解决方案 »

  1.   

    三个label应该为一个数组,你才可以这么用。三个label的index分别为0、1、2。
      

  2.   

    label="label"&i
    ====================================================================
    这是一个字符串啊
      

  3.   

    我是这样生成的
    Private Sub Command1_Click()
    Dim frameobject As Object, Lbl As Object
    Set frameobject = Form1.Controls.Add("VB.Frame", "Frame_One")
    frameobject.Visible = True
    frameobject.Caption = "动态创建的Frame"
    frameobject.Width = 3000
    frameobject.Height = 4000
    frameobject.Top = 100
    frameobject.Left = 100
    frameobject.FontSize = 10
      
    Set Lbl = Controls.Add("VB.LABEL", "label1")
      Lbl.Visible = True
      Lbl.Caption = "动态的Label"
      Lbl.Top = 500
      Lbl.Left = 500Set Lbl.Container = frameobject
    End Sub
    请问怎么用循环得到
    label1.caption
    label2.caption
    label3.caption
      

  4.   

    怎么把label="label"&i转换成对象呢?
      

  5.   

    CallByName 函数      执行一个对象的方法,或者设置或返回一个对象的属性。语法CallByName(object, procedurename, calltype,[arguments()])CallByName 函数的语法有以下部分:部分 描述 
    object 必需的;变体型(对象)。函数将要执行的对象的名称。 
    procedurename 必需的;变体型(字符串)。一个包含该对象的属性名称或者方法名称的字符串表达式。 
    calltype 必需的;常数。一个 vbCallType 类型的常数,代表正在被调用的过程的类型。 
    arguments() 可选的:变体型(数组)。 
    说明CallByName 函数用于获取或者设置一个属性,或者在运行时使用一个字符串名称来调用一个方法。在下面的例子中,第一行使用 CallByName 来设置一个文本框的 MousePointer 属性,第二行得到 MousePointer 属性的值,第三行调用 Move 方法来移动文本框:CallByName Text1, "MousePointer", vbLet, vbCrosshair
    Result = CallByName (Text1, "MousePointer", vbGet)
    CallByName Text1, "Move", vbMethod, 100, 100
      

  6.   

    我现在的问题是我这样"label"&i
    得到的label1不是对象呀,怎么把字符串转成对象label1呢