精华内容
下载资源
问答
  • VBA研究】如何防止用户关闭窗体

    万次阅读 2016-01-18 16:45:19
    VBA开发中经常用到窗体,这样界面可以做的漂亮一点,我们甚至可以关闭Excel应用窗口,只保留我们自己的窗口,只需要启动时增加关闭应用显示语句。虽然Excel应用窗口不显示,但不影响工作表的使用,依然可以在工作表...

    iamlaosong文

    VBA开发中经常用到窗体,这样界面可以做的漂亮一点,我们甚至可以关闭Excel应用窗口,只保留我们自己的窗口,只需要启动时增加关闭应用显示语句。虽然Excel应用窗口不显示,但不影响工作表的使用,依然可以在工作表中读写数据。启动窗体语句如下:

    Private Sub Workbook_Open()
        Application.Visible = False
        UserForm1.Show
    End Sub
    

    显示自己的窗口后,一般不希望用户点击“X”直接关闭窗体,而是希望用户点击指定的按钮关闭,因为常常需要在关闭系统请做一些数据处理。

    当用户点击“X”直接关闭窗体时,会激发UserForm_QueryClose事件,可以在这个事件中阻止窗体关闭,代码如下:

    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
             If CloseMode = 0 Then Cancel = 1
    End Sub
    

    Closemode的值为0(vbFormControlMenu)表示用户在 UserForm上选择“控制”菜单中的“关闭”命令。----就是点击右上角的叉的情况。

    Closemode的值为1(VbFormCode)表示由代码调用 Unload 语句关闭窗体。----知道 userform.show么?有show方法也有卸载窗口的unload语句,在用unload userform1来卸载窗口的时候 closemode的值为1。

    此外,Closemode的值还有2(vbAppWindows)当前窗口操作环境对话正在结束;3(vbAppTaskManager)“任务管理器”窗口正在关闭应用程序;4(vbFormMDIForm)一个MDI子窗体因为MDI窗体正在关闭而关闭。

    Cancel 参数是个Integer值(整数值),在VBA里面0值表示False 非零值表示True,当Cancel值为True的时候表示当前关闭操作被终止,也就是说窗口是不被允许关闭的。

    注意:Cancel=True表示不允许用户关闭。


    展开全文
  • VBA打开与关闭窗体的函数

    万次阅读 2018-05-23 17:13:40
    打开与关闭窗体的函数将一些常用命令写成函数,以简化您的程序如关闭窗体指令可将之写成以下形式放在模块中Function strCloseForm(strFormName As String) As String On Error GoTo strCloseForm_Err DoCmd.Close ...
    打开与关闭窗体的函数
    
    将一些常用命令写成函数,以简化您的程序

    如关闭窗体指令可将之写成以下形式放在模块中

    Function strCloseForm(strFormName As String) As String 
    On Error GoTo strCloseForm_Err    

      DoCmd.Close acForm, strFormName 

    strCloseForm_Exit: 
     Exit Function 


    strCloseForm_Err: 
     MsgBox Error$ 
     Resume strCloseForm_Exit 

    End Function

    调用方法:关闭本窗体 strCloseForm(Me.Name)
         关闭其它窗体 strCloseForm("FormName") 
    展开全文
  • VBA 用户窗体的认识

    千次阅读 2020-08-18 21:19:49
    今天学的是VBA用户窗体~可算到这里来,有点以前大学学VB的味道了 一、插入新的用户窗体 插入用户窗体很简单啦,在VBE的工程下右击选择插入——用户窗体就可以了。 如果下面这个工具箱关闭了,可以在菜单栏的...

    今天学的是VBA用户窗体~可算到这里来,有点以前大学学VB的味道了

     

    一、插入新的用户窗体

    插入用户窗体很简单啦,在VBE的工程下右击选择插入——用户窗体就可以了。

    如果下面这个工具箱关闭了,可以在菜单栏的视图里面调出来

    二、认识工具箱中的控件

    我们根据这张图,从上到下依次说一下:

    第一排:

    ①箭头:移动按钮,可以移动其他控件

    ②标签:Label,只显示文本

    ③文本框:TextBox输入文本的

    ④复合(组合)框:Combox 与ListBox不同,允许输入没有出现的值

    ⑤列表框:ListBox 列表

    ⑥复选框:CheckBox,选中为True。

    ⑦单选框:OptionButton,单选啦选中后其他的就不会被选中

    ⑧切换框:ToggleButton

    第二排

    ①框架:Frame,一般用来把单选框框住

    ②命令:CommandButton,

    ③TabStrip:

    ④多页:MultiPage

    ⑤滚动条:ScrollBar

    ⑥旋转按钮:

    ⑦图像:Image

    ⑧RefEdit

    命名约定(就是控件名字太长了,一般大家都这样简写):

     

    三、基本操作

    ① 要显示用户窗体的话,可以在模块中这样设置:

    Sub showForm()
        UserForm1.Show
    End Sub

    这样的窗体是模态化的,也就不能点击EXCEL其他地方做其他事,不是很方便,非模态化只需要这样操作:

    Sub showForm()
        UserForm1.Show vbModeless
    End Sub

    还可以通过变量进行显示:

    Sub showForm()
        Dim myForm As String
        myForm = "UserForm1"
        UserForms.Add(myForm).Show vbModeless
    End Sub

    ② 加载用户窗体

    如果用户窗体比较复杂,需要较长时间显示的话,可以把它先加载到内存中去,这样下次显示窗口操作就很快了,当然了这个操作本身不会显示出窗体

    Load UserForm1

    ③ 关闭用户窗体

    虽然上面的加载用户窗体操作不会显示窗体,但是卸载窗体动作是会关闭窗体的哟,比如这样:

    Unload UserForm1

    如果是在窗体本身中运行,可以直接用Me

    Unload Me

    如果只是想隐藏窗口的话,程序还在后台运行的话,可以这样:

    UserForm1.Hide

    也可以这样

    Me.Hide

    四、简单示例

    录入个人信息,比如画了这样一个框框,在框框里输入完了就写入到工作表上的下一个空行去,怎么实现呢?

    其实就点写入的时候进行了操作,所以只需要再点击“写入”这个按钮时才进行了一系列操作,具体代码如下:

    Private Sub CommandButton1_Click()
        Dim blankRow As Long
        Dim name As String
        Dim gender As String
        
        If Me.TextBox1.Text = "" Then MsgBox "请输入姓名"
        If Me.OptionButton1.Value Then gender = "男"
        If Me.OptionButton2.Value Then gender = "女"
        If Me.OptionButton3.Value Then gender = "不知道"
    
        name = Me.TextBox1.Text
    
        blankRow = Sheets("Sheet1").Range("A1048576").End(xlUp).row + 1
        Sheets("Sheet1").Range("A" & blankRow).Value = name
        Sheets("Sheet1").Range("A" & blankRow).Offset(0, 1).Value = gender
        
        Me.TextBox1.Text = "" 
    End Sub
    
    Private Sub CommandButton2_Click()
        Unload Me
    End Sub

    CommandButton1:写入按钮

    CommandButton2:退出按钮

    TextBox1:姓名边上的输入框

    OptionButton1~3:性别

     

    明天继续学啦~

    展开全文
  • VBA 屏蔽窗口的“关闭”按钮

    千次阅读 2018-12-07 10:50:59
    插入窗体,输入代码如下: Option Explicit '**************************************** '---此模块演示了禁用窗体关闭按钮--- '**************************************** '以下声明API函数 #If Win64 Then '64位 ...

    插入窗体,输入代码如下:

    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 LongPtr
        '取得窗体系统菜单
        Private Declare PtrSafe Function GetSystemMenu _
            Lib "user32" ( _
                ByVal hwnd As LongPtr, _
                ByVal bRevert As Long) _
        As LongPtr
        '删除菜单项
        Private Declare PtrSafe Function DeleteMenu _
            Lib "user32" ( _
                ByVal hMenu As LongPtr, _
                ByVal nPosition As Long, _
                ByVal wFlags As Long) _
        As Long
        '重绘窗体标题栏
        Private 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 GetSystemMenu _
            Lib "User32" ( _
                ByVal Hwnd As Long, _
                ByVal bRevert As Long) _
        As Long
        '删除菜单项
        Private Declare Function DeleteMenu _
            Lib "User32" ( _
                ByVal hMenu As Long, _
                ByVal nPosition As Long, _
                ByVal wFlags As Long) _
        As Long
        '重绘窗体标题栏
        Private Declare Function DrawMenuBar _
            Lib "User32" ( _
                ByVal Hwnd As Long) _
        As Long
    #End If
    
    '以下定义常数
    Private Const MF_BYCOMMAND = &H0&
    Private Const SC_CLOSE = &HF060
    '以下下定义变量
    #If Win64 Then '64位
        Private FHwnd As LongPtr
        Private hMenu As LongPtr
    #Else
        Private FHwnd As Long
        Private hMenu As Long
    #End If
    
    ''关闭按钮点击
    'Private Sub BtCancel_Click()
    '    Unload Me
    'End Sub
    ''恢复按钮点击
    'Private Sub BtResume_Click()
    '    '恢复原菜单
    '    hMenu = GetSystemMenu(FHwnd, 1)
    '    '重绘窗体标题栏
    '    DrawMenuBar FHwnd
    'End Sub
    '**************************************
    '---------------主程序-----------------
    '**************************************
    Private Sub UserForm_Initialize()
        '查找窗口句柄
        FHwnd = FindWindow("ThunderDFrame", Me.Caption)
        '取得窗体系统菜单
        hMenu = GetSystemMenu(FHwnd, 0)
        '删除系统菜单中关闭菜单
        DeleteMenu hMenu, SC_CLOSE, MF_BYCOMMAND
        '重绘窗体标题栏
        DrawMenuBar FHwnd
    End Sub
    
    
    
    展开全文
  • ActiveWindow.Close'关闭当前显示文件 sDir = Dir Wend End If End Sub ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳ 16、自动打开excle中用户窗体和隐藏VBA中...
  • VBA 用户窗体的认识(二)

    千次阅读 2020-08-19 23:24:04
    今天继续讲用户窗体啦~ 一、控件事件 昨天通过小例子,认识了按钮的点击事件(CommandButton1_Click),除此之外,还有部分控件常用事件。添加完控件后,双击一下,在上面下拉就可以查看到事件啦。 1.、...
  • 这个事件是在用户窗体关闭之前发生。 第一个参数Cancel :默认是0,除了0之外的任何数都会停止QueryClose事件; 第二个参数CloseMode:有以下四个参数。这个参数的意思是关闭这个程序的方式有哪些,比如说用户点了...
  • 判断窗体中是否有子窗体的模块代码来源:www.accessoft.com 点击数:2744 评论数:3 评论 | 收藏 | 复制 ...摘 要:判断窗体中是否有子窗体的模块代码 正 文:Sub FrmHasChildForm() Dim ctrl As Control Dim fr
  • VBA窗体默认只有一个关闭按钮,没有最大化和最小化按钮,下面的代码可以方便的为窗体增加最大、最小化按钮,让窗口使用更方便。 调用方法 窗体最大最小化 Me 窗体最大化 Me 函数代码 '窗体的最大最小化 Public ...
  • 本章主要内容:窗体,控件,小结。
  • Sub CreateUserform() ...'PURPOSE: Create & Modify a Userform with VBA Code 'AUTHOR: John Walkenbach (www.SpreadsheetPage.com) 'SOURCE: www.TheSpreadsheetGuru.com '********************************
  • Excel VBA(08)窗体和控件

    千次阅读 2020-04-29 16:36:58
    3、关闭窗体 代码关闭是 unload testform方法 4、显示设置 窗体标题:caption 背景色:backcolor 背景图片:picture,代码里面可以使用loadpicture()方法进行加载 属性窗口里面可以查看 5、位置大小 to...
  • Unload UserForm1 实现关闭窗体  ListBox事 件   →  常用函数    → Instr(2, "eAlex", "e") 返回e在Alex中第一次出现的位置(从第1个字符开始算起,结果是4) → Round(34....
  • 如何建立窗体,并通过窗体向该表内添加订单。 序号 姓名 科室 级别 身份 职称 受聘专业 性别 出生年月 年龄 参工时间 工作年限 入院时间 入院年限 职务 等级 ...
  • vba操作ie关闭窗口

    千次阅读 2018-07-19 20:56:12
    现在我们一般的默认浏览器都不是IE,所以一般在vba操作IE使用microsoft Internet controls里面的IE.quit没什么用。下面使用js关闭IE,我试了下,可行的。顺便做下记录。。 Sub x() Dim ie As Object Set ie = ...
  • 在利用api引用excel到窗体的事件中,有时需要将小窗体按钮“最小化,最大化,关闭”隐藏起来
  • 窗体对象的显示与关闭 窗体对象的装载与显示 窗体对象的卸载与隐藏 窗体的显示模式 窗体是Excel VBA中提供的一种窗口对象。它属于工作簿对象(Workbook)中VB工程对象(VBProject)下的VB组件集合(VBComponents...
  • 用户窗体定身术--禁止移动

    千次阅读 2018-09-10 11:23:05
    VBA中通过用户窗体的StartUpPosition属性可以指定窗体显示的位置,如下图所示。 但是用户可以随意拖动窗体调整位置,是否可以像孙悟空一样,给窗体施个定身术,固定位置无法移动呢? 用户窗体的移动可以通过...
  • VBA调用doc命令,doc窗口关闭之后,继续执行代码 Option Explicit 'Docワィンドワ閉じるした後、後続けの処理実施 Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandel As Long, ByVal...
  • 在《EXCEL VBA经典代码大全》里看到如下代码代码段1,可以让提示窗体自动延时关闭。觉得非常有意思,就把类似代码化用到ACCESS的一个定时刷屏的窗体内,如下代码段2,结果弹出的提示窗体不能延时关闭,必须点击...
  • 通过代码创建新的窗体

    千次阅读 2017-10-26 10:24:01
    通过代码创建新的窗体 ...时 间:2017-08-29 12:28:10 作 者:杨雪 ID:42182 城市:南京 ...如果想要在程序运行过程中新建窗体,可以通过VBA 代码来实现。常用的方法有俩种,一种是引用菜单进行,另一种是使用CreatForm
  • 引言 本人本次实践的目标是数据查询。具体实现方式应该是: 使用窗体及其他控件做查询的条件的输入 使用excel作为查询结果的输出 从桌面上看应该是,...在VBA中也有,可以打开excel->开发工具 点开Visu...
  • vb之窗体关闭事件

    万次阅读 2014-11-29 19:12:10
    当一个 MDIForm 对象关闭时,QueryUnload 事件先在MDI 窗体发生,然后在所有 MDI 子窗体中发生。如果没有窗体取消 QueryUnload 事件,该 Unload 事件首先发生在所有其它窗体中,然后再发生在 MDI 窗体中。当一...
  • 如果消息框只是提醒用户,并不需要获取用户的输入,那么使用可以自动关闭的消息提示框,可以避免程序暂停挂起,无法继续执行的问题,但是VBA中提供的MsgBox无法实现自动关闭的功能。下面介绍一个未公开的Windows API...
  • 和插入模块一样,插入用户窗体即可 1.2 如何运行/显示 窗体? 1.2.1 显示窗体代码方法 据说,单写一句 userform1.show 也是可以的,因为VBE会自动先 load 这个窗体 load form1 '加载窗体,加载到内存,但不...
  • VBA研究】EXCEL启动时自动启动窗体

    千次阅读 2015-08-26 10:09:44
    VBA编程时为了界面美观,我们经常用到窗体Form,那么,如何做到让VBA窗体在EXCEL启动时自动运行呢? 方法有二,第一,双击ThisWorkbook,输入以下代码(Open事件): Private Sub Workbook_Open() UserForm1.Show ...
  • 如图所示,该表为某公司工资表与员工档案表,当查看工资表时,希望能够在双击员工姓名时,在员工档案表中查询该员工的基本信息,并临时创建一个窗体显示该员工信息。 月份 工作地区 部门 姓名 基本...
  • 动态显示与隐藏窗体 题 如图所示,该表为某单位员工档案。现希望制作一个包含有文本框的浮动工具栏,当在文本框中输入字符并按【Enter】键后,对该表进行模糊查找,将该表中不含有该字符的所有记录隐藏。 序号 ...
  • 4、选择菜单栏:插入-模块,将以下代码复制到右边的代码框中,点击菜单:运行-运行子过程/用户窗体,直到弹出处理完毕对话框; 5、在文件夹中将生成拆分好的文件,可关闭这个EXCEL文件,选择不保存。
  • VBA自学应用(2)——制作简单的数据录入窗口

    万次阅读 热门讨论 2019-12-29 19:24:50
    制作简单的数据录入窗口 一、画一个你的窗体 二、编写窗体代码 三、使用工作表事件激活窗体 四、补充:关于鼠标在listbox中的滚轮实现 现如今有两张表,一张产品表,一张录入表,如图所示。 我们要做出如下效果: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,411
精华内容 564
关键字:

vba关闭用户窗体代码