跪求高手,请教VB的传值问题

我现在遇到一个非常棘手的问题首先我用excel表中的第一行第一列写了这样的字符command1.left其次在vb中dima(100)asstringa(1)=excel... 我现在遇到一个非常棘手的问题
首先我用excel表中的第一行第一列写了这样的字符 command1.left
其次在vb中
dim a(100) as string
a(1) = excel.Cells(1, 1)把excel中的command1.left作为字符串赋给a(1)
然后问题来了
我怎么在vb下读取command1.left作为变量名下的变量值
(PS:在VB中不能出现command1.left,因为数据量巨大,不可能一个一个打)
补充:
如果使用命令 b(1)=ScriptControl.Eval(a(1))
会出错,说 未找到对象command1
a
百度上的高手真多啊,ljl88900的回答比temp_1018更好,使用了callbyname
但我在这里补充下,我的对象不是一个一层的vb控件名,我只是举例
我的变量是类似这样的 ADApp.Simulation.Flowsheet.Streams("R1").T.Value("C")
是一个Object对象(ADAPP)的属性,不知哪位高手可以解决下,小弟感激万分

ps: ADApp是引用的一个类的对象 ,不是VB的控件
Controls("ADApp") 会显示 未找到控件‘Adapp’
Controls(ADApp) 会显示 类型不匹配
展开
 我来答
ljl88900
2009-04-24 · TA获得超过2661个赞
知道大有可为答主
回答量:2197
采纳率:100%
帮助的人:2640万
展开全部
根据反馈,修改如下:
虽然我不知道ADApp是什么控件,但你可以用下面代码试试看:

Dim Obj As Object, b As String, i As Integer
Dim a(100) As String
a(1) = excel.Cells(1, 1) '从excel中读取数据
i = InStrRev(a(1), ".")
b = Trim(Left(a(1), i - 1))
Set Obj = Me.Controls(b)
b = Trim(Mid(a(1), i + 1))
MsgBox CallByName(Obj, b, VbGet) '这就是你想获取的东东
temp_1018
2009-04-26 · 超过22用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:0
展开全部
对于控件是可以的,但属性只能在程序中判断了,参考下例:

Dim obj As Object, a As String, b() As String
a = "command1.left"
b = Split(a, ".")

Set obj = Me.Controls(b(0))
Select Case UCase(b(1))
Case "NAME": a = obj.Name
Case "LEFT": a = obj.Left
Case "TOP": a = obj.Top
Case "RIGHT": a = obj.Right
Case "HEIGHT": a = obj.Height
End Select
MsgBox a

ljl88900回答确实很好。以前都没听说过CallByName函数,暴汗~~ 看来还要深入的学习才行啊...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yhu53603fd94fe
2009-04-24 · TA获得超过7838个赞
知道大有可为答主
回答量:7079
采纳率:55%
帮助的人:2851万
展开全部
定义 Object
或用 for if等间接实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式