ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] VB代码缩进排版

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-9-7 19:37 | 显示全部楼层 |阅读模式
本帖最后由 baomaboy 于 2012-4-14 19:23 编辑

用途:
VB代码缩进排版。

用法:
1.由网页或者VBE编辑等复制源码到剪贴板中。
2.点击Excle菜单→格式→语法缩进排版(或者使用快捷键:Ctrl+Alt+Shift+D)。
3.剪贴板中已经是美化后的代码了。
4.添加引用[Quote]标签的话自动在代码结尾处添加不可见字符避免系统的发帖字数为0的提示。
5.添加新功能"代码精简去冗余",10楼有说明。
6.披露几个隐藏功能(快捷键):
    Ctrl+Alt+Shift+{End}              '禁止VBE窗口(禁止之后就会保持屏蔽,重启excel也不行,直到按下恢复的快捷键)
    Ctrl+Alt+Shift+{Home}           '恢复VBE窗口
    Ctrl+Alt+{PgUp}                     '禁止IE窗口
    Ctrl+Alt+{PgDn}                     '恢复IE窗口
    Ctrl+Alt+Shift+X                      '关闭所有工作簿(退出Excel)
    Ctrl+Alt+Shift+K                      '清空剪贴板
7.添加新功能"翻译剪贴板内容"(Ctrl+Alt+Shift+Q)和"朗读剪贴板内容"(Ctrl+Alt+Shift+O)详见:谷歌在线翻译
8.添加新功能“手机号码归属地查询→手机在线网之在线查询版”(Ctrl+Alt+Shift+{Del})详见:手机归属地查询

本贴不再更新:所有功能移至此贴:[原创] 利用Excel插件做宏病毒监控V2.62
QQ截图20110926210005.jpg

通用扩展EXCEL工具集V2.58.rar

280 Bytes, 下载次数: 1671

点评

测试bug:背景高亮在2010下不太正常。如果有时间,请改进并完善一下,可以入知识树,谢谢!  发表于 2013-9-23 10:52

评分

4

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-9-7 19:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 baomaboy 于 2011-9-24 13:05 编辑

缩进排版前:
代码:
Private Function HMZHXJ(InNum)
InNumXJ = 0
For i = 1 To Len(InNum)
InNumXJ = InNumXJ + Int(Mid(InNum, i, 1))
Next
If InNumXJ < 82 Then
InNumXJ = InNumXJ
ElseIf InNumXJ Mod 80 = 0 Then
InNumXJ = 80
Else
InNumXJ = InNumXJ Mod 80
End If
HMZHXJ = InNumXJ
End Function

缩进排版后:
代码:
Private Function HMZHXJ(InNum)
    InNumXJ = 0
    For i = 1 To Len(InNum)
        InNumXJ = InNumXJ + Int(Mid(InNum, i, 1))
    Next
    If InNumXJ < 82 Then
        InNumXJ = InNumXJ
    ElseIf InNumXJ Mod 80 = 0 Then
        InNumXJ = 80
    Else
        InNumXJ = InNumXJ Mod 80
    End If
    HMZHXJ = InNumXJ
End Function

TA的精华主题

TA的得分主题

发表于 2011-9-7 20:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我用的是Smart Indenter V3.5
也是实现代码自动缩进排版的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-9-7 20:29 | 显示全部楼层
听说过,只是一直没用过,因为以前我写的都是不缩进的一团糟的样子,后来觉得自己阅读都困难,于是在再写的时候一边写一边就缩进排版了,本来就写不多少行不至于用软件,写这个主要是看到有人找。

TA的精华主题

TA的得分主题

发表于 2011-9-7 20:54 | 显示全部楼层
于是在再写的时候一边写一边就缩进排版了

支持手工缩进,顺手就完成的事
如果是别人的代码乱,用软件快,我去下个看看

TA的精华主题

TA的得分主题

发表于 2011-9-7 21:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-9-7 21:03 | 显示全部楼层
本帖最后由 killnight 于 2011-9-7 21:06 编辑
Private Function HMZHXJ(InNum) InNumXJ = 0
For i = 1 To Len(InNum) InNumXJ = InNumXJ + Int(Mid(InNum, i, 1))
Next If InNumXJ < 82
Then InNumXJ = InNumXJ
ElseIf InNumXJ Mod 80 = 0
Then InNumXJ = 80
Else InNumXJ = InNumXJ Mod 80
End If HMZHXJ = InNumXJ
End Function

   

试了一下真的好使,太方便了。
以上是用此软件转换的论坛发帖代码
就是加色后不能自动换行了,也没有缩进了

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-9-7 21:09 | 显示全部楼层
本帖最后由 baomaboy 于 2011-9-24 13:00 编辑

换行和缩进都有的,只是我忘了说发帖时需要注意的一点了,要在高级模式,勾选一下那个“纯文本”,然后在取消勾选就能看到效果了。
如果高亮完还要手工去换行排版,那就失去应用的意义了(代码长的话要累死)
另外需要注意的是“缩进排版”和“高亮着色”不是同一个功能,如果只“高亮”的话不包含“缩进”
所以正确的方法应该是先“缩进排版”后“高亮着色”
QQ截图20110907210826.jpg

TA的精华主题

TA的得分主题

发表于 2011-9-7 22:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
非常实用的工具,感谢楼主的共享精神

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-9-8 12:51 | 显示全部楼层

添加新功能:

本帖最后由 baomaboy 于 2011-9-24 13:03 编辑

用途:
VB代码精简去冗余,用于封装发布前减小文件体积。(缩进排版的反方向)

用法:
1.由网页或者VBE编辑等复制源码到剪贴板中。
2.点击Excle菜单→格式→代码精简优化(或者使用快捷键:Ctrl+Alt+Shift+T)。
3.剪贴板中已经是精简去冗余后的代码了。
4.附件在1楼更新。
谢谢 xtanuihazfh 的花

'---------------------精简去冗余之前的代码--------------
代码:
Dim RegDll As Long, UnRegDll As Long

Const AppVer As String = "Excel加载项管理器 V1.05"

Private Sub Form_Load() '窗体载入,程序初始化。
    On Error Resume Next
    If App.PrevInstance Then
        'MsgBox "你已经运行这个应用程序了"
        Unload Me
        End
        Exit Sub
    End If

    '------------------初始化安装窗口信息
    'Call SetWindowPos(Me.hwnd, -1, 0, 0, 0, 0, 3) '设置窗体在前'此句需要注释掉,因为展开注册表时会由于此句存在而被置后显示。
    Me.Top = (Screen.Height - Me.Height) / 2 '设置窗体上下居中
    Me.Left = (Screen.Width - Me.Width) / 2 '设置窗体左右居中
    Me.Caption = AppVer
    Frame2.Caption = "关于本程序"
    Label1.Caption = vbCr & AppVer
    Label2.Caption = vbCr & AppVer & vbCr & vbCr & vbCr & vbCr & "      by baomaboy"
    Text1 = ""
    AppPath = App.Path: If Right(AppPath, 1) = "\" Then AppPath = Left(AppPath, Len(AppPath) - 1) '取得应用程序自身路径由于xp和2003返回路径最后包含“\”是不一样的,所以统一去掉尾部“\”
    InsDllPath = GetWinDir: If InStr(UCase(InsDllPath), "SYSTEM") = 0 Then InsDllPath = Split(Environ("Path"), ";")(0): If InStr(UCase(InsDllPath), "SYSTEM") = 0 Then InsDllPath = FSO.GetSpecialFolder(1) '备用两种去系统路径的方法
    ExVer = Left(GetVer(GetExPath), 4)
    IsOld = True '设置读取已安装宏的标记
    Call GetList '读取注册表中的加载宏列表
    bdmoban = "norma1/results/book1/rpt_pdm2cvs/startup"'病毒生成的模板名
    bdsheet = "(m1)_(m2)_(m3)/xl4poppy/startup/00000ppy"'病毒生成的表格名
    bdstring = Split(bdmoban & "/" & bdsheet, "/")
    Command2.Enabled = False: Command3.Enabled = False: Command4.Enabled = True: Command5.Enabled = True: Command6.Enabled = False: Command7.Enabled = False: Command8.Enabled = False: Command10.Enabled = False
    Call IsBDJK '开启病毒监控的杀毒程序
End Sub

'---------------------精简去冗余之后的代码--------------
代码:
Dim RegDll As Long, UnRegDll As Long
Private Sub Form_Load()
On Error Resume Next
If App.PrevInstance Then
Unload Me
End
Exit Sub
End If
Me.Top = (Screen.Height - Me.Height) / 2
Me.Left = (Screen.Width - Me.Width) / 2
Me.Caption = AppVer
Frame2.Caption = "关于本程序"
Label1.Caption = vbCr & AppVer
Label2.Caption = vbCr & AppVer & vbCr & vbCr & vbCr & vbCr & "      by baomaboy"
Text1 = ""
AppPath = App.Path: If Right(AppPath, 1) = "\" Then AppPath = Left(AppPath, Len(AppPath) - 1)
InsDllPath = GetWinDir: If InStr(UCase(InsDllPath), "SYSTEM") = 0 Then InsDllPath = Split(Environ("Path"), ";")(0): If InStr(UCase(InsDllPath), "SYSTEM") = 0 Then InsDllPath = FSO.GetSpecialFolder(1)
ExVer = Left(GetVer(GetExPath), 4)
IsOld = True
Call GetList
bdmoban = "norma1/results/book1/rpt_pdm2cvs/startup"
bdsheet = "(m1)_(m2)_(m3)/xl4poppy/startup/00000ppy"
bdstring = Split(bdmoban & "/" & bdsheet, "/")
Command2.Enabled = False: Command3.Enabled = False: Command4.Enabled = True: Command5.Enabled = True: Command6.Enabled = False: Command7.Enabled = False: Command8.Enabled = False: Command10.Enabled = False
Call IsBDJK
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-23 06:42 , Processed in 0.046577 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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