ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 24527|回复: 37

[讨论] 用vba编写VBA代码的解释器(最新:程序已共享)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-3-9 09:19 | 显示全部楼层 |阅读模式
常常看到坛子里有人需要对写好的VBA代码进行解释,今日突然冒出个念头,不知有没有高手愿意用vba写一个vba代码的解释工具,实现的类似如下的效果,可对常见函数及语句进行解释:

Private Sub Worksheet_Change(ByVal Target As Range)   '当工作表发生改变时执行程序
If Target.Address = "$A$1" Then   '如果发生改变的单元格地址是$a$1则执行下面语句
    Application.ScreenUpdating = False  '关闭屏幕刷新(主要是为了提高运行速度)
    UsedRange.EntireRow.Hidden = False   '显示隐藏行
    For i = 3 To Range("A65536").End(xlUp).Row    '设定循环变量i的值等于3到a列最大行号
        If Cells(i, 1) <> [A1] And Cells(i, 3) <> [A1] Then Rows(i).Hidden = True    '如果a列和c列单元格的值同时都不等于a1的值则该行隐藏
    Next i   '下一个i的值
    Application.ScreenUpdating = True   '打开屏幕更新
End If   '判断结束
End Sub   '程序结束

我想原则上是可以实现的,但函数及语法数据会相当大,最好多人分工配合来搞

PS:本人乃VBA后进,且所从事之职业与其没多大关系,来坛子里泡了许久,得益良多,然自知对各位前辈高人无力帮助,只好发扬其精神

助人为乐,受助开心

Private Sub Worksheet_Change(ByVal Target As Range)       '当工作表发生改变时执行本程序
If Target.Address = "$A$1" Then       '如果Target的地址="$A$1" 则执行
    Application.ScreenUpdating = False      'Application的屏幕刷新=False
    UsedRange.EntireRow.Hidden = False       '已使用区域的整个行的隐藏=False
    For i = 3 To Range("A65536").End(xlUp).Row        '设定变量范围为i=3到单元格范围("A65536")的末端(方向向上)的行标
        If Cells(i, 1) <> [A1] And Cells(i, 3) <> [A1] Then Rows(i).Hidden = True      '如果单元格集合(i,1)不等于[A1]并且单元格集合(i,3)不等于[A1] 则执行 行数(i)的隐藏=True
    Next i    '下一个i
    Application.ScreenUpdating = True       'Application的屏幕刷新=True
End If       '判断过程结束
End Sub       '子程序结束

以上是本人这两天写的一个翻译示例程序翻译出的结果,还在进一步扩大关键词库中,如果有人有VBA的保留字库,请分享一下,我现在是看到什么输入什么,很乱

希望这样大家能看到希望,在不久将来我会将拿得出手的文件共享出来

程序已共享,请到下面地址下载
http://club.excelhome.net/thread-547868-1-1.html

[ 本帖最后由 kevinchengcw 于 2010-3-16 18:06 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-3-9 09:39 | 显示全部楼层
顶起来,关注中..................
对于VBA菜鸟来说,最好了

TA的精华主题

TA的得分主题

发表于 2010-3-9 10:25 | 显示全部楼层
原帖由 kevinchengcw 于 2010-3-9 09:19 发表
常常看到坛子里有人需要对写好的VBA代码进行解释,今日突然冒出个念头,不知有没有高手愿意用vba写一个vba代码的解释工具,实现的类似如下的效果,可对常见函数及语句进行解释:

Private Sub Worksheet_Change(By ...


楼主你自己愿意弄不?
这种东西要么永远也弄不完,要么就是搞出来后一测试很多乱套的。

TA的精华主题

TA的得分主题

发表于 2010-3-9 10:25 | 显示全部楼层
翻译一下
   1: Option Explicit   2:     3: Sub Test()   4:     Dim strPhone As String   5:        6:     strPhone = “719-499-2312″   7:        8:     If qstr_BeginsWith(strPhone, “719″) Then   9:         Debug.Print “yes”  10:     Else  11:         Debug.Print “no”  12:     End If  13:       14: End Sub  15:    16: Function qstr_BeginsWith(strMain As String, strPart As String) As Boolean  17:     Dim reg As New VBScript_RegExp_55.RegExp  18:     reg.Pattern = strPart  19:     qstr_BeginsWith = reg.Test(strMain)  20: End Function

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-9 10:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 joforn 于 2010-3-9 10:25 发表


楼主你自己愿意弄不?
这种东西要么永远也弄不完,要么就是搞出来后一测试很多乱套的。


如果有人牵头,找几个志同道合的,我倒是很愿意参予其中,只弄些常用的就行了,到了后期基本自己都能看懂了,其实主要还是面对新手的

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-9 10:48 | 显示全部楼层
原帖由 IF_8_THEN_OK 于 2010-3-9 10:25 发表
翻译一下
   1: Option Explicit   2:     3: Sub Test()   4:     Dim strPhone As String   5:        6:     strPhone = “719-499-2312″   7:        8:     If qstr_BeginsWith(strPhone, “719″) Then   9: ...


会用正则的人就不要问了吧,这都是老鸟了,还会看不懂,看不懂的是新手,自然也不会用正则

TA的精华主题

TA的得分主题

发表于 2010-3-9 10:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
怎么好像不太对啊 老是红色提示

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-9 10:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 zhengrui-csb 于 2010-3-9 10:57 发表
怎么好像不太对啊 老是红色提示


楼上是不是发错地方了????

TA的精华主题

TA的得分主题

发表于 2010-3-10 09:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
没有 我把 你的代码 一运行 就有好几句都是红色……
错误.JPG

TA的精华主题

TA的得分主题

发表于 2010-3-10 09:40 | 显示全部楼层
再回复八楼  我确实不会使 您能不能给我讲讲怎么用啊  说不定我……谢谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 07:46 , Processed in 0.048423 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表