如何将字符串变量转为控件名称,对相应控件进行操作

Dreamia 2007-01-17 05:48:02
我希望能够写一个搜索功能的公用窗体,别的地方可以调用这个窗体,并把调用位置通过字符串变量TG告诉它。这个窗体操作完,将结果返回给调用位置。
例如,字符串TG="frmMain.txtFileName",表示是frmMain窗体的txtFileName调用搜索窗体。那么搜索窗体应该把结果返回给frmMain.txtFileName。
这个结果(或者说对调用位置的操作)可能比较复杂,我希望能有一个简单的办法,比如JS语言的eval(字符串变量)这样的方式。vb里面是否有对应的语法?谢谢!
...全文
536 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dreamia 2007-02-01
  • 打赏
  • 举报
回复
我将vba6.dll复制到工程所在的目录下,但是一旦执行到运行ebexecuteline的地方,程序就自动关闭!why?
zyg0 2007-02-01
  • 打赏
  • 举报
回复
vba6.dll
zyg0 2007-02-01
  • 打赏
  • 举报
回复
打包必须把vba运行库打进去
Dreamia 2007-02-01
  • 打赏
  • 举报
回复
to zyg0(影子(加班,加班,再加班)
我采用了您的方法,在设计过程中一切正常,但是生成了EXE后,执行时提示找不到vba6.dll,然后程序就自动关闭,这是为什么,应该怎样处理?
zyg0 2007-01-18
  • 打赏
  • 举报
回复
这个是api和eval类似 声明放在模块中就行
Dreamia 2007-01-18
  • 打赏
  • 举报
回复
楼上两位误解了我的意思!
我是想把字符串传递给一个窗体,由窗体来执行相应代码。代码可能很复杂,单纯用循环判断或者if之类的是不顶用的。我需要的是类似ASP里面的语法:Excute(字符串)这样的方式。

zyg0(影子(加班,加班,再加班):
EbExecuteLine StrPtr("dim a as long,b as long,c as long"), 0, 0, 0
我要的就是这样的,这个EbExecuteLine 能否具体说一下?感觉这个比较接近我的要求!
它是否要调用其他库,或者是自定义函数?
wakwakvb 2007-01-18
  • 打赏
  • 举报
回复
Public Sub Search(searchStr As String)
Dim splitStr() As String
Dim frmName As String
Dim controlName As String
Dim obj As Object
Dim frm As Object

splitStr = Split(searchStr, ".")
frmName = splitStr(0)
controlName = splitStr(1)

For Each frm In Forms
If frm.Name = frmName Then
For Each obj In frm.Controls
If obj.Name = controlName Then
obj.Text = "ok"
Exit For
End If
Next obj
Exit For
End If
Next frm
End Sub

调用方法:公用窗体.Search("frmMain.txtFileName")

这里只考虑text控件,其他控件只需用 typeof判断类型后区别对待就可以了
ceagle 2007-01-18
  • 打赏
  • 举报
回复
Dim chkbox As CheckBox
Set chkbox = Me.Controls.Add("vb.CheckBox", "chkName")

不知道是不是这意思
zyg0 2007-01-17
  • 打赏
  • 举报
回复
Option Explicit

Private Declare Function EbExecuteLine Lib "vba6.dll" ( _
ByVal pStringToExec As Long, _
ByVal Unknownn1 As Long, _
ByVal Unknownn2 As Long, _
ByVal fCheckOnly As Long) As Long

Private Sub Form_Load()
EbExecuteLine StrPtr("dim a as long,b as long,c as long"), 0, 0, 0
EbExecuteLine StrPtr("a=" & 3), 0, 0, 0
EbExecuteLine StrPtr("b=" & 5), 0, 0, 0
EbExecuteLine StrPtr("c=" & 2), 0, 0, 0
EbExecuteLine StrPtr("clipboard.settext (a+b)/c"), 0, 0, 0
MsgBox Clipboard.GetText
End Sub

7,786

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧