精华内容
下载资源
问答
  • 引言 本人本次实践的目标是数据查询。具体实现方式应该是: 使用窗体及其他控件做查询的条件的输入 使用excel作为查询结果的输出 从桌面上看应该是,...在VBA中也有,可以打开excel->开发工具 点开Visu...

    引言

    本人本次实践的目标是数据查询。具体实现方式应该是:

    1. 使用窗体及其他控件做查询的条件的输入
    2. 使用excel作为查询结果的输出
    3. 从桌面上看应该是,前面一个窗口输入查询条件,然后点确定,后面有个excel显示结果。
    4. 类似下图这种

        

    一、打开窗口 

    窗体俗称对话框,在可视化的面向对象的编程软件中都应该有。在VBA中也有,可以打开 excel->开发工具

    点开Visual Basic就会进入到变成界面,然后就可以插入窗体,如下图 

    二、窗体简介

     窗体,也就是窗口,或者叫对话框,是vba定义的一个对象,或者说一类对象。微软对“Microsoft 窗体”对象的介绍就是下面一幅图

    我们本节所说的”窗体“就是第二层(UserForm)。我们可以从图中看出,窗体对象,不止是指UserForm,还指其他的对象,如Controls,Font,MultiPage,等等。从面向对象的观点来说,这个图表示的应该是一个继承图。(我不是很熟,猜的) 如果上图是个继承关系图,那么我们可以得到几个结论:

    1. 他们的事件可以继承
    2. 他们的属性也可以继承
    3. 且儿子的属性和事件可能比父亲多。。。。

    三、窗体属性简介

    属性,表示这个窗体固有的特性,如基本的:长宽高,位置,颜色等;特殊的:如字体大小啊,有无滚动条啊等等

    所以分下类:

    • 基础属性:外观,位置,字体
    名称窗体名称该窗体的标识可能是唯一标识

    BackColor

    背景色  

    BorderColor

    边框颜色 只有BorderStyle为1时,这个才有效

    BorderStyle

    边框类型(两种)

    0 fmBorderStyleNone

    fmBorderStyleSingle

     

    Caption

    窗体左上角显示的名字  

    Height

    窗体显示位置-高  

    Width

    窗体显示位置-宽  

     

     

     

     

     

     

     

     

    •  行为属性

    Cycle

    tab顺序指定控件接收焦点的顺序

    0 fmCycleAllForms

    2 fmCycleCurrentForm

    选0时,使用tab键,会遍历所有的该窗体范围内所有的控件;选1时,使用tab键,只会遍历某一窗体范围内的控件,tab不会跳出范围,到最后一个控件后会在回到该窗体范围的第一个控件
    showmodal窗口是否锁死(这个词合适)

    true

    false

    选true叫模态,false叫非模态

    模态下,如果这个窗口是激活的,其他窗体或窗口则不能被选中。非模态,反之。

     

     

     

     

     

     

    • 滚动条

    ScrollBars

    滚动条

    0 fmScrollBarsNone

    1 fmScrollBarsHorizontal

    2 fmScrollBarsVertical

    3 fmScrollBarsBoth

    0 无

    1 水平

    2 垂直

    3 全部

    ScrollHeight

    ScrollTop

    滚动条高height有值,top才填值只有当ScrollHeight值大于窗体本身的height时,滚动条才会显示。这个时候Top表示滚动条离顶部的距离

    ScrollWidth

    ScrollLeft

    滚动条宽width有值,left才能填值只有当ScrollWidth值大于,窗体本身的Width时,滚动条才会显示。这个时候left表示滚动条离左侧的距离

     

     

     

     

     

     

     

     

     四、窗体事件、方法简介

    •  常用事件

    Initialize

    就是在初始化窗口时,要对窗口干的事情,比如给窗口属性赋值,给窗体内包含的控件赋初始值。

    Click

    点击窗体时,会干的事情,比如隐藏窗体等等

    Terminate

    关闭窗体是要干的事情,比如保存文件,关闭excel等

    • 怎么弄出来事件呢?

    先在左边选中窗口(对象),右边基本上都是事件。。。每个对象能响应的事件可能是不一样多的

    • 常用方法

    move,copy等等呢

    • 怎么弄出来方法呢?

    跟你写代码一样,写出这个对象在.一下,后面跟的就是方法和属性

    一般黑色表示属性,绿色标识方法。

    五、Initalize 、click事件示例

    下列示例假设程序中已有两个窗体UserForms。在 UserForm1 的Initalize事件中加载 UserForm2 ,并将其显示出来。当用户单击 UserForm2 时,就会将其隐含起来,而 UserForm1 将会出现。而当用户单击 UserForm1 时,UserForm2 便会再次出现。

    '这是 UserForm1 的 Initialize 事件过程
    Private Sub UserForm_Initialize()
        Load UserForm2
        UserForm2.Show
    End Sub
    '这是 UserForm2 的 Click 事件过程
    Private Sub UserForm_Click()
        UserForm2.Hide
    End Sub
    
    ' 这是 UserForm1 的 Click 事件
    Private Sub UserForm_Click()
        UserForm2.Show
    End Sub
    

     

    展开全文
  • EXCEL VBA未公开的内部函数,实现自动延时关闭对话框,可自定义延时时间。
  • 在利用api引用excel窗体的事件中,有时需要将小窗体按钮“最小化,最大化,关闭”隐藏起来
  • 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表示不允许用户关闭。


    展开全文
  • Excel VBA(08)窗体和控件

    千次阅读 2020-04-29 16:36:58
    3、关闭窗体 代码关闭是 unload testform方法 4、显示设置 窗体标题:caption 背景色:backcolor 背景图片:picture,代码里面可以使用loadpicture()方法进行加载 属性窗口里面可以查看 5、位置大小 to...

    基础部分

    一、窗体的基本操作

    1、窗体插入

    2、运行窗体

    • 要么直接在窗体的界面点击运行按钮
    • 要么用代码调用窗体的 show 方法

    3、关闭窗体

    • 代码关闭是 unload testform方法

    4、显示设置

    • 窗体标题:caption
    • 背景色:backcolor
    • 背景图片:picture,代码里面可以使用loadpicture()方法进行加载

    属性窗口里面可以查看

    5、位置大小

    • top、left、height、width
    • startupPosition 启动显示位置

    6、显示行为

    • showModal 的值就是 true 或者false 可以设置显示窗体的时候是否可以进行其他的操作

    7、删除窗体

    二、控件的基本操作

    1、控件插入

    在这里插入图片描述

    2、删除

    3、对齐

    • 菜单栏格式里面
    • 可以选中多个控件进行布局的操作

    4、tab键相关

    在这里插入图片描述

    5、控件循环

    • 所有控件集合 controls
    • controls(index) controls("name")可以选定具体的控件

    6、控件类型判断

    • typename 判断控件类型
    Private Sub UserForm_Click()
        For i = 0 To Controls.Count - 1
            If TypeName(Controls(i)) = "TextBox" Then
                MsgBox Controls(i).Value
            End If
        Next i
    End Sub
    

    窗体事件

    • 和前面讲的工作表事件等是一样的,只需要特别注意一下键盘事件和鼠标事件
      在这里插入图片描述

    一、键盘事件

    1、keydown

    • keyCode 唯一,shift 参数不同的值分别代表ctrl、shift、alt
    Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    ''''''''''''''code
    End Sub
    

    2、keyup

    Private Sub UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    ''''''''''''''code
    End Sub
    

    3、keypress

    Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    ''''''''''''''code
    End Sub
    

    keydown keypress 都是按键按下,但是一般使用keydown,功能更加强大

    二、鼠标事件

    1、mousedown

    • button不同的值分别代表左右和中键
    • shift 也是和上面一样
    • x 和 y 就是鼠标的位置坐标
    Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    
    End Sub
    

    2、mouseup

    Private Sub UserForm_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    
    End Sub
    

    3、mousemove

    Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    
    End Sub
    

    vba一行的代码很长的话可以使用空格加下划线然后enter的方式进行换行


    标签和按钮

    一、按钮

    1、快捷键设置

    • 就是设置 Accelerator 属性,然后通过 alt 键加设置的键就可以激活按钮的 click 事件

    2、enter 和 esc 响应

    • 就是 default 和 cancel 属性都设置为true,然后窗体显示并且焦点在按钮上的时候按 esc 和 enter 就会激发按钮的 click 事件

    二、标签

    • label 标签基本就是用来显示一定的提示内容
    • 具体的属性使用的时候可以通过属性窗口进行摸索

    文字框

    • maxLength 和 autoTab 属性可以实现输入多少个字符自动切换
    • 基本的事件也是可以通过名字完全看懂的,不多说
    • 其他的使用基本上也是琢磨属性窗口的内容

    列表和组合框

    • 这两个的用法基本是一致的,就是下拉框比一般的列表更加节省空间而已
    • 选项的填充可以使用 additem 方法,可以用数组赋值给 list 属性,可以直接引用单元格区域赋值到RowSource 属性
    • 选项的移除使用 removeitem 方法

    一、combobox

    • listIndex 代表当前选中项的索引:ComboBox1.List(ComboBox1.ListIndex, 2)
    • list 可以获取到具体的某个行列的值,第一个参数是行数,后一个是列数

    二、listbox

    • multiselect 设置是否可以选中多行
    • selected 方法可以判断选项是否选中
    Private Sub ComboBox1_Change()
        Label1.Caption = "选中项的返回值是:" & ComboBox1.Value
    End Sub
    
    Private Sub CommandButton1_Click()
        Dim arr
        arr = Sheets(1).Range("a8:e15")
        ComboBox1.ColumnCount = 5 '设置下拉框显示的列数
        ComboBox1.BoundColumn = 3 '设置选中返回的列的数据
        ComboBox1.TextColumn = 3 '设置选中下拉框的显示列
        ComboBox1.List = arr
    End Sub
    Private Sub CommandButton2_Click()
        ListBox1.RowSource = "Sheet1!A8:E12"
        ListBox1.ColumnCount = 5
        ListBox1.ColumnHeads = True
        ListBox1.BoundColumn = 3
        ListBox1.TextColumn = 2
    End Sub
    
    Private Sub CommandButton3_Click()
        MsgBox ComboBox1.List(ComboBox1.ListIndex, 2)
    End Sub
    
    Private Sub CommandButton4_Click()
        For i = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(i) Then
                MsgBox ListBox1.List(i, 2)
            End If
        Next i
    End Sub
    

    在这里插入图片描述


    单选、复选、框架、多页

    一、单选、复选、框架

    • 单选和复选必须要通过框架才能成组
    • 不然对于单选框一个窗体的话只能有一个被选中
    Private Sub Frame1_Click()
        If 男.Value Then sr = "you sex:" & 男.Caption
        If 女.Value Then sr = "you sex:" & 女.Caption
        If 中.Value Then sr = "you sex:" & 中.Caption
        TextBox1.Value = sr
    End Sub
    
    Private Sub Frame2_Click()
        Dim sr As String
        sr = "爱好:"
        If 唱歌.Value Then sr = sr & 唱歌.Caption & Chr(10)
        If 跳舞.Value Then sr = sr & 跳舞.Caption & Chr(10)
        If 篮球.Value Then sr = sr & 篮球.Caption & Chr(10)
        TextBox2.Value = sr    
    End Sub
    

    在这里插入图片描述

    二、微调、滚动调节

    • 二者基本的使用都是一致的
    • 都包含 max 、min最大最小值属性
    • 滚动条支持步长 smallChange 和 largeChange 属性,微调只支持前者
    • 对滚动条来说 smallChange 设置的是点击箭头按钮的该表量,largeChange 是设置直接点击滚动条的改变量
    Private Sub ScrollBar1_Change()
        ScrollBar1.SmallChange = 2
        ScrollBar1.LargeChange = 10
        ScrollBar1.Min = 10
        ScrollBar1.Max = 80
        TextBox4.Value = ScrollBar1.Value
    End Sub
    
    Private Sub SpinButton1_Change()
        SpinButton1.SmallChange = 2
        TextBox3.Value = SpinButton1.Value
    End Sub
    

    在这里插入图片描述

    vba 中的Me变量代表代码所在的对象,如果是工作表代码就代表该工作表,如果是窗体代码就代表窗体

    三、多页

    1、图片控件

    Private Sub Image1_Click()
        f = Dir("C:\Users\user\Desktop\*.jpg")
        Do
            ListBox1.AddItem f
            f = Dir
        Loop While (Len(f) <> 0)
    End Sub
    Private Sub ListBox1_Click()
        Dim path As String
        path = "C:\Users\user\Desktop\" & ListBox1.Value
        Image1.Picture = LoadPicture(path)
    End Sub
    

    在这里插入图片描述

    2、多页

    • 选项卡的索引是从 0 开始的
    • style 属性设置为 2 可以隐藏上面的 tab 卡
    Private Sub Label1_Click()
        MultiPage1.Style = 2
    End Sub
    
    Private Sub MultiPage1_Change()
        MsgBox MultiPage1.Value
        MultiPage1.Value = 3
    End Sub
    

    ListView控件


    TreeView控件


    日期和进度条(略)


    综合实例


    命令栏操作(略)
    功能区操作(略)
    代码操作代码(略)

    展开全文
  • Public Function getTblExcel(strExcel As String) On Error GoTo Create '-----------定义Excel的对象----------... Dim xlApp As Excel.Application '引用了 Microsoft Excel 14.0就会出现这个对象 Dim xlWbk As E
    Public Function getTblExcel(strExcel As String)
        On Error GoTo Create
        '-----------定义Excel的对象--------------
        Dim xlApp As Excel.Application '引用了 Microsoft Excel 14.0就会出现这个对象
        Dim xlWbk As Excel.Workbook
        Dim xlWsh As Excel.Worksheet
        Dim Rng As Excel.Range
        Dim rsNum As Integer
        '-----------定义DAO的对象用于创建DAO记录集--------------
    
        '------开始创建进行数据引出操作-------
    
        Set xlApp = GetObject(, "Excel.Application")
        xlApp.Visible = True
        Set xlWbk = xlApp.Workbooks.Add
        Set xlWsh = xlWbk.Worksheets(1)
        xlWsh.Activate
    
        xlWbk.Close
    
        Set xlWsh = Nothing
        Set xlWbk = Nothing
        '-----这个用来检查关闭此工作簿之后,是否还存在工作簿
        '------如果没有的话就直接关闭Excel程序
        '------如果没有的话就直接关闭Excel程序
        If xlApp.Workbooks.Count = 0 Then
            xlApp.Quit'之前以为是Set xlApp= Nothing,其实不是的
        End If
    Create:
        If Err = 429 Then
            Set xlApp = CreateObject("Excel.Application")
            Resume Next
        End If
    End Function
    展开全文
  • Excel VBA之立即窗口

    千次阅读 2020-06-03 11:46:20
    立即窗口介绍: 1.在VB编辑器窗口,选择“视图”-“立即窗口” 在决定使用在你自己的VBA过程之前,立即窗口可以用来试验VB语言中不同的指令,函数和运算符。...立即窗口允许你输入VBA语句,并且测试它们...
  • 如何建立窗体,并通过窗体向该表内添加订单。 序号 姓名 科室 级别 身份 职称 受聘专业 性别 出生年月 年龄 参工时间 工作年限 入院时间 入院年限 职务 等级 ...
  • 我用做了一个Excel Vba小程序,程序的工程属性的查看、代码的查看都加密了。如下图。 ![图片说明](https://img-ask.csdn.net/upload/201901/29/1548733783_872377.jpg) 设置有关闭工作簿时的事件,本来一直...
  • 窗体Excel VBA中提供的一种窗口对象。它属于工作簿对象(Workbook)中VB工程对象(VBProject)下的VB组件集合(VBComponents)中的一个组件。使用窗体制作专业化的软件界面时,Excel VBA允许在窗体中添加ActiveX...
  • 使用VBA让Word或Excel文档窗口置顶

    千次阅读 2019-05-13 16:02:39
    在使用Word或Excel时有时需要让窗口总是显示在最前面而不被别的窗口挡住,虽然Word或Excel并没有提供这样的功能,但是在VBA中使用API函数“SetWindowPos”可以让窗口总在最前面,具体操作如下: 1. 打开需要置顶的...
  • VBA窗体默认只有一个关闭按钮,没有最大化和最小化按钮,下面的代码可以方便的为窗体增加最大、最小化按钮,让窗口使用更方便。 调用方法 窗体最大最小化 Me 窗体最大化 Me 函数代码 '窗体的最大最小化 Public ...
  • VBA自学应用(2)——制作简单的数据录入窗口

    万次阅读 热门讨论 2019-12-29 19:24:50
    制作简单的数据录入窗口 一、画一个你的窗体 二、编写窗体代码 三、使用工作表事件激活窗体 四、补充:关于鼠标在listbox中的滚轮实现 现如今有两张表,一张产品表,一张录入表,如图所示。 我们要做出如下效果: ...
  • 一种使userform的右上角关闭按钮失效的方法 Private Sub UserForm_queryclose(cancel As Integer, closemode As Integer) If closemode = 0 Then cancel = True End Sub
  • 判断窗体中是否有子窗体的模块代码来源:www.accessoft.com 点击数:2744 评论数:3 评论 | 收藏 | 复制 ...摘 要:判断窗体中是否有子窗体的模块代码 正 文:Sub FrmHasChildForm() Dim ctrl As Control Dim fr
  • 如果消息框只是提醒用户,并不需要获取用户的输入,那么使用可以自动关闭的消息提示框,可以避免程序暂停挂起,无法继续执行的问题,但是VBA中提供的MsgBox无法实现自动关闭的功能。下面介绍一个未公开的Windows API...
  • 动态显示与隐藏窗体 题 如图所示,该表为某单位员工档案。现希望制作一个包含有文本框的浮动工具栏,当在文本框中输入字符并按【Enter】键后,对该表进行模糊查找,将该表中不含有该字符的所有记录隐藏。 序号 ...
  • Unload UserForm1 实现关闭窗体  ListBox事 件   →  常用函数    → Instr(2, "eAlex", "e") 返回e在Alex中第一次出现的位置(从第1个字符开始算起,结果是4) → Round(34....
  • 上一张介绍了窗体,主要目的是可以输入各种过滤条件。那么怎么展示呢?我们之前已经确定要使用excel本身来展示过滤(查询)结果。本章对我们要操作的excel的元素进行简单介绍,包括我们要使用的基本对象,对象的方法...
  • Excel VBA - 文件打开或关闭相关

    万次阅读 2011-11-01 13:00:26
    关闭Workbook ActiveWorkbook.Close SaveChanges:=True, Filename:=ThisWorkbook.Path & "\工作簿1" 第一个参数表示保存改变,第二个参数表示工作簿名称,同时可以加入路径 Sub addSheet() ...
  • VBA 用户窗体的认识

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

    万次阅读 多人点赞 2019-04-11 16:45:51
    文章目录如何创建VBAVBA语法规则声明变量给变量赋值让变量存储的数据参与运算关于声明变量的其他知识变量的作用域特殊的变量——数组声明多维数组声明动态数组其他创建数组的方法数组函数利用UBound求数组的最大索引...
  • 如图所示,该表为某公司工资表与员工档案表,当查看工资表时,希望能够在双击员工姓名时,在员工档案表中查询该员工的基本信息,并临时创建一个窗体显示该员工信息。 月份 工作地区 部门 姓名 基本...
  • VBA关闭工作簿和退出Excel

    万次阅读 2013-07-12 10:01:54
    要用VBA关闭工作簿,用Workbook.Close 方法即可,而要退出Excel,则用Application.Quit 方法。下面是一些代码示例:  关闭活动工作簿,如果工作簿有更改,提示是否保存:  Sub CloseWorkbook()  ...
  • EXCEL编程VBA高级教程

    2015-04-16 11:40:55
    1.2EXCEL环境中基于应用程序自动化的优点................................................................................1 1.3录制简单的宏....................................................................
  • VBA研究】EXCEL启动时自动启动窗体

    千次阅读 2015-08-26 10:09:44
    VBA编程时为了界面美观,我们经常用到窗体Form,那么,如何做到让VBA窗体EXCEL启动时自动运行呢? 方法有二,第一,双击ThisWorkbook,输入以下代码(Open事件): Private Sub Workbook_Open() UserForm1.Show ...
  • VBA实现窗口登录

    2021-10-29 10:17:41
    ' 窗口事件 Private Sub CommandButton1_Click() ' 登录 If ComboBox2.Text = "" Or TextBox1.Text = "" Then MsgBox "请输入账户或密码", 1 + 64, "系统登录" Else If 特定用户密码登录(ComboBox2) = TextBox1.Text...
  • VBA文件夹,直接解压后,放到%Common Files%\microsoft shared下, 再通过win+r调出CMD窗口,输入regedit后弹出注册表编辑器, 找到HKEY_CLASSES_ROOT\TypeLib\{0002E157-0000-...关闭已经打开的OFFICE,再打开就可以了
  • 在《EXCEL VBA经典代码大全》里看到如下代码,代码段1,可以让提示窗体自动延时关闭。觉得非常有意思,就把类似代码化用到ACCESS的一个定时刷屏的窗体内,如下代码段2,结果弹出的提示窗体不能延时关闭,必须点击...
  • Excel VBA 基础教程

    2019-01-01 18:51:06
    .................................................................................................................1 1.1 VBA是什么...........................................................................

空空如也

空空如也

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

vbaexcel关闭窗体