精华内容
下载资源
问答
  • 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位 '查找窗口 Private Declare PtrS...

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

    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
    
    
    
    展开全文
  • 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表示不允许用户关闭。


    展开全文
  • ActiveWindow.Close'关闭当前显示文件 sDir = Dir Wend End If End Sub ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳ 16、自动打开excle中用户窗体和隐藏VBA中...
    											目   录
    
    编号名称编号名称编号名称编号名称编号名称
    1错误类2全局变量3开关4弹窗5换行
    6调试打印7引用8延时9日志窗口显示(全局文本)10调用外部软件
    11按钮状态改变12调用参数13路径选择14日志导出15excle文件格式转换
    16VBA隐藏表格17改变窗体外观18更改Sheet名19对文件夹中多个文件进行操作20合并单元格
    21插入一行单元格22在指定单元格内输入字符23调整行高和列宽24跳转到该列最后一个数值25获取当前单元格所在的行号和列号
    26格式刷(公式复用)27筛选28查找替换29单元格颜色30字符居中
    31添加公式32复制某个单元格33单元格引用34单元格边框35复选框执行
    36取消(退出软件)37If Else38For Next39While wend40Do Loop
    41附 录:42434445
    											 代   码
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    1、错误类
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    错误类:
    On Error Resume Next '忽略运行过程中可能出现的错误(添加在函数的前面)
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    2、设置全局变量
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    设置全局变量:
    public i '将i设置成全局变量
    sub 全局变量()
    end sub
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳、
    3、开关
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    开关:
    	public i '将i设置成全局变量
    	sub 点击一下开再点击一下关()
    	if i = 0 then
    		'编写需要的代码满足何种条件后将i置为1
    		i = 1
    	else
    		'编写需要的代码满足何种条件后将i置为0
    		i = 0
    	end if
    	end sub
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    4、弹窗
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    弹窗:
    sub 弹窗()
    	MsgBox("这里编写弹出的提示框显示内容")
    end sub
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    5、换行
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    换行显示:
    & chr(10)
    长代码连写:
     _
    If i = 1 _
    Then
    i = 0
    End If
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    6、调试打印
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    打印参数值:
    Debug.print *'*为变量、引用值、固定字符等
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    7、引用
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    引用:
    x = 1
    msgbox("这是要引用值x显示的地方") & x’文本后引用
    MsgBox ("文件执行" & x & "日志已导出到")'这是中间引用
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    8、延时
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    延时:
    Application.Wait Now + TimeValue("00:00:1")'最低延时为1秒
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    9、日志窗口显示(全局文本)
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    日志:
    public x '将x设置成全局日志内容
    sub 日志()
    日志.text = "这是日志类容"'固定日志(方法1)
    全局日志.text = x + "这是新日志类容"'x为之前日志类容(方法2)
    x = 全局日志.text
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    10、调用外部软件
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    调用外部软件:
    sub 调用外部软件()
    On Error Resume Next '忽略运行过程中可能出现的错误
    Set oShell = CreateObject("WSCript.shell")
    ret = oShell.Run(Application.ActiveWorkbook.Path & "\调用软件名称.exe " & " 传入的参数", 0, True) 
    Set oShell = Nothing
    end sub
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    11、按钮状态改变
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    按钮控件状态改变:
    '总窗口名称为该用户窗体最外层的背景窗口
    总窗口名称.Controls("按钮控件名称").Value = False'False为关
    总窗口名称.Controls("按钮控件名称").Value = True'True为开
    判断复选框是否被选中:
    if 总窗口名称.Controls("按钮控件名称").Value = True Then'True为选中
    '这里写被选中后要执行的代码
    else
    '这里写没被选中时要执行的代码
    End if
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    12、调用参数
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    调用参数:
    调用.text = "在对应窗口显示这一段字符"'在文本窗口显示文字(调用为控件名称)
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    13、路径选择
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    路径选择:
    public x '将x设置成全局路径变量
    Private Sub 路径选择_Click()
    Set objFD = Application.FileDialog(msoFileDialogFolderPicker)
    With objFD
    If .Show = -1 Then
    ' 如果单击了确定按钮,则问将选取的路径保存在变量中
    x = .SelectedItems(1)
    End If
    End With
    Debug.Print x
    文件路径.Text = x'输出文件路径日志
    End Sub
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    14、日志导出
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    导出日志txt:
    public x '将x设置成全局路径变量
    public i '将i设置成全局日志变量
    Private Sub 日志导出_Click()
    Dim Fso, Fil
    日志导出.Caption = "日志已导出"'将按钮文字变成日志已导出
    日志导出.Enabled = False'日志导出按钮不可编辑
    Application.Wait Now + TimeValue("00:00:5")'按钮文字改变延时
    myPath1 = "" & x  '导出的日志所在的文件夹路径
    Set Fso = CreateObject("Scripting.FileSystemObject") '访问系统文件
    Set Fil = Fso.OpenTextFile(myPath2, 8, 1) '打开文本文件
        Fil.Write i '将i中所含所有字符写入文本
        Fil.WriteBlankLines (5) '换5行
    Fil.Close '关闭文本文档
    日志导出.Caption = "导出日志"'将日志导出按钮文字变成导出日志
    日志导出.Enabled = True'日志导出按钮不可编辑
    End Sub
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    15、excle文件格式转换
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    Private Sub CSV转xlsx_Click() 'CSV转Xlsx
         Dim sDir As String
         Dim curdir As String
         curdir = "设置文件路径" '找到需要转换的文件路径
         sDir = Dir(curdir & "\*.csv")'显示文件列表
         While Len(sDir)'循环当前文件夹中文件个数
         Workbooks.Open FileName:=curdir & "\" & sDir'打开当前文件夹中符合条件的文件
         Dim temp As String'(这个定义需要在循环内部)
         temp = Left(sDir, Len(sDir) - 4)
         'Left函数从给定输入字符串的左侧返回指定数量的字符
         '语法:Left(String, Length)
         'String - 必需的参数。 输入从左侧返回指定数量的字符的字符串
         'Length - 必需的参数。 一个整数,指定要返回的字符数
         ActiveWorkbook.SaveAs FileName:=curdir & "\" & temp & ".xlsx", _
            FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False'另存为 & temp & .xlsx类型的文件
            ActiveWorkbook.Save'保存当前显示文件
            ActiveWindow.Close'关闭当前显示文件
         sDir = Dir
         Wend
    End If
    End Sub
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    16、自动打开excle中用户窗体和隐藏VBA中excle表格(只显示用户窗体)
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻
    样例

    自动打开excle中用户窗体和隐藏VBA中excle表格(只显示用户窗体)
    在Microsoft excle 对象中的ThisWorkbook中
    Private Sub WORKBOOK_OPEN()
    用户主窗体名称.Show'自动打开用户窗体
    Application.Visible = False '隐藏EXCEL主窗口
    End Sub
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    17、改变窗体外观(背景色,是否隐藏等)
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    改变窗体外观(背景色,是否隐藏等)
    Private Sub 改变外观_Click() 
        窗体控件1.BackStyle = fmBackStyleOpaque '背景显示白色
        窗体控件2.BackStyle = fmBackStyleTransparent '背景显示为透明
        窗体控件1路径显示.BackStyle = fmBackStyleOpaque '背景显示白色
        窗体控件2路径显示.BackStyle = fmBackStyleTransparent '背景显示为透明
        窗体控件1路径显示.SpecialEffect = fmSpecialEffectSunken '路径显示背景框
        窗体控件2路径显示.SpecialEffect = fmSpecialEffectFlat '路径不显示背景框
        窗体控件1.Enabled = True '可以点击操作
        窗体控件2.Enabled = False '不可点击操作
    End Sub
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    18、更改Sheet名
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    更改Sheet名
    Private Sub 更改Sheet名_Click() 
    Dim sDir As String
    Dim curdir As String
    curdir = "" & sPath1 '找到需要转换的文件路径
    If Dir(curdir & "\*.csv") = "" Then'判断文件后缀
    sDir = Dir(curdir & "\*.xlsx")
    Else
    sDir = Dir(curdir & "\*.csv")
    End If
    While Len(sDir)'遍历文件后依次操作
    Workbooks.Open FileName:=curdir & "\" & sDir
    Dim temp As String
    temp = Left(sDir, Len(sDir) - 4)
    ActiveWorkbook.SaveAs FileName:=curdir & "\" & temp & ".xlsx", _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        Sheets(1).Name = "Sheet1" '修改文件表的Sheet名称为Sheet1
        ActiveWorkbook.Save
        ActiveWindow.Close
    sDir = Dir
    Wend
    End If
    End Sub
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    19、对文件夹中多个文件进行操作
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    Dim sPath1 As String'定义的sPath1为全局变量
    Private Sub 多文件操作_Click()
            Dim aList() As String
                curdir1 = "" & sPath1 '文件夹目录
                sDir1 = Dir(curdir1 & "\*.xlsx") '不同后缀记得替换:(csv、xlsx、xlsm)
                '可以将sDir1增加判断对不同类型的文件进行操作。
            Do While sDir1 <> 'sDir1不等于空
            If sDir1 = "" Then '用来判断文件夹中是否还存在文件,如果没有文件则跳出循环
            MsgBox ("当前文件夹中没有符合筛选条件的文件,请确认路径是否正确")
            Exit Sub'退出当前函数
            End If
                    ReDim Preserve aList(0 To i) As String  '重定义数组大小
                    aList(i) = sDir1 '列表a
                    Workbooks.Open FileName:=curdir1 & "\" & aList(i) '打开文件
                    Application.WindowState = xlMaximized '窗口最大化
                    '在这里添加操作代码,例如增、删、改、查等
    				ActiveWorkbook.Save
                    ActiveWindow.Close
    		i = i + 1
    		sDir = Dir()'查找下一个目录
    		Loop
    	end Sub
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    20、单元格格式设置(合并单元格)
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

     Range("A1:B1").Select'单元格A1到B1
            With Selection
                .HorizontalAlignment = xlCenter '水平对齐
                .VerticalAlignment = xlCenter '垂直对齐
                .WrapText = False '文字换行(居中为True)
                .Orientation = 0 '方向(文本方向)
                .AddIndent = False '添加缩进
                .IndentLevel = 0 '缩进量(范围0-15)
                .ShrinkToFit = False '收缩到合适(自动调整)
                .ReadingOrder = xlContext '读写次序(从左往右写还是从右往左写)
                .MergeCells = False '合并单元格
            End With
            Selection.Merge'选择并合并
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    21、插入一行单元格
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

     Rows("1:1").Select'插入首行
            Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    22、在指定单元格内输入字符
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    Range("A1").Select
    ActiveCell.FormulaR1C1 = "这是需要输入的字符"
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    23、调整行高和列宽
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    Rows("1:1").Select'调整第一行行高
    Selection.RowHeight = 90'行高90
    Columns("Z:Z").ColumnWidth = 7 '设置Z列单元格列宽为7
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    24、跳转到该列最后一个数值
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    Range("A1").Select'从A1开始
    Selection.End(xlDown).Select '到有字符的最后一行,相当于按住ctlr+shift+↓
    x = Selection.Row() '获取当前选择框所在的行号
    y = Selection.Column() '获取当前选择框所在的列号
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    25、获取当前单元格所在的行号和列号
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    x = Selection.Row() '获取当前选择框所在的行号
    y = Selection.Column() '获取当前选择框所在的列号
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    26、格式刷(公式快速复用)
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    该方法一般需要配合获取当前单元格所在的行号和列号使用
    先找有数据的单元格,使用Selection.End(xlDown).Select '到有字符的最后一行,相当于按住ctlr+shift+↓方法跳转到最后一行,然后使用x = Selection.Row() '获取当前选择框所在的行号, y = Selection.Column() '获取当前选择框所在的列号。然后让单元格在需要写入公式的最后一行中写入1(1没有任何意义,只是为了让该单元格有字符)其他需要同样操作的单元格类似,然后使用下面的代码,将该列所需要复用的公式进行复用。
    公式复用演示

    Range("I2").Select
    ActiveCell.FormulaR1C1 = "=RC[-6]-RC[-4]" '以当前单元格(I2)为坐标,用负轴(-6)单元格减去(-4)单元格(从后往前数6个格子和4个格子)
    Range("J2").Select
    ActiveCell.FormulaR1C1 = "= RC[-7]-RC[-4]" '以当前单元格(J2)为坐标,用负轴(-7)单元格减去(-4)单元格(从后往前数7个格子和4个格子)
    Range("K2").Select
    ActiveCell.FormulaR1C1 = "=RC[-8]-RC[-4]"
    Range("K3").Select
    Range("I2:K2").Select '选中I2,J2,K2单元格(三个连在一起全选)
    Range(Selection, Selection.End(xlDown)).Select '将上面的三个全选单元格选中后按住ctlr+shift+↓到有数值的最后一行(之前写的3个1)
    Selection.FillDown '按ctrl+D实现前面三个单元格同样的公式操作
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    27、筛选
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    添加筛选
                Range("A1:K1").Select '选中A1到K1
                Selection.AutoFilter '增加筛选功能
    筛选条件
                Columns("E:E").Select '选择E列
                '单项筛选
                ActiveSheet.Range("$A$1:$K$" & x).AutoFilter Field:=5, Criteria1:="=" '选择5列进行筛选,筛选值为空
                '多项筛选
                ActiveSheet.Range("$A$1:$K$" & x).AutoFilter Field:=5, Criteria1:="=null", _
                  Operator:=xlOr, Criteria2:="=" '选择第5列筛选值为null(Criteria1:="=null")和空白值(Criteria2:="=" )
                e = ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1 '返回筛选后的符合条件的个数
    
    取消筛选(全选显示)
     			Columns("G:G").Select
                ActiveSheet.Range("$A$1:$K$" & x).AutoFilter Field:=7 '全选第7列筛选(取消第7列的筛选)
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    28、查找替换
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    Cells.Replace What:="null", Replacement:="", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False '查找并替换null值为空白(不写入任何字符)
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    29、单元格颜色
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    去除颜色
                Columns("A:K").Select'选择A列到K列
                With Selection.Interior '循环将填充颜色去除
                    .Pattern = xlNone
                End With
    

    添加颜色
    Range(“L3:P3”).Select’L3到P3这些单元格添加绿色
    With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorAccent6
    .TintAndShade = 0.799981688894314
    '07***为浅绿,0.599993896298105中浅绿,0.399975585192419浓绿
    .PatternTintAndShade = 0
    End With

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    30、单元格设置(字符居中)
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    '这段代码是录制的,单元格格式参数如果懒得一一百度就使用录制
    Columns("A:K").Select
                Selection.Borders(xlDiagonalDown).LineStyle = xlNone'选择。边框(xl对角线向下)。线条样式 = xlNone
                Selection.Borders(xlDiagonalUp).LineStyle = xlNone'选择。边框(xl对角线向上)。线条样式 = xlNone
                With Selection.Borders(xlEdgeLeft)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With
                With Selection.Borders(xlEdgeTop)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With
                With Selection.Borders(xlEdgeBottom)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With
                With Selection.Borders(xlEdgeRight)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With
                With Selection.Borders(xlInsideVertical)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With
                With Selection.Borders(xlInsideHorizontal)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With
                With Selection '循环被选中的单元格设置居中
                    .HorizontalAlignment = xlCenter’水平对齐
                    .VerticalAlignment = xlCenter‘垂直对齐
                End With
                HorizontalAlignment = xlCenter
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    31、在单元格内添加公式(SUMPRODUCT)
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    Range("AA3").Select
         ActiveCell.FormulaR1C1 = _
            "=SUMPRODUCT((R2C9:R" & x4 - dy & "C9>-1)*(R2C9:R" & x4 - dy & "C9<1))"
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    32、复制某个单元格
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    Range("AB3").SelectTr
    Application.CutCopyMode = True
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    33、单元格引用
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    Range("T5:AA5").Select '将表格T5至AA5
       ActiveCell.FormulaR1C1 = "=R" & x4 + 1 & "C[-12]" '上一行代码需要取值的单元格(该单元格值等于哪一个单元格值)
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    34、单元格边框
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    Selection.Merge '将表格加边框
                Range("L1:AS5").Select
                Selection.Borders(xlDiagonalDown).LineStyle = xlNone
                Selection.Borders(xlDiagonalUp).LineStyle = xlNone
                With Selection.Borders(xlEdgeLeft)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With
                With Selection.Borders(xlEdgeTop)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With
                With Selection.Borders(xlEdgeBottom)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With
                With Selection.Borders(xlEdgeRight)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With
                With Selection.Borders(xlInsideVertical)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With
                With Selection.Borders(xlInsideHorizontal)
                    .LineStyle = xlContinuous
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                    .Weight = xlThin
                End With
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    35、复选框执行
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    Private Sub Checkbox1_Click()
    if box1 = True and w1 = 1 Then'这里使用判断来控制复选框执行。用户只点击复选框时,复选框可以被勾选但不执行。必须要点击下面的执行按钮才能剩下执行。(这是折中方案)
    '这里写入该模块的功能代码
    end if
    end sub
    

    Private Sub Checkbox2_Click()
    if box2 = True and w2 = 2 Then'这里使用判断来控制复选框执行。用户只点击复选框时,复选框可以被勾选但不执行。必须要点击下面的执行按钮才能剩下执行。(这是折中方案)
    '这里写入该模块的功能代码
    end if
    end sub
    

    Private Sub Checkbox3_Click()
    if box3 = True and w3 = 3 Then'这里使用判断来控制复选框执行。用户只点击复选框时,复选框可以被勾选但不执行。必须要点击下面的执行按钮才能剩下执行。(这是折中方案)
    '这里写入该模块的功能代码
    end if
    end sub
    

    Pubilc w1, w2, w3'定义三个全局变量
    Private Sub 执行_Click() '
    j = "" '初始化为空
    For m = 1 To 3 '开始循环,有几个复选框选项则写几。该项目中有3个选项所以写3
        If 用户主窗体名称.Controls("Checkbox" & m).Value = True Then '如果复选框被选中(""&m)引号给的是复选框名字
        If m = 1 Then
        box1 = True
        End If
        If m = 2 Then
        box2 = True
        End If
        If m = 3 Then
        box3 = True
        End If
        If j = "" Then '并且字符串当时为空
        j = 用户主窗体名称.Controls("Checkbox" & m).Caption '就将复选框的名字即j存放到char中
        Else: j = j & "," & 用户主窗体名称.Controls("Checkbox" & m).Caption '如果字符串已经有个1或2或3了,那么将新的内容用逗号与字符串中已经有的值连接起来
        End If
        End If
        Next
        if box1 = True Then'如下注释1
         用户主窗体名称.Controls("Checkbox1").Value = False'将Checbox1变成去勾选状态
         w1 = 1'将w1赋值为1
         用户主窗体名称.Controls("Checkbox1").Value = True'将Checbox1变成勾选状态
         w1 = 0'将w1赋值为1
         end if
         '注释1:这里之所以这样写是没有找到勾选复选框时不执行,只有点执行时才会执行的办法,所以选择了
         '折中先判断复选框是否被勾选了,如果勾选了将下面的box置为True。然后在所有的条件判断完成后再
         '将已被勾选的窗体去勾选,由于不满足执行条件,该控件下的代码不会执行,紧接着将w赋值后再将窗体
         '勾选,这样控件执行的条件满足后就能够正常执行控件下面的代码。而去勾选和再勾选的过程因为时间极
         '短用户基本无感知。也可以不用该方法直接把代码放在执行模块下面直接执行。(技术有限,勿喷)
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    36、取消(退出软件)
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    Unload Me'退出软件
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    37、If Else
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    sub ifelse()
    i = 0
    If i = 0 Then
    i = 1'这里编写需要执行的代码
    ElseIf i = 1 Then
    i = 2'这里编写需要执行的代码
    Else
    i = 0'这里编写需要执行的代码
    End If
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    38、For Next
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    Sub forNext()
    Dim i%, j%
    For i = 1 To 10
    j = j + i
    Next
    MsgBox j
    End Sub
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    39、While wend
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    i = 0
    while i < 10
    i = i + (i+1)
    wend
    

    ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳
    40、Do Loop
    ┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻

    当条件成立,开始循环:
    sub Do()
    Dim i%
    Do While i<3
        i = i + 1
        MsgBox i
    Loop
    End Sub
    直到条件成立,跳出循环:
    sub Dountil()
    i  = 0
    Do Until i > 10:
    	i = i+1
    Loop
    msgbox("")  & i
    

    														  附     录:
    

    不同Sub含义:
    Public 表示 Sub 过程可被所有其他地方引用。和Sub性质一致,等价于Sub。
    Private 表示 Sub 过程只能被当前页或者窗体引用,所以只能在本模块内部可以访问。


    变量或字符串类型:
    Variant:变体型变量(类型可变),能够表除了定长string数据和用户自定义类型外可以包含任何种类的 数据,也可以包含empty、error、nothing、null等特殊值。使用该类型定义会导致代码执行时间变长。非必要时不要用。
    String:字符串类型。
    integer:整数(范围:-32768~32768)
    integer1:初始化是一个Variant类型的空值,随着对其的操作变成任意类型。
    integer2:会被正常的初始化为0。
    Dim integer1 as interger,integer2 as integer’这样1和2都为空值
    Long:长整型(范围:-214743648 ~ 214743648)
    Single 和 Double:单精度浮点数(Single) 和双精度浮点数(Double)
    Currency:货币型
    Byte:字节型
    Boolean:布尔型(表示逻辑值True或False)
    Date:日期(范围100年 ~ 9999年,0:00:00 ~ 23:59:59)
    object:对象型。利用set语句,声明为对象型的变量可以赋值为任何对象引用
    枚举型:

    Public Enum words 'Pubilc(公共)或Private(私有)
        中国
        英国
        美国
        法国
    End Enum
    Sub ad()
    	Dim from As words
    	from = 英国
    	from = 法国
    End Sub
    

    枚举型
    用户自定义类型:

    Type i
    i as Double
    End Type
    

    展开全文
  • VBA 用户窗体的认识(二)

    千次阅读 2020-08-19 23:24:04
    今天继续讲用户窗体啦~ 一、控件事件 昨天通过小例子,认识了按钮的点击事件(CommandButton1_Click),除此之外,还有部分控件常用事件。添加完控件后,双击一下,在上面下拉就可以查看到事件啦。 1.、...
  • 这个事件是在用户窗体关闭之前发生。 第一个参数Cancel :默认是0,除了0之外的任何数都会停止QueryClose事件; 第二个参数CloseMode:有以下四个参数。这个参数的意思是关闭这个程序的方式有哪些,比如说用户点了...
  • VBA禁用窗体关闭按钮

    千次阅读 2010-08-08 23:17:35
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Func...
  • 引言 本人本次实践的目标是数据查询。具体实现方式应该是: 使用窗体及其他控件做查询的条件的输入 使用excel作为查询结果的输出 从桌面上看应该是,...在VBA中也有,可以打开excel->开发工具 点开Visu...
  • 如果消息框只是提醒用户,并不需要获取用户的输入,那么使用可以自动关闭的消息提示框,可以避免程序暂停挂起,无法继续执行的问题,但是VBA中提供的MsgBox无法实现自动关闭的功能。下面介绍一个未公开的Windows API...
  • 1 工作簿workbook 常用的事件 1.1 常用事件 workbook_open() workbook_WindowActivate() workbook_Windowresize() workbook_sheetchange() workbook_sheetselectionchange() workbook_beforesave() ...
  • 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...
  • 1 Scripting Host(WSH)的Popup方法--测试不好用? 不知道为啥测试不好用 测试情况,也不能显示倒计时秒数, Sub test_sample1() 'Scripting Host(WSH)的Popup方法。...w1.popUp "3秒自动关闭", ...
  • 窗体是Excel VBA中提供的一种窗口对象。它属于工作簿对象(Workbook)中VB工程对象(VBProject)下的VB组件集合(VBComponents)中的一个组件。使用窗体制作专业化的软件界面时,Excel VBA允许在窗体中添加ActiveX...
  • 用户窗体定身术--禁止移动

    千次阅读 2018-09-10 11:23:05
    VBA中通过用户窗体的StartUpPosition属性可以指定窗体显示的位置,如下图所示。 但是用户可以随意拖动窗体调整位置,是否可以像孙悟空一样,给窗体施个定身术,固定位置无法移动呢? 用户窗体的移动可以通过...
  • Excel VBA(08)窗体和控件

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

    万次阅读 热门讨论 2019-12-29 19:24:50
    一、画一个你的窗体 首先在标签栏找到开发工具中的VB编辑器并打开 然后右键新建一个用户窗体 然后选中窗体模块,按F4打开窗体属性窗口(也可以在视图选项卡中打开),这里可以设置窗体的各种属性 接下来在视图选项...
  • 如果只要 获取一个确定名字的窗口标题 ,在VBA中使用,比如切换窗口。打开任务管理器,看看就对了。懒人做法。有示例源码
  • 使用VBA让Word或Excel文档窗口置顶

    千次阅读 2019-05-13 16:02:39
    在使用Word或Excel时有时需要让窗口总是显示在最前面而不被别的窗口挡住,虽然Word或Excel并没有提供这样的功能,但是在VBA中使用API函数“SetWindowPos”可以让窗口总在最前面,具体操作如下: 1. 打开需要置顶的...
  •  TextBox事件  →KeyPress事件的语法如下: KeyANSI只是个参数,所以可以改成任何喜欢的名字,每键入一个值的时候,都会触发KeyANSI,通过设置,可以实现限制默写值的键入。 →KeyDown事件 按下触发
  • 如何建立窗体,并通过窗体向该表内添加订单。 序号 姓名 科室 级别 身份 职称 受聘专业 性别 出生年月 年龄 参工时间 工作年限 入院时间 入院年限 职务 等级 ...
  • 和插入模块一样,插入用户窗体即可 1.2 如何运行/显示 窗体? 1.2.1 显示窗体的代码方法 据说,单写一句 userform1.show 也是可以的,因为VBE会自动先 load 这个窗体 load form1 '加载窗体,加载到内存,但不...
  •  大家都知道,VBA中自带的MsgBox不能自动关闭,某些特殊情况下需要在指定时间内用户没有点击消息框按钮后能继续运行代码,需要用到定时关闭的消息框,我一般都是自己做一个窗体显示,再用定时函数关闭对话框。...
  • VBA研究】EXCEL启动时自动启动窗体

    千次阅读 2015-08-26 10:09:44
    VBA编程时为了界面美观,我们经常用到窗体Form,那么,如何做到让VBA窗体在EXCEL启动时自动运行呢? 方法有二,第一,双击ThisWorkbook,输入以下代码(Open事件): Private Sub Workbook_Open() UserForm1.Show ...
  • 动态显示与隐藏窗体 题 如图所示,该表为某单位员工档案。现希望制作一个包含有文本框的浮动工具栏,当在文本框中输入字符并按【Enter】键后,对该表进行模糊查找,将该表中不含有该字符的所有记录隐藏。 序号 ...
  • VBA调试了不下十遍,但是,能得到这么完整的列表,绝对是值得的。不学好VBA,都有点对不起这么好的资料了,哈哈。Attribute/Method/Event Description Abs 返回参数的绝对值,其类型和参数相同。语法 Abs(number)...
  • 看了本文标题,什么叫事件? excel将下面叫做“数据”的工作表根据分类条件拆分成多个sheet工作表,表名为分类条件。 我的理解是发生了什么就执行一些相应的操作 可能比较难理解。下面我们就通过三个案例随事件...
  • 窗体上的按钮美化

    2014-08-21 15:44:48
    包含窗体上的关闭,最小化等的窗体按钮美化,让窗体更美观
  • vbMsgBoxHelpButton 16384 将Help按钮添加到消息框 VbMsgBoxSetForeground 65536 指定消息框窗口作为前景窗口,就是显示在窗口的最上层 vbMsgBoxRight 524288 文本为右对齐 vbMsgBoxRtlReading 1048576 指定文本应为...

空空如也

空空如也

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

vba用户窗体关闭事件