Foxtable(狐表)用户栏目专家坐堂 → VBA代码中的 set 语句,在Foxtable中有替代的用法吗?


  共有2518人关注过本帖树形打印复制链接

主题:VBA代码中的 set 语句,在Foxtable中有替代的用法吗?

帅哥哟,离线,有人找我吗?
wcs
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1042 积分:7475 威望:0 精华:0 注册:2008/8/31 22:52:00
VBA代码中的 set 语句,在Foxtable中有替代的用法吗?  发帖心情 Post By:2018/8/28 18:45:00 [只看该作者]

比如,在VBA中,有这样的代码:
 Set tbs = Selection.Tables

意思是把选定区域内的表集合,赋值给名为tbs的变量,在以后的代码中直接用tbs变量,如:
tbs.Item(i)..Range.Find.Text = " "
tbs.Item(i)..Range.Find.Replacement.Text = ""   ’文本中要删除的字符
tbs.Item(i)..Range.Find..Execute Replace:=wdReplaceAll '全部删除

在Foxtable中没有SET语句了,在Foxtable中该如何写代码达到相同的目的?
用with     end with

还是直接用  object 对象

还是有别的方法?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/28 18:57:00 [只看该作者]

直接用

 

Dim tbs = xxxxxxxxx

 


 回到顶部
帅哥哟,离线,有人找我吗?
wcs
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1042 积分:7475 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2018/8/29 10:17:00 [只看该作者]

谢谢!

我写定了这段代码,但是达不到想要的效果,能帮忙看下哪儿出了问题吗?

Dim tbs = _app.Selection.Tables '对表格进行排版
For i = 1 To tbs.Count ’历遍选定区域中的WORD表
    Application.DoEvents ’屏幕步步更新
    If Forms("窗口1").Controls("CheckBox9").checked = True Then ’如果在窗口有这个选项
        tbs.Item(i).Range.Find.Text = "AHE" ’要删除的字符
        tbs.Item(i).Range.Find.Replacement.Text = ""   '清空
        output.show(tbs.Item(i).Range.Find.Text) '我想看下变量是不是被正确地用了
        output.show(tbs.Item(i).Range.Find.Replacement.Text)
                    tbs.Item(i).Range.Find.Execute(Replace:=MSWord.WdReplace.wdReplaceAll) ’这是个参数,全部替换的意思,写法应是对的与上次我作的一样
        output.show("是")
        output.show(i)
        output.show(tbs.Count)
    End If
Next

在代码运行窗口显示output.show()的内容如下:


1
2

前面的两个output.show()没有正确地引用   AHZ    和""
在执行这段代码时达不到清除所有的AHZ的目的,不知代码中哪儿有问题?请教了!

上述代码与原来VBA中的结构基本一样,我在想是不是range这儿有点问题?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/29 10:43:00 [只看该作者]

参考代码

 

Dim _app As New MSWord.Application
Dim doc = _app.Documents.open("d:\test.doc")
Dim tbs = Doc.Tables '对表格进行排版
For i As Integer = 1 To tbs.Count '历遍选定区域中的WORD表
    Application.DoEvents '屏幕步步更新
    Dim tb = tbs(i)
    tb.Range.Select
    _app.Selection.Find.Text = "AHE" '要删除的字符
    _app.Selection.Find.Replacement.Text = ""   '清空
   
    _app.Selection.Find.Execute(Replace:=MSWord.WdReplace.wdReplaceAll) '这是个参数,全部替换的意思,写法应是对的与上次我作的一样
    output.show("是")
    output.show(i)
    output.show(tbs.Count)
Next
_app.visible = True


 回到顶部
帅哥哟,离线,有人找我吗?
wcs
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1042 积分:7475 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2018/8/29 11:44:00 [只看该作者]

谢谢!经测试有效。

我理解上述代码与我以前的代码的区别是:先用tb.Range.Select,再次选定区域!

不再用range,因为先前选定的系统没有识别出来。

 回到顶部