Dim str1 as Objectset str1=Text1

解决方案 »

  1.   

    to foolishtiger
    这种方法不能解决问题,我得str1只能是string,是从其他字符串得到的,而callbyname调用的对象名是str1
      

  2.   

    Dim objTest as Object
    Select Case str1
    Case "Text1"
        Set objTest=Text1
    Case "Text2"
        Set objTest=Text2
    Case Else
        Set objTest=Nothing
    End Select然后引用objTest进行操作.
      

  3.   

    参考这个
    Private Sub Command1_Click()
        Dim objTest As Object
        Dim strT1 As String
        Dim strT2 As String
        strT1 = Text1.Text
        strT2 = Time
        For Each objTest In Form1
            If objTest.Name = strT1 Then
                w ByVal objTest, strT2
                Exit For
            End If
        Next
    End Sub
    Private Function w(ByVal l As Object, l2 As String)
        l.Caption = l2
    End Function
      

  4.   

    to foolishtiger
    case语句有多少分支是不知道的,所以这样也不能解决问题
      

  5.   

    其实这个困难是由你的callbyname过程造成的.你应该把精力花在怎么样把callbyname改得更合理.不要在这些牛角尖上浪费时间.
      

  6.   

    callbyname是微软的过程,如果能改的话就好了
      

  7.   

    你甭找了,没有解决的办法。不过yangzhaoyu(老妖) 的方法是可以的,我就是这么实现一个通用的增删改程序的。
    不过最好把对象的名称,写到数据库里。
      

  8.   

    我的问题和于明刚是一样,就是从数据库里取出对象的名称的,但取出时是STRING类型,所以就碰到怎样转换成对象的问题了。
    于明刚能说得详细点吗?老妖的程序一时没有看懂
      

  9.   

    你可以这样做,把控件的名称写在一个表里,还有这个控件对应的方法(如果有必要的话)。
    举个例子:比如说你有一个FORM,FORM里有一个控件名称是A,A有一个属性是TEXT,现在你要通过数据库里的记录和通用的程序给这个控件赋值。那么,首先从数据库里按一定条件取出一条记录,得知控件的名称和属性,那么可以在此FORM里用FOR EACH,来循环所有控件,用FORM里的每个控件的名称和数据库里取出的控件名称进行比较。如果相同那么使用CALLBYNAME,通过数据库里取出的控件名称和属性/方法,进行取值/赋值/调用方法的操作。我个人体会是进行方法的调用是比较实际而可用的,进行通用增删改也是一种比较好的方法。