精华内容
下载资源
问答
  • vba 自动删除代码实例

    2011-10-28 23:12:00
    vba 自动删除代码实例vba 自动删除代码实例vba 自动删除代码实例vba 自动删除代码实例
  • Excel文档VBA代码自动删除

    千次阅读 2013-09-24 12:05:52
    有时候,不想让自己编写的代码让别人长期使用或换地方使用,又不想让文档自杀,就可以设计限期清除代码,或其他限制条件下清除。具体限制条件可参考作者《Excel文档自杀程序设计》Workbook_Open模块那一部分。代码...


      有时候,不想让自己编写的代码让别人长期使用或换地方使用,又不想让文档自杀,就可以设计限期清除代码,或其他限制条件下清除。具体限制条件可参考作者《Excel文档自杀程序设计》Workbook_Open模块那一部分。代码清除后,与代码有关的程序就不能运行了。
    如设置2011年12月31日后打开文档就清除代码,可以这样设计:
    Private Sub Workbook_Open()   ’这个程序一定要在Thisworkbook模块中
    On Error Resume Next
    If Date>40908 then Then Call 删除代码
    End Sub                                                 
    删除代码的程序是
    Sub 删除代码()   ’这个程序要在标准的Moudle模块中
    For i = 1 To ActiveWorkbook.VBProject.VBComponents.Count ActiveWorkbook.VBProject.
        VBComponents(i).CodeModule.DeleteLines 1, _
        ActiveWorkbook.VBProject.VBComponents(i).CodeModule.CountOfLines
    Next i
    End Sub                                                 
    如果要把窗体、模块、类模块一并删除可改为一下代码
    Sub 删除代码()   ’这个程序要在标准的Moudle模块中最好
    For i = 1 To ActiveWorkbook.VBProject.VBComponents.Count ActiveWorkbook.VBProject.
        VBComponents(i).CodeModule.DeleteLines 1, _
        ActiveWorkbook.VBProject.VBComponents(i).CodeModule.CountOfLines
    Next i
    Dim Vbc As Object
    For Each Vbc In Application.ThisWorkbook.VBProject.VBComponents
        Select Case Vbc.Type
        Case 1, 2, 3
             With Application.VBE.ActiveVBProject.VBComponents
             .Remove .Item(Vbc.Name)    ’移除模块、类模块、窗体
             End With
         End Select
      Next
    End sub                                
      “删除代码”这几个字太显眼,使用时可改为其他英文字母代替程序名称,如拼音SCDM等。
    一般在打开文档时设置限定清除代码条件,也可在关闭文件时设置限定条件。
       如果你设置了工程密码保护,那么在运行上程序时就会出错。代码就删除不了。因此就要添加VBA工程解除密码保护程序。修改后程序具体设置如下:
    Private Sub Workbook_Open()  '这个程序一定要在Thisworkbook模块中
    On Error Resume Next
    If Date>40908 then Then Call 删除代码
    End Sub                                                 
    Sub 删除代码()   '这个程序要在标准的Moudle模块中最好
    解除工程保护  '引用本模块的解除保护程序
     For i = 1 To ActiveWorkbook.VBProject.VBComponents.Count ActiveWorkbook.VBProject.
       VBComponents(i).CodeModule.DeleteLines 1, _
     ActiveWorkbook.VBProject.VBComponents(i).CodeModule.CountOfLines
    Next i
    Dim Vbc As Object
    For Each Vbc In Application.ThisWorkbook.VBProject.VBComponents
        Select Case Vbc.Type
        Case 1, 2, 3
             With Application.VBE.ActiveVBProject.VBComponents
             .Remove .Item(Vbc.Name)  ’移除模块、类模块、窗体
             End With
         End Select
      Next
    End Sub                                                  
    Sub 解除工程保护()   ' 这个程序也要在标准的Moudle模块中
      Dim strPassWord As String
      Application.VBE.MainWindow.Visible = False
      strPassWord = "123"   ’ 引号里面必须是你的真实的工程保护密码
      Application.VBE.CommandBars.FindControl(ID:=2578).Execute
      SendKeys strPassWord & "{enter}{tab}{enter}"
      DoEvents
    End Sub                                                        
    程序不是很稳定,有时候会出现错误,这也可能是Excel内部原因。该程序只能删除全部代码,如果只想删除某一部分代码,可自行研究删除代码部分内容。


    VB

    VB软件操作EXCELVB全面控制Excel
    展开全文
  • 有朋友问:有没有VBA方法,可以使得整个工作表录入数据时自动加边框?韩老师今天将代码写在这里。VBA打开VBA窗口,输入代码:Private Sub Worksheet_Change(ByVal Target As Range)For Each a In UsedRange If...

    前几天,韩老师发了一个一分钟小视频“录入数据自动加边框”:Excel录入数据时自动添加边框,省力省时,何乐而不为?

    有朋友问:有没有VBA方法,可以使得整个工作表录入数据时自动加边框?

    韩老师今天将代码写在这里。

    VBA

    打开VBA窗口,输入代码:

    Private Sub Worksheet_Change(ByVal Target As Range)For Each a In UsedRange    If a <> "" Then        a.Borders.LineStyle = xlContinuous    ElseIf a = "" Then        a.Borders.LineStyle = xlNone    End IfNextEnd Sub

    如下图:

    7967d81b5c127d7402a95d2770a7c955.png

    结果如下:

    e4d64e833cb0f3fc50ff6e016ee5995e.gif

    条件格式

    有些朋友说VBA太难了,看不懂代码,也想实现数据输入到哪里,哪个单元格就有边框,删除数据,边框自动消失。

    也有办法,就是用条件格式:

    选中整个工作表,只需点工作表左上角的行列交叉处的小三角,如图:

    e9298ad3850322ceb39405a0b9760368.png

    然后在“开始”菜单中选择“条件格式”,在“使用公式确定要设置格式的单元格”,在“为符合此公式的值设置格式”输入入公式”=A1<>"":

    46cc062f0cfe56c7591f697978b9d779.png

    设置格式,添加边框。即成!!

    --------------------------------

    韩老师自己的书,集合数万名粉丝朋友的企事业实际问题,精挑细选而著,欢迎各位朋友们品鉴:

    韩老师正在更新专栏,这几天可以上新一折购买:

    展开全文
  • VBA精彩代码分享-3

    2019-05-17 15:53:00
    在开发VBA程序中,我们可能会需要用代码处理VBA工程,包括启用VBA工程访问,启用所有宏,动态插入代码,动态删除代码,动态添加引用和自动创建模块等等,本次的分享内容便以这些为主。 启用VBA工程访问 Dim ...

    在开发VBA程序中,我们可能会需要用代码处理VBA工程,包括启用VBA工程访问,启用所有宏,动态插入代码,动态删除代码,动态添加引用和自动创建模块等等,本次的分享内容便以这些为主。

    启用VBA工程访问

    Dim oWshell As Object
    Set oWshell = CreateObject("WScript.Shell")
    oWshell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application.Version & "\Excel\Security\AccessVBOM", 1, "REG_DWORD"
    '将第二个参数改为0就是关闭

    启用所有宏

    Dim WScr As Object
    Set WScr = CreateObject("WScript.Shell")
    WScr.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application.Version & "\Excel\Security\VBAWarnings", "1", "REG_DWORD"
    '将第二个参数改为0就是关闭

    在工作表插入按钮并写入单击事件

    Dim sCode, objBtn
    With ActiveSheet
     For Each obj In .OLEObjects
      obj.Delete
      Next obj
      Set objBtn = .OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=120, Top:=50, Width:=130, Height:=30)
    End With
    sCode = "' *** Code Added By VBA ***" & vbCrLf & "Private Sub " & objBtn.Name & "_Click()" & vbCrLf & "  MsgBox ""Hello""" & vbCrLf & "End Sub" & vbCrLf
    With ActiveWorkbook.VBProject.VBComponents("Sheet1").CodeModule
      NextLine = .CountOfLines + 1
      .InsertLines NextLine, sCode
    End With

    删除某个过程

    Dim CodeInd As Long
    Dim sNo, eNo, bFlag
    Const PROC_NAME = "PRIVATE SUB WORKSHEET_CHANGE(BYVAL TARGET AS RANGE)"
    bFlag = False
    With ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule
        For CodeInd = .CountOfDeclarationLines + 1 To .CountOfLines
            Select Case VBA.UCase$(Trim(.Lines(CodeInd, 1)))
                Case PROC_NAME
                    bFlag = True
                    sNo = CodeInd
                Case "END SUB"
                    If bFlag Then
                        eNo = CodeInd
                        Exit For
                    End If
            End Select
        Next CodeInd
        ' 逐行倒序删除
        'For i = eNo To sNo Step -1
        '    .DeleteLines i
        'Next
        ' 一次性删除整个过程代码
        .DeleteLines sNo, eNo - sNo + 1
    End With

    输出VBA工程的所有引用

    On Error Resume Next
    For n = 1 To ThisWorkbook.VBProject.References.Count
      Cells(n, 1) = ThisWorkbook.VBProject.References.Item(n).Name
      Cells(n, 2) = ThisWorkbook.VBProject.References.Item(n).Description
      Cells(n, 3) = ThisWorkbook.VBProject.References.Item(n).GUID
      Cells(n, 4) = ThisWorkbook.VBProject.References.Item(n).Major
      Cells(n, 5) = ThisWorkbook.VBProject.References.Item(n).Minor
      Cells(n, 6) = ThisWorkbook.VBProject.References.Item(n).fullpath
    Next n

     删除VBA工程的所有引用

    On Error Resume Next
    Dim theRef As Variant
    For I = ThisWorkbook.VBProject.References.Count To 1 Step -1
    Set theRef = ThisWorkbook.VBProject.References.Item(I)
    If theRef.isbroken = True Then
    ThisWorkbook.VBProject.References.Remove theRef
    End If
    Next I

    添加VBA工程引用

    Dim RefItem(6, 3) As Variant
    
    RefItem(0, 0) = "{000204EF-0000-0000-C000-000000000046}"
    RefItem(0, 1) = 4
    RefItem(0, 2) = 2
    
    RefItem(1, 0) = "{00020813-0000-0000-C000-000000000046}"
    RefItem(1, 1) = 1
    RefItem(1, 2) = 9
    
    RefItem(2, 0) = "{00020430-0000-0000-C000-000000000046}"
    RefItem(2, 1) = 2
    RefItem(2, 2) = 0
    
    RefItem(3, 0) = "{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}"
    RefItem(3, 1) = 2
    RefItem(3, 2) = 8
    
    RefItem(4, 0) = "{00000205-0000-0010-8000-00AA006D2EA4}"
    RefItem(4, 1) = 2
    RefItem(4, 2) = 5
    
    RefItem(5, 0) = "{0D452EE1-E08F-101A-852E-02608C4D0BB4}"
    RefItem(5, 1) = 2
    RefItem(5, 2) = 0
    
    On Error Resume Next
    For I = 0 To 5
    ThisWorkbook.VBProject.References.AddFromGuid GUID:=RefItem(I, 0), Major:=RefItem(I, 1), Minor:=RefItem(I, 2)
    Select Case Err.Number
    Case Is = 32813
    '引用已经加载,无需做任何事情
    Case Is = vbNullString
    '成功加载
    Case Else
    '加载出现错误,保存错误信息
    errmsg = errmsg & RefItem(I, 0) & "出现错误错误"
    End Select
    Next I
    If errmsg <> "" Then
    MsgBox errmsg
    End If

    创建模块并写入过程

    Application.ScreenUpdating = False
    For i = 1 To ThisWorkbook.VBProject.VBComponents.Count
    If ThisWorkbook.VBProject.VBComponents(i).Name = "auto_code" Then
    ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents(i)
    End If
    Next
    ThisWorkbook.VBProject.VBComponents.Add(1).Name = "auto_code"
    ThisWorkbook.VBProject.VBComponents("auto_code").CodeModule.InsertLines 1, "Sub test()"
    ThisWorkbook.VBProject.VBComponents("auto_code").CodeModule.InsertLines 2, "Msgbox""hello world!"""
    ThisWorkbook.VBProject.VBComponents("auto_code").CodeModule.InsertLines 4, "end sub"
    Application.OnTime Now + TimeValue("00:00:01"), "test"
    Application.ScreenUpdating = True

     

    转载于:https://www.cnblogs.com/JTCLASSROOM/p/10881746.html

    展开全文
  • 在Excel中我们经常需要对输入的表格内容添加边框,一般的操作步骤是,先输入内容,再设置边框。...就如同下图这样:有2种基本方法可以实现上述效果,一种是利用条件格式,一种是利用VBA代码。一、条件格式法首先全...

    在Excel中我们经常需要对输入的表格内容添加边框,一般的操作步骤是,先输入内容,再设置边框。但这样的问题在于,如果我们下次还要继续输入内容,还要再次添加边框,如果删除内容,还要手动去除边框。

    那有没有一种方法,可以跟随我们的输入内容同步变化,输入内容之后自动添加边框,删除内容自动去除边框?就如同下图这样:

    750b1eb8e5308aec2124ec868740b3ba.gif

    有2种基本方法可以实现上述效果,一种是利用条件格式,一种是利用VBA代码。

    一、条件格式法

    首先全选整个工作区,在『开始』菜单下找到『条件格式』『新建规则』,然后选择『使用公式确定要设置格式的单元格』,并在下方文本框中输入公式=A1<>"",最后点击『格式』,设置合适的边框样式即可。

    fc435a8780f3d15ec064dae683f657f1.png

    二、VBA法

    在『开发工具』菜单找到『Visual Basic』,点击打开VBE窗口,双击左侧的Sheet1项目,在右侧输入如下代码,保存即可生效:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)    For Each a In UsedRange    If a <> "" Then        a.Borders.LineStyle = xlContinuous    ElseIf a = "" Then        a.Borders.LineStyle = xlNone    End If    NextEnd Sub

    如下图所示。

    3550308cd2e2d2b8ec4df1d1265d393b.png

    代码的原理很简单,就是只要工作表发生变化,比如点击不同单元格,输入或删除内容,就会触发Worksheet_SelectionChange事件。这个事件会遍历整个数据块中的每一个单元格,如果内容不为空则设置边框样式,如果内容为空则去除边框样式。

    注:如果你的菜单栏没有『开发工具』这一项,可以在『文件』菜单下找到『选项』命令,点击打开Excel的设置窗口。在『自定义功能区』最右侧,勾选『开发工具』复选框,点击『确定』即可开启。

    be1229a3cbfa6d96eeb53713b6d239ca.png
    展开全文
  • 1、 通过菜单及VBA刷新数据(1) 打开工作簿时刷新(2) 每几分钟刷新(3) 按需刷新,删除连接ThisWorkbook.Connections("查询-表名").RefreshThisWorkbook.Connections("查询-表名").Delete请注意这个连接名称不单是单独...
  • 删除数字vba

    2016-11-22 15:52:25
    打开vba编辑器-单击插入模块-复制代码-按F5运行,excel会自动将A列所有的内容删除数字后提取放在列  Sub delnum()  For i = 0 To 9  Columns("A:A").Replace What:=i, Replacement:=""  Next  End Sub
  • 三、实训项目1.3:VBA程序实训目的:动手编写VBA程序实训内容:添加或删除模块,动手编写程序作业: CSDN发表自己的第一个VBA程序代码。例,将活动工作薄中自动新建工作表并将其命名为“员工考勤表”。1.打开VBE...
  • Word VBA自动排版(3)- 去除空白段落

    千次阅读 2019-01-22 10:21:10
    代码一则 Sub 删除空白段落() For Each para In ActiveDocument.Paragraphs If Right(para.Range.Text, 2) &amp;lt;&amp;gt; &quot;。&quot; &amp;amp; Chr(13) Then para.Range....
  • 代码是我以前使用的一个东东,删除了敏感的一些信息,保留了主要的功能。主要功能包含:一是VBA连接SQL Server数据库查询的功能,二是根据自动获取的日期动态将结果数据导出为多个Excel文档的功能。导出的文件命名...
  • 虽然一下方法可以实现,但是安装 Visual_Assist_X_10.7.1925.0 后可以自动实现这些功能,而且感知比较好,建议使用助手工具而不是以下的方法...点击OK,删除刚才生成的代码,贴代码: '多行注释Sub Comment()if Docu...
  • VBA实现检查和删除Word中的空白页

    千次阅读 2008-10-08 09:38:00
    word中的空白页,可能由于回车产生,还有可能由插入的分页符产生,以下代码通过读取每一页的数据并判断,实现对Word中空白页的检查,并可实现自动删除!在word中,插入一个模块,复制如下代码 Option Explicit Sub...
  • 过程名:wdout作用:使用定义好的模板,自动将其中的形如{????}的字符以字段中的内容替换,并将{照片}替换成照片。如果没有照片,则删除相应的替换字符。参数:photofile——照片文件的路径字符串,为完整绝对...
  • 这在工作中是很重要的一项Excel技能,上一篇单独记录了 Excel文件自毁VBA指令,这里再结合实际,调用Excel工作簿的Workbook_Open()事件,使Excel工作簿达到使用天(30天)数后,只要用户打开文件它就会自动删除。...
  • VBA常用技巧

    2014-12-21 16:39:28
    技巧60 使用VBA自动生成图表 12 技巧61 使用独立窗口显示图表 12 技巧62 导出工作表中的图表 12 技巧63 多图表制作 12 第5章 Application对象 12 技巧64 取得Excel版本信息 12 技巧65 取得当前用户名称 12 技巧66 ...
  • ExcelVBA助手2003

    2008-08-19 10:22:10
    ·支持代码自动插入、删除功能,让 VBA 编程更轻松; ·内含几十条测试代码,可随意插入到工作簿、工作表、用户窗体、或模块中; <br>加载说明: <br>·使用前请先勾选 [ 信任对于‘Visual Basic 项目...
  • 动手编写VBA程序

    2018-05-06 19:00:25
    实训内容:添加或删除模块,动手编写程序step1: 添加模块: 打开VBA窗口,点击菜单“插入”—“模块”在工作簿中新建模块,并双击改模块对象打开其代码编辑窗口,如下图所示step2: 将光标定于所选模块对应的代码...
  • Excel_VBA教程

    2014-09-22 11:36:34
    一、VBA语言基础 1 第一节 标识符 1 第二节 运算符 1 第三节 数据类型 1 第四节 变量与常量 1 第五节 数组 2 第六节 注释和赋值语句 2 第七节 书写规范 2 第八节 判断语句 2 第九节 循环语句 3 第十节 其他类语句和...
  • VBA编程技巧大全

    2013-08-05 09:03:19
    技巧60 使用VBA自动生成图表 145 技巧61 使用独立窗口显示图表 149 技巧62 导出工作表中的图表 150 技巧63 多图表制作 151 第5章 Application对象 155 技巧64 取得Excel版本信息 155 技巧65 取得当前用户名称 156 ...
  • Excel情报局生产搬运分享Excel基础技能OFFICE知识文艺青年用1%的Excel基础搞定99%的日常工作做一个有文艺范的Excel公众号Excel是门手艺玩转需要勇气表哥带你玩转...右击工作表,点击查看代码自动弹出VBA窗口,选...
  • 使用VBA创建一个隐藏的名称,记录当前工作簿打开的次数,如果次数超过指定数值,则自动删除本工作簿。 应用范围: 1、用于VBA开发时,发给别人测试某功能(因测试版,不应发放到外部,所以添加自删除功能)。 2...
  • Excel VBA 基础教程

    2019-01-01 18:51:06
    .................................................................................................................1 1.1 VBA是什么...........................................................................
  • 在Excel中我们经常需要对输入的表格内容添加边框,一般的操作步骤是,先输入内容,再设置边框。...就如同下图这样:有2种基本方法可以实现上述效果,一种是利用条件格式,一种是利用VBA代码。一、条件格式法首先全...
  • ExcelVBA程序设计.doc

    2011-04-05 21:32:51
    一、VBA语言基础 1 第一节 标识符 1 第二节 运算符 1 第三节 数据类型 1 第四节 变量与常量 1 第五节 数组 2 第六节 注释和赋值语句 2 第七节 书写规范 2 第八节 判断语句 2 第九节 循环语句 3 第十节 其他类语句和...
  • CAD_VBA开发手册

    热门讨论 2008-12-06 17:57:59
    第二章 理解ActiveX自动操作基础.. 理解AutoCAD对象模型 访问对象层次 通过集合对象操作 理解属性和方法 理解父对象 定位类型库 在数据库中返回第一个图元 在方法和属性中使用变体 使用其它程序语言 第三章...
  • Excel VBA程序设计.doc

    2009-07-06 22:16:12
    Excel VBA程序设计.doc 目 录 一、VBA语言基础 1 第一节 标识符 1 第二节 运算符 1 第三节 数据类型 1 第四节 变量与常量 1 第五节 数组 2 第六节 注释和赋值语句 2 第七节 书写规范 2 第八节 判断语句 2 第九节 ...
  • 编写第一个VBA程序

    千次阅读 2018-05-06 16:19:36
    实现在活动工作簿中自动新建工作表并...),同时自动弹出其代码窗口,若不弹出则可双击该模块对象打开其代码窗口;将光标定于模块的代码窗口中,点击菜单“插入”——“过程”,弹出“添加过程”对话框,输入名称Ad...
  • Excel_VBA程序设计.pdf

    热门讨论 2009-08-31 23:05:20
    非常详尽的Excel_VBA程序设计,好不容易才整理搜索到的。 一、VBA语言基础 1 第一节 标识符 1 第二节 运算符 1 第三节 数据类型 1 第四节 变量与常量 1 第五节 数组 2 第六节 注释和赋值语句 2 第七节 书写规范 2 第...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 162
精华内容 64
关键字:

vba自动删除代码