VBA技巧46 禁用工作簿的关闭按钮
- 格式:doc
- 大小:25.60 KB
- 文档页数:2
excel vba关闭窗体的代码
"Excel VBA关闭窗体的代码"是指使用Visual Basic for Applications (VBA)编程语言来关闭Excel工作簿或用户定义的窗体的代码。
VBA是一种用于自动化Excel任务的强大编程语言。
在Excel VBA中,有多种方法可以关闭工作簿或窗体,以下是其中一些示例:
1.关闭当前工作簿:
Workbooks().Close
2.关闭特定的工作簿:
Workbooks("WorkbookName.xlsx").Close
3.关闭所有的工作簿:
Application.Workbooks.Close
4.关闭所有的工作簿,但不保存更改:
Application.Workbooks.Close SaveChanges:=False
5.关闭当前窗体:
Me.Close
6.关闭所有的窗体:
For Each obj In Application.Windows
obj.Close
Next obj
总结来说,Excel VBA关闭窗体的代码是指使用VBA编程语言来关闭用户在Excel中创建或打开的窗体。
这可以用于关闭当前活动的窗体、特定的工作簿或所有的工作簿和窗体。
在执行关闭操作时,可以根据需要选择保存更改或取消保存更改。
技巧1 关闭工作簿不显示保存对话框当用户更改工作簿后,没有进行保存操作而直接关闭工作簿时,将显示如图1-1所示的消息框,提示用户是否保存对工作簿的更改,如果希望不显示该消息框而直接关闭关闭工作簿,可以在关闭时进行相应的设置。
图1-1 提示保存对话框1-1 使用Close方法关闭工作簿使用Close方法关闭工作簿的,可以在Close方法中指定相应的参数,如下面的代码所示。
#001 Sub wbClose_1()#002 ThisWorkbook.Close SaveChanges:=False#003 End Sub代码解析:wbClose_1过程使用Close方法关闭工作簿,并放弃所有对工作簿的更改。
应用于Workbook对象的Close方法关闭对象,语法如下:expression.Close(SaveChanges, Filename, RouteWorkbook)其中SaveChanges参数是可选的,如果工作簿没有改变则忽略此参数;如果工作簿发生了改变并且在另外的窗口中也打开了该工作簿,则仍然忽略此参数;如果工作簿发生了改变并且没有在另外的窗口中打开,则此参数将指定是否在工作簿中保存所发生的更改。
取值与操作如表格1-1所示:表格1-1 SaveChanges参数值的作用如果希望在关闭工作簿时自动保存更改,将SaveChanges参数值设置为True即可。
还可以在使用Close方法关闭工作簿时设置Workbook对象的Saved属性,如下面的代码所示。
#001 Sub wbClose_2()#002 ThisWorkbook.Saved = True#003 ThisWorkbook.Close#004 End Sub代码解析:wbClose_2过程使用Close方法关闭工作簿,并放弃所有对工作簿的更改。
Workbook对象的Saved属性指示工作簿从上次保存至今是否发生过更改,如果工作簿进行了更改,则该属性值为False,否则为True。
vba如何去屏蔽⼀些功能?看完这些代码你应该会得到启发!献给今⽇头条的朋友们:常⽤的屏蔽代码:mandBars(''Worksheet Menu Bar'').Enabled = False ''屏蔽菜单栏Application.DisplayFormulaBar = False ''屏蔽编辑栏Application.DisplayStatusBar = False ''屏蔽状态栏下⾯任选⼀组即可,不可同时出现。
mandBars(''Standard'').Visible = False ''屏蔽常⽤⼯具栏,右键可选mandBars(''Formatting'').Visible = False ''屏蔽格式⼯具栏,右键可选mandBars(''Standard'').Enabled = False ''去除常⽤⼯具栏,右键也删掉mandBars(''Formatting'').Enabled = False ''去除格式⼯具栏,右键也删掉mandBars(''Toolbar list'').Enabled = False ''屏蔽右键⼯具栏mandBars(''cell'').Enabled = False ''屏蔽单元格右键单击mandBars(''Column'').Enabled = False ''屏蔽列右键单击mandBars(''Row'').Enabled = False ''屏蔽⾏右键单击Application.Assistant.Visible = False ''应⽤程序的辅助的可见mandBars.DisableCustomize = True ''去除右键⼯具栏中的“⾃定义”ActiveWindow.DisplayHeadings = False ''屏蔽⾏号列标ActiveWindow.DisplayWorkbookTabs = False ''屏蔽⼯作表标签ActiveWindow.DisplayVerticalScrollBar = False ''屏蔽垂直滚动条ActiveWindow.DisplayHorizontalScrollBar = False ''屏蔽⽔平滚动条mandBars(''ply'').Enabled = False ''屏蔽⼯作表标签右键单击mandBars(''Visual basic'').Enabled = False ''屏蔽应⽤程序的<命令块>(''Visualbasic'' )的激活Application.OnKey ''%{f11}'', '' '' ''屏蔽组合键ALT+F11,%代表ALTApplication.OnKey ''%{F11}'' ''解除屏蔽ALT+F11Application.OnKey ''%{f8}'', '' '' ''屏蔽组合键ALT+F8Application.OnKey ''%{f8}'' ''解除屏蔽ALT+F8Application.OnKey ''^{f11}'', ''VBEdit'' ''屏蔽组合键Ctrl+F11,插⼊宏表,^代表CtrlApplication.OnKey ''^{f11}'' ''恢复组合键Ctrl+F11,插⼊宏表Application.OnKey ''^f'', '' '' ''屏蔽组合键Ctrl+F,查找Application.OnKey ''^h'', '' '' ''屏蔽组合键Ctrl+H,替换Application.OnKey ''^{Break}'', '' '' ''屏蔽CTRL+Break中断Application.OnKey ''^{Break}'' ''解除CTRL+Break中断崋说简单传播。
vba屏蔽Excel中的菜单功能1、屏蔽“菜单”中的项:mandBars(1).Controls('文件(&F)').Enabled = False '屏蔽文件菜单mandBars(1).Controls('编辑(&E)').Enabled = False '屏蔽编辑菜单mandBars(1).Controls('视图(&V)').Enabled = False '屏蔽视图菜单mandBars(1).Controls('插入(&I)').Enabled = False '屏蔽插入菜单mandBars(1).Controls('格式(&O)').Enabled = False '屏蔽格式菜单mandBars(1).Controls('工具(&T)').Enabled = False '屏蔽工具菜单mandBars(1).Controls('数据(&D)').Enabled = False '屏蔽数据菜单mandBars(1).Controls('窗口(&W)').Enabled = False '屏蔽窗口菜单mandBars(1).Controls('帮助(&H)').Enabled = False '屏蔽帮助菜单2、屏蔽“菜单”中的子项:mandBars(1).Controls('编辑(&E)').Controls('填充(&I)').Enabled = False '屏蔽“编辑”菜单中的“填充”项mandBars(1).Controls('工具(&T)').Controls('选项(&O)...').Visible = False '去除工具-选项mandBars(1).Controls('工具(&T)').Controls('选项(&O)...').Enabled = False '工具-选项变灰色3、禁用粘贴:mandBars('Cell').Controls('粘贴(&P)').Enabled = False '禁用右键粘贴mandBars('Cell').Controls('选择性粘贴(&S)...').Enabled = FalsemandBars(1).Controls('编辑(&E)').Controls('粘贴(&P)').Enabled = FalsemandBars(1).Controls('编辑(&E)').Controls('选择性粘贴(&S)...').Enabled = FalsemandBars(1).Controls('编辑(&E)').Controls('office 剪贴板(&B)...').Enabled = FalsemandBars(3).Controls('粘贴(&P)').Enabled = FalsemandBars.DisableCustomize = True4、其他mandBars(1).Controls('工具(&T)').Controls('自定义(&C)...').Enabled = FalseApplication.OnKey '^v', '' '禁用键盘'Ctrl+V'Application.OnKey '^v' '恢复键盘'Ctrl+V'mandBars.DisableAskAQuestionDropdown = True '去除工作表右上角的帮助栏mandBars('Reviewing').Visible = False '屏蔽审阅mandBars('Formula Auditing').Visible = False '屏蔽公式审核mandBars('Control T oolbox').Visible = False '屏蔽控件工具箱mandBars('Stop Recording').Visible = False '屏蔽录制宏mandBars('Forms').Visible = False '屏蔽窗体mandBars('Drawing').Visible = False '屏蔽绘图5、屏蔽/解除整段代码:视图-》工具栏-》编辑,选中代码,然后在编辑的工具栏里“设置注释块和“解除注释块”按钮Application.EnableCancelKey = xlDisabled '应用程序的EnableCancelKey=完全禁用“取消”键捕获功能Application.EnableCancelKey = xlInterrupt '应用程序的EnableCancelKey=中断当前运行程序,用户可进行调试或结束程序的运行。
vba close方法VBA中提供了多种关闭工作簿、工作表和应用程序的方法。
关闭操作是VBA编程中常见的一项任务,通过关闭不再需要的对象,可以释放系统资源,提高程序的运行效率。
下面将介绍VBA中关闭操作的几种常用方法。
1. Close方法Close方法是VBA中最常用的关闭工作簿的方法。
它用于关闭当前工作簿并将其从内存中卸载。
具体代码如下:```Workbooks("工作簿名字.xlsx").Close```使用Close方法时,需要指定要关闭的工作簿的名称。
如果工作簿已有未保存的更改,关闭时会提示用户保存更改。
2. Save方法Save方法用于保存工作簿的修改,并关闭工作簿。
具体代码如下:```Workbooks("工作簿名字.xlsx").SaveWorkbooks("工作簿名字.xlsx").Close```使用Save方法时,系统会自动保存工作簿的修改,不会提示用户保存更改。
3. SaveAs方法如果想要将工作簿保存为新的文件名或文件类型,可以使用SaveAs方法。
具体代码如下:```Workbooks("工作簿名字.xlsx").SaveAs "新的文件名.xlsx"Workbooks("工作簿名字.xlsx").Close```这段代码将工作簿保存为新的文件名,并将其关闭。
4. Quit方法Quit方法可以关闭Excel应用程序。
它会关闭所有打开的工作簿,并终止Excel进程。
具体代码如下:```Application.Quit```使用Quit方法时需要注意,如果有未保存的工作簿,系统会提示用户保存更改。
5. Visible属性Visible属性用于设置工作簿或工作表的可见性。
将Visible属性设置为False可以隐藏工作簿或工作表,并关闭相应窗口。
具体代码如下:```Workbooks("工作簿名字.xlsx").Visible = False```这段代码将隐藏名为"工作簿名字.xlsx"的工作簿,并关闭相应窗口。
技巧1 禁用宏则关闭工作簿通常情况下,当应用程序的宏安全性的安全级别设置为“中”时,打开包含Microsoft Excel 4.0版的宏的工作簿,将显示如图 441所示的“安全警告”对话框。
图 441 安全警告对话框如果用户选择“禁用宏”按钮,则会显示如图 442所示的警告消息框,当用户选择“否”时,不能打开该工作簿;用户选择“是”时,打开该工作簿,但VBA 宏被禁止,而Microsoft Excel 4.0版的宏未被禁止。
图 442 Microsoft Excel 4.0宏警告对话框我们可以利用禁用VBA宏不能禁止Microsoft Excel 4.0版的宏这个特点,使用Microsoft Excel 4.0版的宏来实现禁用宏则关闭工作簿的功能。
步骤1 新建或打开需要添加此项功能的工作簿文件。
步骤2 按<Ctrl+F11>组合键为工作簿添加一个宏表,添加的宏表名称默认为“Macro1”。
步骤3 在宏表“Macro1”的A1至A7单元格中输入下面的内容。
#001 禁用宏则关闭工作簿#002 =ERROR(FALSE)#003 =IF(ERROR.TYPE(RUN("TestMacro"))=4)#004 = ALERT("因禁用了宏功能,文件将被关闭!",3)#005 = FILE.CLOSE(FALSE)#006 =END.IF()#007 =RETURN()完成后的宏表如图 443所示。
图 443 完成输入后的宏表代码解析:Microsoft Excel 4.0宏函数以等号(=)开始,其他不是由等号开始的内容将被视作注释。
通常用作定义的宏名称或者作为宏函数实现功能的注释内容设置为斜体字样以示区别,如图 443中单元格A1所示。
第2行代码关闭错误检查功能。
如果关闭错误检查,那么当宏执行遇到错误时,Microsoft Excel 将不予理会而继续执行。
VBA中新建、打开、保存、关闭工作簿!
前面的章节基本上把单元格里的一些最基本的操作,如选择、移动、复制、合并、以及动态选择单元格区域等内容讲解完了。
本节我们学习下如何在指定目录下新建、打开、保存、关闭工作簿。
Sub 在指定路径下新建工作簿()
Workbooks.Add.SaveAs 'C:\Users\wuxupeng\Desktop\工作簿的操作\管理'
ActiveWorkbook.Close
Workbooks.Open 'C:\Users\wuxupeng\Desktop\工作簿的操作\管理'
End Sub
新建:Workbooks.Add
在指定路径下新建:Workbooks.Add.SaveAs '指定路径'
打开:Workbooks.Open '指定路径'
保存:ActiveWorkbook.Save
保存到指定路径:ActiveWorkbook.SaveAS '指定路径'
关闭:ActiveWorkbook.Close
保存并关闭:ActiveWorkbook.Close 1
不保存关闭:ActiveWorkbook.Close 0。
VBA窗体之去除窗体关闭按钮VBA 的窗体缺少一般窗体的很多属性,不想许多语言窗体那样可以自由的设置窗体的样式,就连其默认的关闭按钮也不能设置为不显示,一般的处理方法是在窗体的关闭事件中添加代码来阻止窗体的关闭。
那还不如就直接运用代码来把他去除掉(如图)。
附件下载:点击链接从百度网盘下载操作如下:•在Excel 的VBE窗口中插入一个用户窗体,将其命名为frmNoCloseIcon。
然后再添加一个模块。
在窗体和模块中添加后面所列代码。
•在工作薄中的任意工作表中添加一窗体按钮控件,将指定其设置宏为 btnShowfrmMaxMin_Click。
其供示范之用.具体代码:"mdClose" 模块代码Sub btnShowfrmMaxMin_Click()frmNoCloseIcon.ShowEnd Sub"frmNoCloseIcon" 窗体代码'****************************************'---此模块演示了去除窗体关闭按钮---'****************************************Option Explicit'以下声明API函数#If Win64 Then'64位Private Declare PtrSafe Function FindWindow _ Lib "user32" _Alias "FindWindowA" ( _ByVal lpClassName As String, _ByVal lpWindowName As String) _As LongPtrPrivate Declare PtrSafe Function GetWindowLong _ Lib "user32" _Alias "GetWindowLongPtrA" ( _ByVal hwnd As LongPtr, _ByVal nIndex As Long) _As LongPtrPrivate Declare PtrSafe Function SetWindowLong _ Lib "user32" _Alias "SetWindowLongPtrA" ( _ByVal hwnd As LongPtr, _ByVal nIndex As Long, _ByVal dwNewLong As LongPtr) _As LongPtrPrivate Declare PtrSafe Function DrawMenuBar _ Lib "user32"( _ByVal hwnd As LongPtr) _As Long#Else '32位'查找窗口Private Declare Function FindWindow _Lib "User32" _Alias "FindWindowA" ( _ByVal lpClassName As String, _ByVal lpWindowName As String) _As Long'取得窗口样式位Private Declare Function GetWindowLong _ Lib "User32" _Alias "GetWindowLongA" ( _ByVal Hwnd As Long, _ByVal nIndex As Long) _As Long'设置窗口样式位Private Declare Function SetWindowLong _ Lib "User32" _Alias "SetWindowLongA" ( _ByVal Hwnd As Long, _ByVal nIndex As Long, _ByVal dwNewLong As Long) _As Long'重绘窗体标题栏Private Declare Function DrawMenuBar _ Lib "User32" ( _ByVal Hwnd As Long) _As Long#End If#If Win64 Then'64位Private FHwnd As LongPtrPrivate FIstype As LongPtr#ElsePrivate FHwnd As LongPrivate FIstype As Long#End If'以下定义常数Private Const GWL_STYLE = (-16) '窗口样式Private Const WS_SYSMENU = &H80000 '系统菜单Private Sub btnClose_Click()Unload MeEnd SubPrivate Sub btnReset_Click()'取得窗口样式位FIstype = GetWindowLong(FHwnd, GWL_STYLE)'窗体样式位: 原样式和系统菜单FIstype = FIstype Or WS_SYSMENU'重设窗体样式位SetWindowLong FHwnd, GWL_STYLE, FIstype'重绘窗体标题栏DrawMenuBar FHwndEnd Sub'**************************************'---------------主程序-----------------'**************************************Private Sub UserForm_Initialize()'查找窗口句柄FHwnd = FindWindow("ThunderDFrame", Me.Caption) '取得窗口样式位FIstype = GetWindowLong(FHwnd, GWL_STYLE)'窗体样式位: 原样式和无系统菜单FIstype = FIstype And Not WS_SYSMENU'重设窗体样式位SetWindowLong FHwnd, GWL_STYLE, FIstype'重绘窗体标题栏DrawMenuBar FHwndEnd Sub。
VBA开发中的工作簿与工作表操作VBA(Visual Basic for Applications)是一种从微软开发的用于自动化任务的编程语言。
在Excel等Microsoft Office软件中,VBA能够帮助用户完成许多重复性的工作,提高工作效率。
在VBA开发中,对工作簿和工作表的操作是非常常见的任务。
本文将详细介绍如何在VBA 中对工作簿和工作表进行操作。
首先,我们需要了解工作簿(Workbook)和工作表(Worksheet)的概念。
工作簿是Excel文件的容器,可以包含一个或多个工作表。
而工作表则是Excel文件中的一个分页,用于存储和管理数据。
一、工作簿操作1. 创建和保存工作簿在VBA中,我们可以使用`Workbooks.Add`方法来创建一个新的工作簿,并使用`Workbook.SaveAs`方法将其保存到指定的路径。
以下是一个示例:```Sub CreateAndSaveWorkbook()Dim wb As WorkbookSet wb = Workbooks.Addwb.SaveAs "C:\Path\To\Workbook.xlsx"End Sub```2. 打开和关闭工作簿使用`Workbooks.Open`方法可以打开一个已存在的工作簿,使用`Workbook.Close`方法可以关闭当前工作簿并保存更改。
以下是一个示例:```Sub OpenAndCloseWorkbook()Dim wb As WorkbookSet wb = Workbooks.Open("C:\Path\To\Workbook.xlsx")' 在这里进行其他操作wb.Close SaveChanges:=TrueEnd Sub```3. 切换工作簿VBA中的`Workbooks`对象表示当前打开的所有工作簿集合。
使用`Workbook.Activate`方法可以激活一个工作簿,使其成为当前正在操作的工作簿。
ExcelVBA解读(87):关闭工作簿——Close方法可以使用Workbooks对象或者Workbook对象的Close方法关闭工作簿。
Workbooks对象的Close方法关闭所有打开着的工作簿,而Workbook对象的Close方法则关闭一个工作簿。
其语法分别为:Workbooks对象.close关闭所有工作簿。
如果有些工作簿发现修改,则会弹出是否保存对该工作簿所作的修改的提示框。
Workbook对象.close(SaveChanges,Filename,RouteWorkbook)关闭某个工作簿。
其中:•所有参数均为可选参数。
•参数SaveChanges指定是否保存对工作簿所作的修改。
如果没有修改过工作簿,则忽略此参数。
如果修改了工作簿,则使用此参数指定是否保存修改;如果参数值设置为True,则关闭时将保存修改,此时如果工作簿还没有被命名,则使用参数Filename指定的名称,若没有指定Filename参数,则要求用户输入文件名;如果此参数值设置为False,则关闭时将不会保存任何对工作簿的修改。
•参数Filename指定保存修改的工作簿名称。
注意,上述操作仅对同一窗口中打开的工作簿有效。
示例代码1:关闭所有打开的工作簿下面的代码关闭所有打开的工作簿。
Sub CloseAllWB()Workbooks.CloseEnd Sub对于Excel 2007及以后的版本来说,所有打开的工作簿必须处于同一个实例窗口中。
示例代码2:关闭指定的工作簿下面的代码关闭工作簿test1.xlsx,并保存对该工作簿所作的修改。
Sub CloseAWorkbook()Workbooks('test1.xlsx').Close SaveChanges:=TrueEnd Sub下面的代码关闭工作簿test1.xlsx,并将对该工作簿的修改保存到test2.xlsx工作簿中。
Sub CloseAWorkbook1()Workbooks('test1.xlsx').Close SaveChanges:=True, _Filename:='test2.xlsx'End Sub注意,此时工作簿test1.xlsx仍保持原来的内容不变。
第1例禁用宏则关闭Excel文件一、实例说明:当打开含有宏的文件时,如果“禁用宏”并打开文件后,所有编辑的VBA程序将失效。
如何当用户打开Excel文件并禁用宏时,让文件自动关闭呢?本例即是调用Excel4.0版(Excel的一个老版本)的宏命令来解决这个问题。
因为“禁用宏”功能无法禁用4.0版本的宏。
设置完成后,当用户打开文件并点击禁用宏按钮后,会弹如图1-24所示提出框,当击“确定”按钮关闭提示框后该文件就会自动关闭。
图1-1 禁用宏后的提示信息二、设置步骤和使用方法:1、打开自已含有宏的文件或者新建一个Excel文件。
然后在VBE编辑器中添加一个模块。
并写入以下代码:Function MY()End Function添加后的效果如图1-2所示2图1-2 给文件添加一个模块并写入代码2、在任一个工作表标签上单元格右键,执行【插入】命令打开如图1-26所示【插入】对话框,在常用选项卡中选取“MS Excel4.0宏表”项,然后点击确定按钮后便会在当前工作簿中新建一个默认名Macro1的“宏表”。
如图1-27所示。
图1-3 打开【插入】对话框3图1-4 插入的宏表2、 在宏表的以下单元格中输入公式: A2单元格: =ERROR(FALSE)A3单元格: =RUN("MY ")A4单元格: =IF(ISERROR($A$3))A5单元格: =GOTO($A$11)A6单元格: =END.IF()A7单元格: =ERROR(TRUE)A8单元格: =RET URN()A11单元格:=ALERT("对不起!由于禁用了宏,本文件将自动关闭!",3)A12单元格:=FILE.CLOSE(FALSE)A13单元格:=RETURN()添加后的效果如图所示1-284图1-5 在宏表中添加公式后的效果3、 逐个选取工作簿中其他工作表,然后执行【插入】/【名称】/【定义】命令,打开【定义名称】对话框。
Excel怎么禁用启用所有快捷键?禁用快捷键VBA代码如果你不想使用Excel内置的快捷键,或者不希望你开发的界面因为快捷键而被破坏,你可能会想禁用所有的Excel快捷键。
下面的程序禁用所有的Excel快捷键:BASICSub Disable_Keys()Dim StartKeyComBInation As Variant Dim KeysArray As Va riant Dim Key As Variant Dim I As LongOn Error Resume Next'Shift键 = "+" (加号)'Ctrl键 = "^" (脱字号)'Alt键 = "%" (百分号)'使用这些键及其组合填充数组'Shift-Ctrl, Shift- Alt, Ctrl-Alt, Shift-Ctrl-AltFor Each StartKeyComBInation In Array("+", "^", "%","+^", " +%", "^%", "+^%")KeysArray = Array("{BS}", "{BREAK}","{CAPSLOCK}", "{CLEAR} ", "{DEL}", _"{DOWN}","{END}", "{ENTER}", "~", "{ESC}","{HELP}", "{HOME }", _"{INSERT}", "{LEFT}", "{NUMLOCK}","{PGDN}", "{PGUP}", _"{RETURN}", "{RIGHT}", "{SCROLLLOCK}","{TAB}", "{UP}")'禁用StartKeyComBInation中每个键与KeysArray中的组合键 For Each Key In KeysArrayApplication.OnKey StartKeyCombination & Key, ""Next Key'禁用StartKeyCombination中每个键与其它键的组合键 For I= 0 To 255Application.OnKey StartKeyCombination & Chr$(I), ""Next I'禁用F1 -F15键与Shift, Ctrl 或 Alt 键的组合键 For I= 1 To 15Application.OnKey StartKeyCombination & "{F" & I &"}", "" Next I Next StartKeyCombination'禁用F1 - F15 键 For I = 1 To 15Application.OnKey "{F" & I & "}","" Next I'禁用PGDN和PGUP键Application.OnKey "{PGDN}", ""Application.OnKey "{PGUP}", ""End Sub下面的程序启用所有的Excel快捷键:Sub Enable_Keys()Dim StartKeyCombination As Variant Dim KeysArray As Va riant Dim Key As Variant Dim I As LongOn Error Resume Next'Shift键 = "+" (加号)'Ctrl键 = "^" (脱字号)'Alt键 = "%" (百分号)'使用这些键及其组合填充数组'Shift-Ctrl, Shift- Alt, Ctrl-Alt, Shift-Ctrl-AltFor Each StartKeyCombination In Array("+", "^", "%","+^", "+%", "^%", "+^%")KeysArray = Array("{BS}", "{BREAK}","{CAPSLOCK}", "{CLEAR} ", "{DEL}", _"{DOWN}", "{END}", "{ENTER}","~", "{ESC}", "{HELP}", "{HOM E}", _"{INSERT}","{LEFT}", "{NUMLOCK}", "{PGDN}","{PGUP}", _"{RETURN}", "{RIGHT}", "{SCROLLLOCK}","{TAB}", "{UP}")'启用StartKeyCombination中每个键与KeysArray中的组合键 For Each Key In KeysArrayApplication.OnKey StartKeyCombination & KeyNext Key'启用StartKeyCombination中每个键与其它键的组合键 For I= 0 To 255Application.OnKey StartKeyCombination & Chr$(I)Next I'启用F1 -F15键与Shift, Ctrl 或 Alt 键的组合键 For I= 1 To 15Application.OnKey StartKeyCombination & "{F" & I &"}" Next I Next StartKeyCombination'启用 F1 - F15 键 For I = 1 To 15Application.OnKey "{F" & I & "}" Next I'启用PGDN和PGUP键Application.OnKey "{PGDN}"Application.OnKey "{PGUP}"End Sub你可以在工作簿打开时禁用所有快捷键,在关闭工作簿时恢复所有快捷键,这需要你在ThisWorkbook模块中放置下面的代码:BASICPrivate Sub Workbook_BeforeClose(Cancel As Boolean)Enable_KeysEnd SubPrivate Sub Workbook_Open()Disable_KeysEnd Sub建议在这个工作簿开发时,在功能区或者工作表界面放置一个恢复所有快捷键的按钮,单击该按钮可以恢复所有快捷功能,以避免在需要时不方便编辑代码的情形。
VBA常用技巧目录VBA常用技巧....................................................第1章Range(单元格)对象.................................技巧1.................................................................... 单元格的引用方法11技巧2............................................................ 选定单元格区域的方法技巧3............................ 获得指定行、列中的最后一个非空单元格技巧4................................................................................ 定位单元格技巧5................................................................................ 查找单元格技巧6................................................................ 替换单元格内字符串技巧7........................................................................ 复制单元格区域技巧8............................................................ 仅复制数值到另一区域技巧9........................................................ 单元格自动进入编辑状态技巧10.............................................................. 禁用单元格拖放功能技巧11...................................................................... 单元格格式操作技巧12.......................................................... 单元格中的数据有效性技巧13...................................................................... 单元格中的公式技巧14...................................................................... 单元格中的批注技巧15...................................................................... 合并单元格操作技巧16.............................................................. 高亮显示单元格区域技巧17.............................. 双击被保护单元格时不显示提示消息框技巧18...................................................... 重新计算工作表指定区域技巧19.................................................. 录入数据后单元格自动保护技巧20.................................... 工作表事件Target参数的使用方法第2章Worksheet(工作表)对象.............................技巧21.................................................................. 引用工作表的方式技巧22.................................................................. 选择工作表的方法技巧23.................................................................. 遍历工作表的方法技巧24.............................................................. 在工作表中上下翻页技巧25.............................................................. 工作表的添加与删除技巧26.............................................................. 禁止删除指定工作表技巧27.............................................................. 自动建立工作表目录技巧28.................................................................. 工作表的深度隐藏错误!未定义书签。
摘要通过研究VBE及其下层对象的访问方法,本文详细地探讨了按钮过程的代码控制技术,从而实现了Excel测试软件中工作表用户按钮的执行限定。
关键词按钮过程VBE下层对象代码限定1引言作为一个优秀的表格处理软件和系统开发平台,Excel拥有许多无可替代的优势。
基于Excel环境开发的管理信息系统,具有操作直观性强、开发周期短的特点,因此形成了熟悉Excel操作的广大用户。
为了保证开发系统的正常渠道流通及著作者利益,必须保护系统的使用权限,本文通过VBA的开发应用,提出了一种Excel工作表用户按钮的限定方法,以此来完善其系统测试软件的功能。
2限定按钮执行及其对应过程代码限定工作表用户按钮的执行包括两个方面的含义,即限定其按钮对象的显示及其指定宏过程代码的有效性,两者结合在一起加以实现,才能起到既展现软件功能,又真正限制其过分执行操作的作用,从而体现对用户软件的测试目的。
2.1查找按钮执行过程代码限定按钮对象及其执行代码,首要的问题便是获得其对应的执行代码过程名,并在当前工程的所有代码模块中查找其代码位置。
实践表明,按钮对象与图形图像和艺术字体一样,都属于Shape形状对象,它们都有其对应的OnAction属性,代表其被指定的宏过程代码名称。
需要指出的是窗体类型按钮对应的宏过程代码一般位于工程的标准模块中,而ActiveX按钮过程代码则位于工作表代码模块中,且其对应的正确执行过程名为其按钮名与相应的事件名的连接串。
为了查找某个按钮对应的过程代码,需要对VBE(VisualBasic编辑器)的下层对象VBComponents进行搜索。
VBComponents对象代表VBE 编辑器下的各个代码模块VBComponent。
通过对某一VBComponent的下一层对象CodeModule的相关属性的访问,可以获得诸如模块代码总行数等信息,也可以通过其Find方法查找指定内容的代码行。
下面即为查找按钮过程、处理按钮过程代码的算法代码。
VBA关闭工作簿和退出Excel要用VBA来关闭工作簿,用Workbook.Close 方法即可,而要退出Excel,则用Application.Quit 方法。
下面是一些代码示例:关闭活动工作簿,如果工作簿有更改,提示是否保存:Sub CloseWorkbook()ActiveWorkbook.CloseEnd Sub如果要避免出现提示,可添加“SaveChanges”参数,如直接保存并关闭工作簿:Sub ClostAndSaveWorkbook()ActiveWorkbook.Close Savechanges:=TrueEnd Sub将上述代码中的“True”改为“False”,则直接关闭工作簿而不保存。
关闭所有打开的工作簿,并提示是否保存:Sub CloseAllWorkbooks()On Error Resume NextWorkbooks.CloseEnd Sub退出Excel,并提示对有更改的工作簿进行保存:Sub QuitExcel()Application.QuitEnd Sub保存活动工作簿并退出Excel:Sub SaveActiveWorkAndQuit()ActiveWorkbook.SaveApplication.QuitEnd Sub下面的代码在退出Excel时都不会提示是否保存工作簿。
保存所有打开的工作簿并退出Excel:Sub SaveAllAndQuit()For Each wbk In Workbooks wbk.SaveNextApplication.QuitEnd Sub退出Excel,所有的改动都不保存:Sub QutiAndNoAlerts() Application.DisplayAlerts = False Application.QuitEnd Sub。
技巧1 禁用工作簿的关闭按钮一般情况下,用户可以通过菜单“文件”→“关闭”、工作簿窗口右上角的“关闭窗口”按钮或者任务栏中图标右键菜单中的“关闭”菜单项关闭工作簿。
如果希望禁用上述关闭工作簿的功能,而只能通过代码关闭工作簿,则可以在相应的工作簿事件中实现,如下面的代码所示。
#001 Dim BClose As Boolean#002 Private Sub Workbook_BeforeClose(Cancel As Boolean)#003 If BClose = False Then#004 Cancel = True#005 MsgBox "此功能已经被禁止,请使用""关闭""按钮关闭工作簿!", vbExclamation, "提示"#006 End If#007 End Sub#008 Public Sub CloseWorkbook()#009 BClose = True#010 Me.Close#011 End Sub代码解析:第1行代码在模块顶部声明变量BClose为Boolean类型,默认初始值为False。
第2行到第7行代码工作簿的BeforeClose事件过程,通过变量BClose的当前值决定是否能够关闭工作簿,只有当BClose的值为True时,才允许关闭工作簿。
如果变量BClose 的值为False时将参数Cancel的值设置为True,以禁止关闭操作。
第8行到第11行代码CloseWorkbook过程,将变量BClose的当前值设置为True后使用Close方法关闭工作簿。
关于Close方法请参阅技巧错误!未找到引用源。
在添加以上代码后,用户只能通过调用CloseWorkbook过程关闭工作簿。
如果通过菜单“文件”→“关闭”或者单击工作簿窗口右上角的“关闭窗口”按钮关闭工作簿,将显示如图1-1所示的消息框。
技巧1 禁用工作簿的关闭按钮
一般情况下,用户可以通过菜单“文件”→“关闭”、工作簿窗口右上角的“关闭窗口”按钮或者任务栏中图标右键菜单中的“关闭”菜单项关闭工作簿。
如果希望禁用上述关闭工作簿的功能,而只能通过代码关闭工作簿,则可以在相应的工作簿事件中实现,如下面的代码所示。
#001 Dim BClose As Boolean
#002 Private Sub Workbook_BeforeClose(Cancel As Boolean)
#003 If BClose = False Then
#004 Cancel = True
#005 MsgBox "此功能已经被禁止,请使用""关闭""按钮关闭工作簿!", vbExclamation, "提示"
#006 End If
#007 End Sub
#008 Public Sub CloseWorkbook()
#009 BClose = True
#010 Me.Close
#011 End Sub
代码解析:
第1行代码在模块顶部声明变量BClose为Boolean类型,默认初始值为False。
第2行到第7行代码工作簿的BeforeClose事件过程,通过变量BClose的当前值决定是否能够关闭工作簿,只有当BClose的值为True时,才允许关闭工作簿。
如果变量BClose 的值为False时将参数Cancel的值设置为True,以禁止关闭操作。
第8行到第11行代码CloseWorkbook过程,将变量BClose的当前值设置为True后使用Close方法关闭工作簿。
关于Close方法请参阅技巧错误!未找到引用源。
在添加以上代码后,用户只能通过调用CloseWorkbook过程关闭工作簿。
如果通过菜单“文件”→“关闭”或者单击工作簿窗口右上角的“关闭窗口”按钮关闭工作簿,将显示如图1-1所示的消息框。
图1-1 禁用关闭按钮。