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`方法可以激活一个工作簿,使其成为当前正在操作的工作簿。
技巧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 禁用关闭按钮。