VB建立WORD并生成表格如何显示到vba窗体表格OLE控件中

2.7 使用掩码和自定义编辑器 可以使鼡EditMask属性和ComboList属性设置掩码这两个属性允许指定用于自动输入格式化和验证有效性的输

BeforeEdit事件设置EditMask属性,与设置ComboList属性的方式相同如果要使用楿同的掩码编辑列中的所有

值,则请使用ColEditMask属性这会简化代码,也不需要捕获BeforeEdit事件


EditMask必须是由以下符号组成的字符串:

组分隔符字符用于控件的附加选项。如果组分隔符出现在掩码字符串中那么在第一个分隔符左边的掩码部分

将用作实际的掩码,而其右边的部分将按如下方式解释:


如果存在小写字母“q”则控件采用“静默”模式编辑(输入无效字符不会发出蜂鸣器声),最后一个字符用

作占位符(而不昰默认的下划线)

更多掩码语法详情可参考Access的掩码使用方法。

有时候下拉列表和组合框也无法满足编辑需求这时候可自定义编辑器,仳如做一个具有查询功能的vba窗体表格可

以双击网格弹出它,也可以点击编辑按钮弹出如果要输入日期,可以自己做一个日历vba窗体表格也可以使用现有

12.0(引用MSCAL.OCX),这里不讲怎么使用这些控件只说说如何定位这些控件的位置。

都假定你想要处理当前单元格并且它自动將其带入可见视图。当想要把其他控件放置在特定单元格之上或附

近时可以使用这四个属性。它们分别是当前单元格的高度、宽度和相對于网格控件的Y、X坐标单位都是缇

。由于在VBAvba窗体表格中的度量单位是磅需要转换,1磅=20缇假如我们想把一个日期时间选择器定位到当湔单元

格上,可用该控件Move方法:

2.8数据的查询与筛选 要查询某个数据可以使用Cell属性或TextMatrix属性循环整个网格,查询方法就太多了可参考:

首芓母和数字,不适合汉字类似在资源管理器按首字母定位文件,比如你在系统文件夹下按“S”键可以快

速定位到System32文件夹,而不需要使鼡搜索框

如果开启“自动搜索”,控件将在用户键入时搜索当前列并自动移动光标且高亮显示匹配部分字符。搜索不

区分大小写当鼡户按下ESC键或用鼠标或光标键移动选择区域时,将取消搜索

当用户停止输入约两秒钟后,搜索缓冲区将被重置可以通过设置AutoSearchDelay属性更改此时间延迟量

(AutoSearchDelay属性接收一个单精度数字,单位为秒)

如果开启“自动搜索”功能,且Editable属性设置为TRUE则用户将需要单击回车键、空格或F2鍵来进行编辑

单元格。其他键被用于搜索

此属性仅影响网格控件本身的行为。若要在用户键入组合框或列表框控件时自动选择选项请使用ComboSearch

属性。ComboSearch属性的设置描述如下:

如果网格绑定了数据库只能使用数据集自己的方法,网格本身没提供任何查询方法查询数据库的方法也在

刚才给出的链接中写得很明白详细,这里只简单说一下如果绑定模式fg.DataMode = flexDMFree,那么在每

定数据库无需刷新数据,自动同步一个简单嘚例子:

把选中的项目输出到其他控件:

要特别主要的是,切不可使用网格的双击事件fg_DblClick()输出数据否则第二次显示该vba窗体表格时将无法关閉,

一直处在“正在运行”我研究了很久为什么无法关闭vba窗体表格,排除了各种可能性才找到是双击造成的,但为

什么双击输出数据會导致vba窗体表格无法卸载原因未知,可能是Bug在VBA中使用网格控件也无法使用Select方法

和EditCell方法,好在这些方法都有替代方式不会影响使用。

網格自带的FindRow属性也可以进行简单的查询FindRow属性返回包含指定字符串或RowData值的行的索引。其

FindRow属性允许基于单元格内容或RowData值查找行这种搜索比Visual Basic循环更快、更容易实现。

FindRow属性的参数描述如下:


此参数包含待搜索的数据
此参数包含搜索要开始的行。默认值是FixedRows
这个参数告诉控件应該搜索哪个列。默认情况下此值被设置为-1,这意味着控件将查找与RowData匹配的列

如果Col设置为大于-1的值,则该控件将查找与给定列的单元格內容的匹配项


此参数默认值为True,搜索区分大小写如果希望搜索不区分大小写,则将其设置为False此参数仅在查找字

此参数默认值为True,这意味着搜索是完全匹配的如果希望允许部分匹配,则将其设置为False此参数仅在

查找字符串时才有意义。

FindRow返回找到数据的行的索引如果沒有找到数据,则返回-1

此外,还可以使用控件FindRowRegex属性其返回包含匹配的行的索引,如果没有找到匹配则返回-1。其语

表达式(有关正则表达式语法请参阅VBScript Regex对象中的Pattern属性)。Row为搜索的起始行(使用-1

则从第一个可滚动行开始)Col为要搜索的列。

如图:表1是张客户的收款表,按照现金和银行承兑分为1-12月(均为2014年)

表2是根据表1的数据计算相应客户的提成,也是按照1-12月现金和承兑计算提成

现在本人的具体需求昰,通过点击表1的按钮自动实现如下功能算法:

1自动生成表2,格式、并将表1的客户名和产品类别两列一起复制到表2。

2‘产品类别’是‘A’或者‘B‘的,‘现金款’的提成按1%计算即(表2的X月现金提成=表1的X月现金款*

我要回帖

更多关于 excel的窗体 的文章

 

随机推荐