分类:
2009-10-11 11:16:38
来源:cww 经常有人问说: x1=25 x2="ABC" for i = 1 to 2 str5 = "x" + cstr(i) debug.pring &str5 '&str5 想要印出 25与"ABC" next 然而,如果用上面的程序来做,一定会错,&str5 是 XBase的用法,在vb中如何做呢? 这个问题便得使用VB6所提供的Script Control 来模拟XBase的Macro Evaluation (&) ,这个程序只是一个范例,没有 XBase那样的好用,您可以依需要来更动程序。 目前我只提供 字串、数值、日期三大类的Macro Evaluation 。 用法: 首先,将您有可能用上的Variable 以SetVariable()来设定,假设我有四个变数可能 做为Macro Evaluation的对象(分别是test1, test2, test3, test4),於是我给予以下 的设定: Call SetVariable("test1", "50") 'test1 存"50" Call SetVariable("test2", 2) 'test2存 2 Call SetVariable("test3", 3.5) 'test3存3.5 Call SetVariable("test4", CDate("02/01/98")) 'test4存日期 设完之後,用GetStrValue()来取出字串的值。 例如: For j = 1 To 4 str5 = "test" + CStr(j) i = GetStrValue(str5) '分别传入字串"test1", "test2", "test3", "test4" Debug.Print i Next 以下在Form, 需一个CommandBox 与一个Script Control
Private Sub Command1_Click() Dim i, str5 As String, j As Long Call SetVariable("test1", "50") Call SetVariable("test2", 2) Call SetVariable("test3", 3.5) Call SetVariable("test4", CDate("02/01/98")) For j = 1 To 4 str5 = "test" + CStr(j) i = GetStrValue(str5) Debug.Print i Next End Sub '设定做为Macro Evaluation 对象的变数 Private Sub SetVariable(ByVal var1 As String, value As Variant) Dim codestr As String If TypeName(value) = "String" Then codestr = var1 + "=" + """" + value + """" Else If TypeName(value) = "Date" Then codestr = var1 + "= cdate(""" + CStr(value) + """)" Else codestr = var1 + "=" + CStr(value) End If End If ScriptControl1.ExecuteStatement codestr End Sub '传入想取得变数值的字串 Private Function GetStrValue(ByVal souStr As String) As Variant Dim codestr As String Dim i As Variant i = sc.Eval(souStr) If TypeName(i) = "String" Then codestr = "the_StrValue = " + """" + i + """" Else If TypeName(i) = "Date" Then codestr = "the_StrValue = CDate(""" + CStr(i) + """)" Else codestr = "the_StrValue = " + CStr(i) End If End If ScriptControl1.ExecuteStatement codestr GetStrValue = ScriptControl1.Eval("the_Strvalue") End Function |