精华内容
下载资源
问答
  • 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 用户窗体的认识(二)

    千次阅读 2020-08-19 23:24:04
    今天继续讲用户窗体啦~ 一、控件事件 昨天通过小例子,认识了按钮的点击事件(CommandButton1_Click),除此之外,还有部分控件常用事件。添加完控件后,双击一下,在上面下拉就可以查看到事件啦。 1.、...

    今天继续讲用户窗体啦~

    一、控件事件

    昨天通过小例子,认识了按钮的点击事件(CommandButton1_Click),除此之外,还有部分控件常用事件。添加完控件后,双击一下,在上面下拉就可以查看到事件啦。

    1.、UserForm的事件

    ① Initialize:初始化事件

    ② Activate:显示用户窗体时发生

    ③Deactivate:窗体非激活的时候发生,但是隐藏了不会发生

    ④QueryClose:卸载用户窗体之前发生

    ⑤Terminate:卸载用户窗体之后发生

    2.、SpinButton的事件

    这个按钮是数值调节按钮

    ① 鼠标可以触发的事件:

    Enter、Change、SpinUp

    ② 键盘触发的事件

    Enter、KeyUp(释放Tab时触发)、KeyDown、Change、SpinUp(SpinDown)

    ③ 通过代码触发

     

    SpinButton就俩上下的箭头,怎么用呢?主要是和其他的控件配合一起使用啦,比如说放在文本框边上,控制文本框的数值大小:

    这样写即可在点击上箭头的时候进行加1,下箭头的时候进行减1操作:

    Private Sub SpinButton1_Change()
        Me.TextBox1.Text = Me.SpinButton1.Value
    End Sub

    但是这样还是粗糙了点,比如用户输入了100,再点加就是101,怎么实现呢?也很简单啦:

    Private Sub TextBox1_Change()
        Me.SpinButton1.Value = Me.TextBox1.Text
    End Sub

    此处就不加判断用户输入内容是不是字符串啦~

    二、自定义“工具箱”

    1.右键有惊喜

    对着工具箱上的“控件”二字点一下右键,会发现有上面这些内容。

    对着工具栏点击右键,就会出现上面这些东西。

     

    2.简单使用技巧

    比如刚才提到的,一个SpinButton搭一个TextBox,如果经常需要用到,咱们只需要这样操作即可,如果遇到很复杂的控件组合,直接这样拖拽留作备用是不是很方便呢:

    三、创建用户窗体模板

    上面的自定义控件比较方便,如果还需要直接保存整个UserForm咋办呢?

    点一下UserForm——点击VBE左上角的文件——点击导出文件。然后就导出了,下次要用的话同理

    点击VBE左上角的文件——点击导入文件就可以啦

    四、和昨天一样,来个简单的例子

    1.做一个列表框,用户点击选择后,执行不同的过程或者程序:

    ① 先在窗体的初始化中加入列表框的选项

    Private Sub UserForm_Initialize()
        With Me.ListBox1
            .AddItem "1号选择"
            .AddItem "2号选择"
            .AddItem "3号选择"
            .AddItem "4号选择"
            .AddItem "5号选择"
        End With
    End Sub

    ② 点击确定后,执行不同的程序

    Private Sub CommandButton1_Click()
        Dim str As String
        Select Case Me.ListBox1.ListIndex
            Case 0: sub1
            Case 1: sub2
            Case 2: sub3
            Case 3: sub4
            Case 4: sub5
        End Select
    End Sub

    ③ 创建上面的sub1-sub5,用来执行就可以啦。

    2.选择单元格区域

    之前在学到 InputBox 时,也有输入单元格区域的方法:

    str = Application.InputBox(prompt:="请输入单元格区域", Type:=8)

    在用户窗体中,可以借助RefEdit来实现,比上面的稍微还好看些,框框边上有个小按钮,运行后点击小按钮,然后对着sheet上的单元格框就可以了。

    需要注意的是,RefEdit返回的值是字符型,所以使用的话这样操作:

        Dim myRng As Range
        Set myRng = Range(Me.RefEdit1.Text)

    3.搞个欢迎界面

    比如打开工作表有个欢迎页面UserForm1,倒计时2秒后自动关闭,弹出工作框UserForm2:

    ① 在Workbook_Open事件中写上UserForm1.Show

    Private Sub Workbook_Open()
        UserForm1.Show
    End Sub

    ② 在欢迎界面UserForm1上写上:

    Private Sub UserForm_Activate()
        If Application.Wait(Now + TimeValue("0:00:2")) Then
            killForm
        End If
    End Sub
    
    Private Sub killForm()
        Unload Me
        UserForm2.Show
    End Sub

    OK!

    展开全文
  • 目 录 1、错误类 2、设置全局变量 3、开关 4、弹窗 5、换行 6、 7、 ...On Error Resume Next '忽略运行过程中可能出现的错误 ┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━...
    											目   录
    
    编号名称编号名称编号名称编号名称编号名称
    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
    

    展开全文
  • 目录 窗体对象及其属性 ...使用窗体制作专业化的软件界面时,Excel VBA允许在窗体中添加ActiveX控件以实现更强大的功能。 步骤1 在工作表中插入一个ActiveX按钮,将其命名为CommandButton1,Captio...

       

    目录

    窗体对象及其属性

    窗体对象的显示与关闭

    窗体对象的装载与显示

    窗体对象的卸载与隐藏

    窗体的显示模式


    窗体是Excel VBA中提供的一种窗口对象。它属于工作簿对象(Workbook)中VB工程对象(VBProject)下的VB组件集合(VBComponents)中的一个组件。使用窗体制作专业化的软件界面时,Excel VBA允许在窗体中添加ActiveX控件以实现更强大的功能。

    步骤1  在工作表中插入一个ActiveX按钮,将其命名为CommandButton1,Caption属性设置为“显示窗体”。
    步骤2  按组合键【Alt+F11】打开VBE。
    步骤3  选择菜单“插入”→“用户窗体”。如图所示。

     步骤4  在“工程资源管理器”中双击“Sheet1”工作表,并输入以下代码。

    Option Explicit
    
    Private Sub CommandButton1_Click()
        UserForm1.Show
    End Sub
    

    窗体对象及其属性

        窗体对象是一个窗口对象,该对象以窗口的形式显示和运行。Excel允许直接在VBE中添加窗体,并实现可视化的编辑。与工作表相同,它可以通过窗体名称直接访问。
        窗体的大部分属性与ActiveX控件的常用属性相同。

    窗体对象的显示与关闭

        在VBE中编辑和添加窗体时,窗体处在设计模式,并未真正运行。当需要显示窗体时,则使用窗体的Show方法。当使用该方法时,则窗体将正式载入内存,并显示在工作表界面。当单击窗体右上角的关闭按钮后,则窗体将关闭并清空其占用的内存空间。默认情况下,当在某个过程中调用窗体的Show方法显示窗体后,该过程中的后续语句将直到窗体被关闭才能继续执行。在窗体存续期间,可以运行其他的过程及事件程序。

    窗体对象的装载与显示

        窗体对象的显示其实分为两个步骤:装载和显示

        装载是将窗体对象装载进计算机内存,只有当窗体装载进计算机内存后才能够被显示。窗体对象的Show方法首先判断该窗体是否已经载入内存,若未载入,则载入内存,然后再显示;若已经载入内存,则直接显示。
        一些比较大型的窗体在装载时需要花费一些时间。因而,其装载过程一般与显示过程是分离的。当需要单独执行装载过程时,则可以使用Load语句装载窗体而不显示,其语法如下:

    Load  object

    其中,object可以为一个窗体对象。

    窗体对象的卸载与隐藏

      当关闭窗体对象后,其在内存中所占用的空间将会被释放,以供其他程序使用,该过程称为卸载。当窗体被卸载后,其将不再显示。因而,可以使用Unload语句将窗体卸载,从而达到关闭的效果,其语法为:

    Unload  object

    其中,object为窗体对象。

     某些时候,可能只需要将窗体隐藏而不进行卸载,以便下一次显示更快速,则可以使用窗体对象的Hide方法。该方法可以将窗体隐藏,而不进行卸载。当使用Hide方法隐藏窗体后,若要重新显示窗体,则可以使用Show方法再次显示,此时窗体无需再经历装载过程而直接显示。

    窗体的显示模式

        窗体的显示模式分为独占和非独占两种。默认情况下,窗体是以独占模式显示的,此时用户除了操作窗体外不能操作Excel工作簿、工作表,甚至Excel功能区的各个命令控件也无法访问。
        然而有些时候,用户希望能够同时进行窗体及Excel工作表的操作,此时可以在窗体的Show方法之后加上一个值为False的参数。如:

    UserForm1.Show False

    展开全文
  • 题 使用窗体制作登录界面,实现...在工作簿的Open事件中添加显示窗体的代码,并将Excel程序对象的Visible属性设置为False,以隐藏Excel程序,当窗体关闭时,再将该属性设置为True。 步骤1 将Sheet2作为存储用户名...
  • Excel VBA(08)窗体和控件

    千次阅读 2020-04-29 16:36:58
    要么直接窗体的界面点击运行按钮 要么用代码调用窗体的 show 方法 3、关闭窗体 代码关闭是 unload testform方法 4、显示设置 窗体标题:caption 背景色:backcolor 背景图片:picture,代码里面可以使用...
  • 动态显示与隐藏窗体 题 如图所示,该表为某单位员工档案。现希望制作一个包含有文本框的浮动工具栏,当在文本框中输入字符并按【Enter】键后,对该表进行模糊查找,将该表中不含有该字符的所有记录隐藏。 序号 ...
  • VBA研究】EXCEL启动时自动启动窗体

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

    千次阅读 2020-03-10 09:04:52
    ActiveX控件(activeX并不能直接用到窗体,和窗体的事件也略有不同,比如getfoucs,窗体里是enter等) 窗体 窗体控件 代码设置优先级更高,尽量少用属性栏,而是用代码设置, 很多属性,既可以在属性栏设置,...
  • VBA实现窗口登录

    2021-10-29 10:17:41
    核心代码: ' 窗口事件 Private Sub CommandButton1_Click() ' 登录 ...If 特定用户密码登录(ComboBox2) = TextBox1.Text Then Unload Me MsgBox ComboBox2.Text & "你好!欢迎你进入本系统", 1 + 64, "欢迎词.
  • VBA-加快你的代码运行速度--转自ExcelHome

    千次阅读 多人点赞 2020-05-14 14:42:32
    主题:VBA-加快你的代码运行速度 我们知道,用VBA实现同一个效果可能有多种不同的方法,写出一个最有效率的代码是大家都追求的,但是假如我水平有限,经验不足,实践不多,或者逻辑线路的设计不够简洁清爽,是不是就无法...
  • EXCEL窗体应用实例

    2007-08-16 10:12:55
    标 签 框: <br>分 组 框:可将插入到EXCEL中的窗体进行分组,被它圈起来的窗体域形成一个组。...顾名思义,利用它可对前面的窗体域进行属性设置或直接编辑宏代码(相当于Visual BASIC程序)。
  • 【转君以沫学习笔记】Excel VBA:以员工信息查询为例,学习操作窗体 基于“窗体”实现Excel表格内容的查询与修改。窗体,为使用者提供了较好的交互体验,使用者可以按照自己的需要实现数据的查询与...
  • 我用VB6企业版封装了一个DLL,其中有4个VB窗体——form1,form2,form3,form4,在excel 2003的VBE中用VBA代码调用DLL中的类模块、标准模块均成功,但是就是调用和显示不了VB窗体!!!应该怎么调用?才能显示??? ...
  • VB窗体窗体的属性及说明

    万次阅读 2018-02-26 18:57:43
    我想了想发现如果使用c语言直接做出来的页面太简陋,更美观的话需要一些API,而java也好久没有用过很生疏了。最后我想到了用VB来制作,发现用VB编写一些小型程序还是很方便的。 程序样式如下: 在这里我整理了...
  • HI,大家好,我是星光,今天咱们来继续学习VBA。...如何编写和运行VBA代码?什么是VBA先来看第一个问题,什么是VBA?你学了一段时间VBA,有一天有个异性朋友问……“小胖,你最近在学什么呀?”“VBA!”“VB...
  • VBA常用技巧

    2014-12-21 16:39:28
    技巧136 用户窗体添加最大最小化按纽 12 技巧137 禁用窗体标题栏的关闭按钮 12 技巧138 屏蔽窗体标题栏的关闭按钮 12 技巧139 无标题栏和边框的窗体 12 技巧140 制作年月选择窗体 12 技巧141 自定义窗体中的鼠标指针...
  • VBA一例:如何保持文本框焦点

    千次阅读 2019-07-21 02:14:43
    在Excel的VBA编程中,设计一个用于录入的用户窗体,该窗体包含1个文本框和2个按钮,文本框用于扫描枪的录入。 要求扫描枪可以连续录入,即每扫描完一个条码,文本框自动清空,文本框继续获得焦点。 我们知道扫描...
  • VBA实战入门教程第5篇,我们将从九九乘法表开始和结束今天的教程。之中,我们会认识VBE,也就是VBA代码的编辑器。VBE的基本概念、打开方式,以及它的布局和主要功能,它们很简单,但我们需要掌握。你可以认为这篇...
  • 打开任意一个窗体,进入设计视图,按工具栏“查看代码”按钮,如下图:2.进入代码区再点工具栏“工具”按钮→“属性”,如下图:3.点“保护”选项,将“查看时锁定工程”按钮打钩→在“查看工程属性的密码”设置...
  • 选择该对象,将自动建立事件代码框架,在右边的“事件”列表中有与对象相关的事件可供选择:工作簿对象也中如此:在“插入”菜单可以插入三类模块:用户窗体、模块、类模块。用户窗体是与用户交互的图形界面,窗体.....
  • 当设置为该值时,可以使用customFormat属性设置自定义格式 DTPicker控件的日期输入方式 利用DTPicker控件可以直接在日期输入框中输入,也可以通过单击日期选择窗口中的某个日期进行输入。该控件的属性UpDown可以控制...
  • VB和VBS、VBA的区别及作用

    千次阅读 2020-10-24 17:39:25
    VBScript是微软开发的一种脚本语言,可以看作是VB语言的简化版,与VBA的关系也非常密切。它具有原语言容易学习的特性,并继承了JavaScript的跨平台的特性。目前这种语言广泛应用于网页和ASP程序制作,同时还可以直接...
  • 【Excel VBA】控件应用(1)-文本框

    千次阅读 2020-03-16 22:05:50
    用户在使用文本框输入数据时,往往希望可以限制输入数据的类型,例如,只允许输入数字,但是文本框的现有属性无法直接实现这样的要求。此时可以在文本框的KeyPress事件过程和Change事件过程中编写代码来判断输入的...
  • Excel VBA编程

    万次阅读 多人点赞 2019-04-11 16:45:51
    文章目录如何创建VBAVBA语法规则声明变量给变量赋值让变量存储的数据参与运算关于声明变量的其他知识变量的作用域特殊的变量——数组声明多维数组声明动态数组其他创建数组的方法数组函数利用UBound求数组的最大索引...
  • 如何调试Excel VBA代码

    千次阅读 2019-06-03 03:08:50
    Excel VBA出错时给出的错误信息极少,需要充分利用各种工具来进行调试。 1.编译错误 常见的编译错误有: 错误的源代码格式,比如if后面缺少then:在编辑器中该行会变成红色。 错误的语法结构,比如if和end if没有...
  • VBA

    千次阅读 2007-08-04 13:20:00
    VBA一,概述 二, 宏 三,使用控件设计用户界面 四,使用VB编辑器 五,VBA语法基础 六,VBA对象模型 七,模块 八,测试与错误处理 九,VBA的安全性和保护工具 十,VBA程序的部署 十一,VBA高级应用 参见 一,概述VBA...
  • Vba菜鸟教程

    万次阅读 多人点赞 2020-05-02 18:21:15
    文章目录Vba菜鸟教程编辑器宏vba基本语法运算符变量语句简写语句sub语句调用语句退出语句分支语句循环语句判断语句公式与函数在单元格输入公式利用单元格公式返回值调用工作表函数利用vba函数自定义函数操作对象操作...
  • VBA是一种历史悠久、易于上手的脚本语言,您可以使用它写出简单的批量表格处理程序,也可以写出复杂的网络爬虫,尽管微软官方已经逐渐要用Python替代其在Office套件中的地位,但其仍然被全世界范围内的广大人群使用...

空空如也

空空如也

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

vba直接运行用户窗体