为您推荐:
精华内容
最热下载
问答
  • 5星
    6KB thy77 2021-04-15 16:42:43
  • 25KB q215046120 2019-06-18 12:44:21
  • 4星
    6KB wuyunyan2011 2011-04-05 10:39:44
  • 利用ExcelVBA编写了一个自定义的 DFT(Xn, Index=True)函数,该函数返回数组。第一个输入参数是时域信号,要求在Excel表中已列的形式存在;第二个布尔型参数默认为True,返回变换后的实部数组;取False时,返回虚部...

    离散傅里叶变换(DFT)的计算公式如下:

                     

    DFT 将时域内的周期离散信号变换为频域内的离散周期信号。

    1 实现的功能

    利用 Excel VBA 编写了一个自定义的 DFT(Xn, Index=True) 函数,该函数返回数组。第一个输入参数是时域信号,要求在 Excel 表中以列的形式存在;第二个布尔型参数默认为 True,返回变换后的实部数组;取 False 时,返回虚部数组。

    因为直接采用公式计算离散傅里叶变换,所以当数据量增多时,计算量较大。因此,处理很多数据时,建议利用其它工具。测试时,输入数据个数为720时,计算大概需要 3 秒(电脑型号较老,CPU为 Intel i5-3337U)。

    2 使用方法

    没有为函数增加许多判断,以应对不同的使用场景。使用具体步骤如下:

    1) 输入数据为列的形式,如下图所示,选中 Data 列任意一个数据后,利用 Ctrl + ↓ 定位到最后一个数据,然后平移至 DFT VBA Real 列,随便输入一个数定位用。

    2)按 Ctrl + ↑,回到 DFT VBA Real 列的第一个单元格(表头)。选中下一个单元格(B2),按 Ctrl + Shift + ↓,选中多个单元格(步骤1) 的作用在此体现),输入公式  =DFT(A2:A721),其中 A2:A721 同样可以按 Ctrl + Shift + ↓ 选中。

    3)按 Ctrl + Shift + Enter  进行数组运算(不能输花括号)。

    3 具体代码

    因为计算结果是对称的,所以只计算了前 N/2+1 个频率点,剩余的点在 Excel 表格中最后以 0 的形式出现(也可以增加循环,由前 N/2+1 的点的结果直接得到)。

    Function DFT(Xn As Range, Optional Index As Boolean = True)
    ' 用公式直接计算 DFT
    ' 要求数据都是按列填入表格
    
    PI = 3.141592653
    Dim TempArray()
    
    N = Xn.Count '统计输入的数据个数
    ReDim TempArray(0 To N - 1) '动态改变数组长度
    
    If Not Index Then '第二个参数输入 0 计算虚部,否则均计算实部
    
        For i = 0 To N / 2 '计算一半,另一半对称,取0处理
            temp = 0
            For j = 1 To N
                Angle = 2 * PI / N * (j - 1) * i
                temp = temp - Xn.Cells(j, 1).Value * Sin(Angle)
                'Xn对应单元格范围(一列数据),Cells()方法获得具体某个单元格,Value获得数值
            Next j
            TempArray(i) = temp / N '这里可以乘以2,得到单边谱
        Next i
        
        
    Else '计算实部
    
        For i = 0 To N / 2
            temp = 0
            For j = 1 To N
                Angle = 2 * PI / N * (j - 1) * i
                temp = temp + Xn.Cells(j, 1).Value * Cos(Angle)
            Next j
            TempArray(i) = temp / N
        Next i
        
    End If
    
    DFT = Application.WorksheetFunction.Transpose(TempArray) '转置,变成列向量
    
    End Function
    
    

    4 改进思考

    采用数组的方式操作过程稍微有点麻烦,既要选中数组的输出范围,也要选择输入单元格范围,考虑采用子过程宏结合自定义功能区按钮的方式实现:选中时域数据,点击DFT按钮,在时域数据的右侧得到变换后的数据。但是此时就不能像调用函数一样,在自己需要的位置得到结果了。

    或许可以采用下述思路:

    1)读取当前选中的单元格范围内的数据,将值保存到一个数组并统计个数。

    2)用 Cells(1,1).Offset(0,1) 定位到第一个输入数据右侧的单元格,并在该单元格填入第一个实部。

    3)利用循环,每次向下偏移一个单元格,并计算对应数据。可以计算 N 个结果,也可以计算 N/2+1 个结果。采用后者时,不会出现剩下都是 0 的情况。

    4)用 Cells(1,1).Offset(0,2) 定位到需要计算虚部的初始位置,重复计算实部的步骤。

    5)有了实部和虚部,便可进一步计算模长和相角。

     

     

     

     

    展开全文
    weixin_45205765 2020-12-09 07:19:43
  • https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/appactivate-statement AppActivate 语句语法具有下列命名参数: title 必需。 时间 可选。 毫秒? 特点: 这个是激活已经...

    1 如何打开其他非VBA程序,shell()

    如何打开其他程序,多种方法

    • 点 "运行"时,输入程序的名字,打开
    • Windows菜单的图形化图标打开程序
    • VBA里可以用 shell 打开其他程序
    • 如果是系统自带的程序,可以直接用程序名如 notepad.exe,否则就用 完整路径更保险。

    Shell(pathname[,windowstyle])
    Shell 函数的语法含有下面这些命名参数:

    • pathname 必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量 Windowstyle
    • 可选参数。Variant (Integer),表示在程序运行时窗口的样式。
    • 如果 windowstyle省略,则程序是以具有焦点的最小化窗口来执行的。
    • 所以一般要带参数 ,1 或者 vbNormalFocus
    • 下面是常用参数
      在这里插入图片描述
    • 经过测试: 非系统性文件需要有完整的路径
    • 系统程序可以用关键词打开,或完整路径都可以 '但是要注意,要带激活的参数,否则可能在后台最小化。
    • 因为QQ等不是windows系统文件,所以需要写完整路径到.exe,不能简写程序名 '后面这种写法是错误的,shell “QQ.EXE”,vbNormalFocus
    Sub test11()
     '经过测试,系统程序可以用关键词打开,或完整路径都可以
     '但是要注意,要带激活的参数,否则可能在后台最小化。
     
      Shell "notepad", 1
     'Shell "notepad.exe", vbNormalFocus
     'Shell "C:\Windows\winsxs\wow64_microsoft-windows-notepad_31bf3856ad364e35_6.1.7600.16385_none_d5642974be118415\notepad.exe", vbNormalFocus
     
     'Shell "calc"
     'Shell "calc.exe"
     'Shell "C:\Windows\winsxs\x86_microsoft-windows-calc_31bf3856ad364e35_6.1.7601.17514_none_abc56b2678fe1108\calc.exe"
    
     'Shell "control"
     'Shell "control.exe"
     
      Shell "C:\Program Files (x86)\Tencent\QQ\Bin\QQ", 1
      '因为QQ等不是windows系统文件,所以需要写完整路径,不能简写程序名
      '后面这种写法是错误的,shell "QQ.EXE", vbNormalFocus
      
    
    End Sub
    

    shell打开的程序,可以作为函数返回值,被调用
    Dim RetVal
    RetVal = Shell(“C:\WINDOWS\CALC.EXE”, 1) ’

    2 激活和其他其他程序 (中文操作系统,注意程序名) AppActivate()

    VBA.AppActivate title [, wait ]

    https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/appactivate-statement
    AppActivate 语句语法具有下列命名参数:
    title 必需。

    • titile 是必须的,是文本 “” ,而且支持模糊查询。
    • 比如 “WORD” 或 “Microsoft word”
    • 也支持用目标程序的线程ID,Shell函数有一个Double型的返回值。这个返回值里存的是目标程序的线程ID,可以 配合Appactive。

    时间 可选。 毫秒?
    特点:

    • 这个是激活已经启动的程序,而不会自动开启程序
    • 这里的title需要以 字符串的形式 “” 出现,并且支持模糊查找,多个只会任意激活1个。
    • 被激活的程序,之前是最大化还是最小化,还会保持原状,不会直接放大,会选中在任务栏里的小APP图标
    • 而在桌面的程序,会被激活后选中在前台。

    实测发现的问题

    • 实测发现,AppActivate “calc” AppActivate “calc.exe” 都不行
    • 但是AppActivate “计算器” 可行
    • 估计原因是,因为电脑是中文WIN7,所以系统的执行程序还是 calc.exe,系统的进程名也是calc.exe,但是电脑里的程序命名为中文的 计算器。
    Sub test12()
      AppActivate "计算器"   'AppActivate "calc"  AppActivate "calc.exe" 都不行
      AppActivate "记事本"   'AppActivate "notepad" AppActivate "notepad.exe"  都不行
      AppActivate "QQ"       '或"QQ",可模糊,不想模糊就提供精确名字, 不能是QQ.EXE
      
      '这也不行 C:\Windows\winsxs\wow64_microsoft-windows-notepad_31bf3856ad364e35_6.1.7600.16385_none_d5642974be118415\notepad.exe
      '这也不行 AppActivate "C:\Windows\winsxs\wow64_microsoft-windows-notepad_31bf3856ad364e35_6.1.7600.16385_none_d5642974be118415\notepad.exe"
    
    End Sub
    
    

    3 发送按键操作其他程序 sendkeys()

    sendkeys string [,wait]
    实测发现的问题

    • 首先需要打开程序,shell “calc.exe”

    • 打开程序后不能马上调用AppActivate “计算器”,否则会报错

    • 我现在是加了个延迟 Application.Wait (Now + TimeValue(“00:00:02”))

    • 或者先用其他过程打开 "calc.exe"也行

    • 一个是AppActivate “计算器”, 需要用中文,而不能用 AppActivate “calc”

    • 参数[,wait] 可以是true,也可以是毫秒数?

    • 如果 AppActivate “计算器”,5000 并不是只等5秒。。。好像需要点击VBE才激活?

    • 而写 AppActivate “计算器” 就会马上执行

    '这个是MSDN官方例子,实际不好用,估计是因为作者是用的英文windows,所以可以
    Dim ReturnValue, I 
    ReturnValue = Shell("CALC.EXE", 1)    ' Run Calculator. 
    AppActivate ReturnValue     ' Activate the Calculator. 
    For I = 1 To 100    ' Set up counting loop. 
        SendKeys I & "{+}", True    ' Send keystrokes to Calculator 
    Next I    ' to add each value of I. 
    SendKeys "=", True    ' Get grand total. 
    SendKeys "%{F4}", True    ' Send ALT+F4 to close Calculator.
    
    
    Sub test1301()
    
    Shell "calc.exe", 1
    Application.Wait (Now + TimeValue("00:00:02"))
    
    Dim i
    AppActivate "计算器"
    
    SendKeys "C", True
    
    For i = 1 To 10
        SendKeys i & "{+}", True
        Debug.Print i
    Next
    
    End Sub
    

    或者这样也可以

    Sub test1300()
    
       Shell "calc.exe", 1
       Application.Wait Now() + VBA.TimeValue("00:00:03")
       Call test1301
    End Sub
    
    Sub test1301()
    Dim i
    AppActivate "计算器"
    
    SendKeys "C", True
    
    For i = 1 To 10
        SendKeys i & "{+}", True
        Debug.Print i
    Next
    
    End Sub
    

    实测按键
    计算器的按键 C 不是 “c” ,但是试了 "clear"也不行,没做到计算前清除计算器的内容。
    SendKeys “clear”, True
    SendKeys “{clear}”, True

    sendkeys的按键
    https://docs.microsoft.com/zh-cn/office/vba/api/excel.application.sendkeys

    Keys 参数可指定任何单个键或与 Alt、Ctrl 或 Shift 的组合键(或者这些键的组合)。 每个键均可用一个或多个字符表示,例如,“a” 表示字符 a,"{ENTER}" 表示 Enter 键。

    单键输入
    字母键等,一般用 “a” “k” “5”
    功能键,一般用 “{enter}” “{clear}” “{esc}” “{F1}”

    组合输入:般是指顺次输入
    Application.SendKeys (“1234{Enter}”) '表示顺次输入 1 2 3 4 enter

    组合键:表示同时按下
    shift+c, 使用 “+c” '表示同时输入 按下 shift+c+e
    ctrl+c, 使用 “^c”
    alt+c, 使用 “%c”

    复合组合键:优先识别组合键,包括()内的,然后顺次执行
    shift+C+E, 使用 “+(ce)” '表示同时输入 按下 shift+c+e
    shift+C+E, 使用 “+ce” '表示同时输入 按下 shift+c,然后执行e

    重复按键:使用 {key number} 的形式,中间加空格,{D 9} 表示重复按9次D
    {D 9} 表示重复按9次D
    {down 9} 表示重复按9次down箭头

    Sub 退出()
      Application.Quit
      Application.SendKeys "Y"
    End Sub
    
    展开全文
    xuemanqianshan 2020-12-20 17:25:00
  • 30KB weixin_38612437 2021-01-06 05:44:00
  • 文章目录Vba菜鸟教程编辑器宏vba基本语法运算符变量语句简写语句sub语句调用语句退出语句分支语句循环语句判断语句公式与函数在单元格输入公式利用单元格公式返回值调用工作表函数利用vba函数自定义函数操作对象操作...

    Vba菜鸟教程

    官方文档:https://docs.microsoft.com/zh-cn/office/vba/api/overview/language-reference
    代码完成后:工具-vbaproject属性-保护-查看时锁定-密码

    编辑器

    • 注释‘单引号开头,可通过调出编辑窗口批量注释和取消
    • 强制转行:插入两个空格,下划线,回车
    • debug
      • 在工具栏中,右键,调试工具栏
      • 首行加上optionexplicit使得编译更严格,变量申明
      • f8单步运行,在最左边点一下设置断点/f9
      • Debug Print “立即窗口输出过程的值:”&x
      • 本地窗口可以显示中断,逐步调试时的对象信息,变量值,数组信息,Stop可以中断

    • 开发者工具,设置安全性启用宏,保存文件需要保存为启用宏的工作簿
    • 使用相对流录制宏,不固定位置,相对位置操作
    • 加载宏(本地代码库)
      • 代码保存在模块
      • 保存文件格式为xla或xlam
      • 开发者工具——加载项——加载(要删除需要取消加载)
      • 快速访问工具栏——从下列位置选择命令-宏-添加为左上角倒三角小图标-将宏增加为一个小工具图标
    • 自定义功能区

    vba基本语法

    运算符

    • and 与
    • or 或
    • & 连接变量和字符串,前后有空格
    • <> 不等于
    • in 在什么里
    • like 可使用通配符
      • *任意个字符
      • ?一个字符
      • #一个数字
      • [A-W a-w]a-w或A-W中的一个字符
      • [!0-9] 字符不是0-9之间

    变量

    在这里插入图片描述

    Dim x As Integer 整数
    
    Dim st As String 文本
    
    Dim rg As Range 对象
    Set rg = Range("A1") ·对象赋值
    
    Dim arr(1 to 10) As Integer 数组
    
    Long 长整数, Single 单精度,Double 双精度,Date 时间
    
    
    • Public x As Interger '声明全局变量,所有模块都能用,不建议,可以使用函数取变量
    • isnumeric(x) 判断x是否是数字,在vba.Information中
    • set i = Range(“A1”) 'set,可以将对象赋值给变量
    • 判断变量未赋值 is nothing

    数组

    dim arr() '定义数组,不能单独给每个变量赋值,用区域赋值
    dim arr(10) '下标从0开始'
    ReDim [Preserve] arr(1 To j) '数组中不能直接定义变量。需要重定义才能加变量,Preserve保留原本有的值,只改大小
    dim arr(1 to  20)
    
    arr = Range("A1:D9") '给数组赋值
    Range("A11") = arr(7,2) '数组第七行,第二列
    
    '最大值
    Range("h3") = Application.WorksheetFunction.Max(arr)
    'match是找到值在数组中的位置,参数是要找的值,要找的数组,精确为0
    Range("h2") = Range("a" & Application.WorksheetFunction.Match(Range("h3"), arr, 0) + 1)
    
    '数组的上界,下界
    MsgBox UBound(arr)
    MsgBox LBound(arr)
    
    

    字典

    • 一个特殊的数组,去重复值
    '在VBE界面中 工具—引用勾选Microsoft scripting runtime,没有就浏览scrrun.dll-确定
    Dim dic As New Dictionary
    
    '推荐使用方法
    Dim dic
    Set dic = CreateObject("Scripting.Dictionary")
    
    
    '增加一项
    dic.Add Key, Item 
    '通过值取得,修改item
    Range("A1") = dic(key)
    dic(key) = 200
    
    '通过作为key存入字典,去掉重复值,keys取出
    For i = LBound(arr) To UBound(arr)
        If arr(i, 2) = Me.ListBox1.Value Then
            dic(arr(i, 3)) = 1
        End If
    Next
    Me.ListBox2.List = dic.keys
    

    语句

    简写语句

    '把语句中相同的部分提到前面
    With Selection.Font
            '字体
            .Name = "华文琥珀"
            '字号
            .Size = 9
    End With
    

    sub语句

    • 实现一个功能
    • private sub私有,本模块才能调用
    • public sub公有,默认
    Sub test(str as String)
        Range("A1") = 100
    End Sub
    

    调用语句

    调用其他程序
    Sub test1()
        Call test
    End Sub
    

    退出语句

    • End 退出所有程序
    • Stop 中断
    • Exit Sub 退出相应的sub,function,for,do
    • Exit function
    • Exit for
    • Exit do

    跳转语句

    goto-跳转到指定地方

    Sub test()
        Dim st
    100:
        st = Aplication.InputBox("请输入数字", "输入提示")
        If len(st) = 0 Then GoTo 100
    End Sub
    

    gosub-return-跳过去,返回来

    Sub test()
        Range("A1") = 100
        GoSub 100
        Range("A1") = 20
        Exit Sub
    100:
        Range("A1") = 50
        Return
    End Sub
    

    错误处理语句

    On Error Resume Next遇到错误,跳过,继续执行下一句

    Sub test()
      On Error Resume Next
      Range("A1") = 10
    End Sub
    

    On Error GoTo遇到错误,跳到指定行数

    Sub test()
      On Error GoTo 100
      Range("A1") = 10
      Exit Sub
    100:
      Range("A1") = 1
    End Sub
    

    On Error GoTo 0,取消错误跳过,使得On Error Resume Next没有作用

    Sub test()
      On Error Resume Next
      Range("A1") = 10
      If Range("A1").Value > 0 Then On Error GoTo 0
    End Sub
    

    循环语句

    for-to-next循环

    Sub test2()
    Dim x As Interger`声明变量
        For x = 1000 To 10 Step -1
            Cells(x, 1) = x
        Next x
    End Sub
    
    

    for-each-next循环

    Sub test2()
    Dim rg As Range
        For Each rg In Range("d2:d18")
            rg = re.Offset(0,-1)*rg.Offset(0,-2) 
        Next rg
    End Sub
    

    do-loop循环

    Sub test2()
    Dim x As Interger
        x = 1
        Do
            x = x + 1
            Cells(x, 4) = Cells(x, 2) * Cells(x, 3)
        Loop Until x = 18
    End Sub
    

    do-while循环

    Sub test2()
    Dim x As Interger
        x = 1
        Do while x < 18
            x = x + 1
            Cells(x, 4) = Cells(x, 2) * Cells(x, 3)
            If Cells(x, 4) = 25 Then
                Cells(x, 4) = 0
                Exit Do `跳出循环
        Loop
    End Sub
    

    判断语句

    if判断

    单条件判断
    Sub 判断1()
        If Range("A1").value > 0 Then
            Range("B1") = "正数"
        Else
            Range("B1") = "负数"
        End IF
    End Sub
    
    多条件判断
    Sub 判断1()
        If Range("A1").value > 0 Then
            Range("B1") = "正数"
        ElseIf Range("A1").value = 0 Then
            Range("B1") = "0"
        Else
            Range("B1") = "负数"
        End IF
    End Sub
    
    多条件判断
    Sub 判断1()
        If Range("A1") <> "" And Range("A2") <> "" Then
            Range("B1") = Range("A1")*And Range("A2")
        End IF
    End Sub
    
    单语句判断
    Sub 判断1()
        Range("B1").value = IIf(Range("A1") <= 0, "负数或0", "正数")
    End Sub
    

    select判断

    Sub 判断1()
        Select Case Range("A1").value
        Case 0 To 1000 
            Range("B1") = "正数"
        Case Is = 0 
            Range("B1") = "0"
        Case Else
            Range("B1") = "负数"
        End Select
    End Sub
    

    公式与函数

    在单元格输入公式

    输入普通公式

    Sub test()
        Range("A1") = "=B2*C2"
        Dim x As Interger
        For x = 2 To  6
            Cells(x, 1) = "=b"&x&"*C"&x `连接变量和字符串需要&
        Next x
    End Sub
    

    输入带引号的公式,引号加倍

    Sub test()
        Range("A1") = "=SUMIF(A2:A6,""b"",B2:B6)"
    End Sub
    

    输入数组公式,加上FormulaArray

    Sub test()
        Range("A1").FormulaArray = "=SUM(A2:A6*B2:B6)"
    End Sub
    

    利用单元格公式返回值

    • 使用Evaluate()
    Sub test()
        Range("A1") = Evaluate( "=SUMIF(A2:A6,""b"",B2:B6)")
        Range("A1") = Evaluate("=SUM(A2:A6*B2:B6)")
    End Sub
    

    调用工作表函数

    • 在Application.WorksheetFunction中,表,区域等使用vba中的写法
    Sub test()
    '跳过出错
    On Error Resume Next 
        Range("A1") = Application.WorksheetFunction.Sum(Range("d2:d6"))
        '统计sheet2表a列记录数
        Application.WorksheetFunction.CountA(Sheets(2).Range("a:a")) - 1
        '统计sheet3表f列是男的记录数
        Application.WorksheetFunction.CountIf(Sheets(3).Range("f:f"), "男")
        '查询的内容,查询范围,返回第几列,精确为0
        Application.WorksheetFunction.VLookup(Sheet1.Range("d9"), Sheets(2).Range("a:h"), 8, 0)
    End Sub
    

    利用vba函数

    Sub test()
        'E在A22单元格的位置,没有返回0
        Range("A1") = VBA.String.InStr(Range("A22"), "E") 
        
        '在VBA.Strings中,按符号分割字符串,返回数组
        'Range("A1") = Split(Range("A1"),"-")(0)
        
        With Sheet1
        'DateSerial根据数字转化为日期,取字符串的左边,中间,右边,取得地址,字符串个数,mid第二个参数从第几个字符串开始取
            .Range("b" & i) = DateSerial(Left(.Range("a" & i), 4), Mid(.Range("a" & i), 5, 2), Right(.Range("a" & i), 2))
        End With
        
        '带路径返回文件名,文件不存在返回空,可以使用通配符*,匹配到多个文件时,返回一个,继续使用dir不带参数,返回下一个,没有了返回空,再使用dir报错
        str = Dir("E:\code\exce_vba\*.xls*")
        
        '查找
        Set rng = Range("d:d").Find(Range("l3"))
        
        'timer算运行时间
        t = timer
        Range("A1") = timer - t
    End Sub
    

    常用的几类vba

    在这里插入图片描述

    自定义函数

    • 返回一个结果
    function shcount(x as Integer,str as string)
        shcount = Sheets.Count+x
    End function
    

    操作对象

    类模块

    • vba编辑界面-右键插入-类模块-属性菜单改类名
    • sub创建方法
    • 创建属性
    '类似函数,get只读属性,Let可写,Set对象变量
    Property Get Scount()
    Scount = Sheets.Count
    End Property
    
    
    • 创建对象:dim aa as new 类名称
    • 右键-导入\导出类模块

    excel应用对象

    • application
    • 隐藏窗口application.visible = false
    • 关闭应用application.quit

    操作工作簿

    • Workbooks 工作簿集合,Workbooks(N),打开的第n个工作簿
    • Workbooks(“工作簿名称”)
    • ThisWorkBook 代码所在工作簿
    • ActiveWorkbook 正在操作的工作簿

    方法

    Workbooks.Open Filename:="E:\code\exce_vba\1.xlsx" `打开
    Workbooks.Add `新建
    ActiveWorkbook.Sheet(1).Range("A1") = "wy" `操作
    ActiveWorkbook.Save `保存,一般在文档
    ActiveWorkbook.SaveAs Filename:="E:\code\exce_vba\1.xlsx" `另存为
    ActiveWorkbook.close  `关闭
    
    `屏幕更新以及取消,成对出现
    Application.ScreenUpdating = False 
    Application.ScreenUpdating = True
    
    '改文件名
    name "文件位置" as "改名后文件位置"
    

    属性

    操作工作表

    • Sheets(“工作表名称”)
    • Sheets(N),打开的第n个工作表,在左下角的位置
    • Sheet1 第一个插入的工作表,与位置无关,相当于本名
    • ActiveSheet 正在操作的工作表
    • Worksheets 不包括宏的工作表

    方法

    Sheet1.Select `选中表1
    
    Sheets.Add after:=Sheet3, Count:=4 `在第三张表后插入四张表
    
    `删除表格,需要先取消弹窗
    Excel.Application.DisplayAlerts = False
    Sheets(Sheets.Count).Delete
    Excel.Application.DisplayAlerts = True
    
    `复制一张新表
    Sheet4.Copy after:=Sheets(Sheets.Count)
    
    

    属性

    Sheets.Count `表的数量
    Sheet1.Name = "1月" `表的名称
    Sheet1.Visible = xlSheetVeryHidden '只有改变为true才可见
    Sheet1.Visible = xlSheetVisible '值为-1,使可见
    Sheet2.Protect "test" '保护
    Sheet2.Unprotect Password:="test" '取消保护
    

    操作单元格

    • Cells 所有单元格
    • Range(“单元格地址”),
    • Range(“A1:F2,D3,F4”)
    • Range(“A1”,“D1”)
    • [A1:D1] 固定的,不能加变量
    • Range(Cells(1,4),Cells(1,4))
    • Cellls(行数,列数)
    • Activecell 正被选中或编辑的单元格
    • Selection 正被选中的单元格或区域

    属性

    Value 值
    Name 名称
    Interior.ColorIndex = 3 单元格内部的颜色
    Font.ColorIndex = 3 单元格字体的颜色
    

    方法

    对象.方法 参数名称:=参数值

    ` 删除,清除内容
    Range ("A1:f122").Delete 
    Range("A1:f122").ClearContents
    
    `复制
    Range("A1:D1").Copy Destination:=Range("A2")
    Range("A1:D1").Copy Range("A2")
    
    `合并单元格
    range("A1:B1").Merge
    
    `偏移offset,下移,右移
    Range("A1").Offset(1, 1)
    
    `跳跃到相连数据块边缘,跳过空格
    Range("C1").End(xlDown)
    Range("A65536").End(xlUp).Row 最后一行
    
    `重新选区,以单元格为顶点几行,几列
    Range("A1").Resize(2,3)
    
    `整行,整列
    Range("A1").EntireRow
    Range("A1").EntireColumn
    
    `筛选
    Range("$A$1:$F$1048").AutoFilter Field:=4, Criteria1:="一车间"
    
    

    图形对象

    常见属性

    Dim shp As Shape
    
    For Each Shp In Sheet1.Shapes
        Shp.Name 名称
        Shp.TopLeftCell.Address  左上角地址
        Shp.Type 类型
        Shp.Delete 删除
        Shp.Left 位置左
        Shp.Top 位置上
        Shp.Width 位置宽
        Shp.Visible 可见性
        shp.FormControlType 表单控件类型
    Next
    

    常用方法

    '插入图片,帮助文档看详细参数
    Sheet1.Shapes.AddPicture("图片位置",msoFalse,  msoTrue, 左,上,宽,高)
    
    '简单控件
    shp.Characters.Text
    
    

    事件

    关闭事件

    `在事件中加入,使事件执行过程中不执行事件
    Application.EnableEvents = False
    Application.EnableEvents = True
    

    工作簿事件

    在这里插入图片描述

    工作表事件

    在这里插入图片描述

    控件

    • 设置格式-属性-大小和位置均固定

    窗体

    • vba编辑界面-右键插入-用户窗体
    • 双击窗体或里面的控件进行编程
    • ShowModal 显示模式,为true不可以点击其他窗口,独占
    • Show 显示
    • Hide 隐藏
    • UserForm_Activate 激活
    • UserForm_QueryClose 退出

    ActiveX控件

    属性,右键属性查看,常用有:

    • Enabled 可用性
    • Caption 标题
    • Visible 可见性

    OptionButton(单选按钮)

    • GroupName 组名,同组按钮互斥
    • Value 返回值

    Label (标签)

    SpinButton (微调按钮)

    • Value 返回值

    • MIN 最小值

    • MAX 最大值

    • change事件

    TextBox(文本框)

    • PasswordChar 密码字符,显示为密码形式
    • TabIndex 按下Tab键时的切换顺序

    CheckBox(复选框)

    ComboBox(下拉框)

    • List 数据源列表

    • AddItem 增加一个下拉项目

    • RemoveItem 移除一个项目

    • Clear

    ListBox (列表框)

    • ColumnCount 列,分为几列,list(2,3)变二维列表

    • List 数据源列表,数组

    • ListBox1.Selected(i) = True '查看i项是否被选中,被选中为true

    • AddItem 增加一个下拉项目

    • RemoveItem 移除一个项目

    • Clear

    CommandButton (按钮)

    用户信息交互

    msgbox弹窗

    msgbox("显示文字",显示样式几个样式用加号连接,标题,帮助文档位置,帮助文档索引值0)
    

    显示样式

    常数	值	描述
    vbOKOnly	0	只显示 确定 按钮
    VbOKCancel	1	显示 确定 及 取消 按钮。
    VbAbortRetryIgnore	2	显示 放弃、重试 及 忽略 按钮。
    VbYesNoCancel	3	显示 是、否 及 取消 按钮。
    VbYesNo	4	显示 是 及 否 按钮。
    VbRetryCancel	5	显示 重试 及 取消 按钮。
    VbCritical	16	危险图标
    VbQuestion	32	询问图标
    VbExclamation	48	警告图示
    VbInformation	64	信息图标
    vbDefaultButton1	0	第一个按钮是缺省值。
    vbDefaultButton2	256	第二个按钮是缺省值。
    vbDefaultButton3	512	第三个按钮是缺省值。
    vbDefaultButton4	768	第四个按钮是缺省值。
    vbApplicationModal	0	应用程序强制返回;应用程序一直被挂起,直到用户对消息框作出响应才继续工作。
    vbSystemModal	4096	系统强制返回;全部应用程序都被挂起,直到用户对消息框作出响应才继续工作。
    vbMsgBoxHelpButton	16384	将Help按钮添加到消息框
    VbMsgBoxSetForeground	65536	指定消息框窗口作为前景窗口,就是显示在窗口的最上层
    vbMsgBoxRight	524288	文本为右对齐
    vbMsgBoxRtlReading	1048576	指定文本应为在希伯来和阿拉伯语系统中的从右到左显示
    

    返回值

    常数	值	说明
    vbOK	1	确定
    vbCancel	2	取消
    vbAbort	3	终止
    vbRetry	4	重试
    vbIgnore	5	忽略
    vbYes	6	是
    vbNo	7	否
    

    inputbox输入框

    'val文本型数字转为数字型
    i = val(inputbox ("文字","标题","默认值",左边距,上边距,帮助文档位置,帮助文档索引值0)) 
    
    i = Application.Inputbox(提示文字,标题文字,默认值,左边距,上边距,帮助文件,帮助文件索引,输入类型)
    

    类型值:可使用加号连接

    值	含义
    0	公式
    1	数字
    2	文本 (字符串)
    4	逻辑值 (True 或 False)
    8	单元格引用,作为一个 Range 对象
    16	错误值,如 #N/A
    64	数值数组
    

    GetOpenFilename打开文件

    GetOpenFilename (文件类型,优先类型,对话框标题,按钮文字[不生效],是否支持多选)
    '返回文件完整路径,取消返回False,多选时返回数组,第一个文件下标为1
    '文件类型参数中,先指定文件类型名,再指定后缀,要成对出现
    '优先类型是指文件类型中列出的各种类型,哪种优先显示
    A= Application.GetOpenFilename("新表,*.xlsx,老表,*.xls", 1, "快特么选!", "确定", False)
    
    

    Dialogs(对话框)

    '对话框中所做的操作会真实执行,具体的值见附表
    Application.Dialogs(xlDialogSaveAs).Show
    Application.Dialogs(150).Show
    
    

    使用ADO操作外部数据

    使用ADO连接外部Excel数据源

    1 在VBE界面中 工具—引用
       勾选Microsoft ActiveX Data Object  x.x  Library 
    2 连接代码
      Sub test()
    Dim conn As New ADODB.Connection
    conn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=D:\data\data.xlsx;extended properties=""excel 12.0;HDR=YES"""
    ‘这里使用SQL对数据进行操作
    '抓取数据:CopyFromRecordse从数据集中拷贝
    'conn.Execute中执行sql语句
    'data是sheet名称,表使用[sheet名称$]
    
    Range(“a1”).CopyFromRecordset conn.Execute(“select * from [data$]”)
    
    conn.Close
    End Sub
    
    Data Source是要操作的数据地址
    HDR=YES是有表头,取数据表头忽略
    
    

    常用sql语句

    查询数据
    select * from [data$]
    查询某几个字段
    select 姓名,年龄 from [data$]
    带条件的查询
    select * from [data$] where 性别 = '男'
    合并两个表的数据,上下形式
    select * from [data$] union all select * from [data2$]
     插入新纪录
    insert into [data$] (姓名,性别,年龄) values ('AA','男',33) 
    修改一条数据
    update [data$] set 性别=‘男’,年龄=16 where 姓名=‘张三‘
    删除一条数据(不能用),可以通过多加一列,表示不删除,删除时更改值为删除,取得时候where值等于不删除
    delete from [data$]  where 姓名='张三'
    使用LEFT JOIN …ON…  (类似于VLOOKUP)
    select [data3$].姓名,性别,年龄,月薪 from [data$] left join [data3$] on [data$].姓名=[data3$].姓名
    先UNION ALL 再LEFT JOIN
    select * from (select * from [data$] union all select * from [data2$])a left join [data3$] on a.姓名=[data3$].姓名
    将查询结果赋值到数组
    arr = Application.WorksheetFunction.Transpose(conn.Execute("select * from [data$]").GetRows)
    
    

    使用ADO连接外部Access数据源

    1 在VBE界面中 工具—引用
       勾选Microsoft ActiveX Data Objects  x.x  Library 
    2 连接代码
      Sub test()
    Dim conn As New ADODB.Connection
    conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\data\Adata.accdb" 
    ‘这里使用SQL对数据进行操作,[数据表名称],可以使用删除sql语句
    conn.Close
    End Sub
    
    

    附表

    对齐方式

    With Selection
            '水平对齐方式
            .HorizontalAlignment = xlRight 
            '垂直对齐方式
            .VerticalAlignment = xlCenter
            '自动换行
            .WrapText = False
            '文字方向
            .Orientation = 0
            '缩进
            .AddIndent = False
            '缩进量
            .IndentLevel = 0
            '缩小字体填充
            .ShrinkToFit = False
            '文字方向
            .ReadingOrder = xlContext
            '合并单元格
            .MergeCells = False
    End With
    
    

    字体格式

    With Selection.Font
            '字体
            .Name = "华文琥珀"
            '字号
            .Size = 9
            '删除线
            .Strikethrough = False
            '上标
            .Superscript = False
            '下标
            .Subscript = False
            '大纲字体
            .OutlineFont = False
            '阴影
            .Shadow = False
            '下划线
            .Underline = xlUnderlineStyleNone
            '字体颜色
            .ColorIndex = xlAutomatic
            '颜色变深或变浅
            .TintAndShade = 0
            '主题字体
            .ThemeFont = xlThemeFontNone
        End With
    

    填充

    With Selection.Interior
            '图案样式
            .Pattern = xlSolid
            '图案颜色
            .PatternColorIndex = xlAutomatic
            '主体颜色
            .ThemeColor = xlThemeColorDark1
            '颜色变深或变浅
            .TintAndShade = -4.99893185216834E-02
            '填充色
            .Color = 65535
            '对象的淡色和底纹图案
            .PatternTintAndShade = 0
        End With
    

    对话框的值

    名称	值	说明
    xlDialogActivate	103	“激活”对话框
    xlDialogActiveCellFont	476	“活动单元格字体”对话框
    xlDialogAddChartAutoformat	390	“添加图表自动套用格式”对话框
    xlDialogAddinManager	321	“加载项管理器”对话框
    xlDialogAlignment	43	“对齐方式”对话框
    xlDialogApplyNames	133	“应用名称”对话框
    xlDialogApplyStyle	212	“应用样式”对话框
    xlDialogAppMove	170	“AppMove”对话框
    xlDialogAppSize	171	“AppSize”对话框
    xlDialogArrangeAll	12	“全部重排”对话框
    xlDialogAssignToObject	213	“给对象指定宏”对话框
    xlDialogAssignToTool	293	“给工具指定宏”对话框
    xlDialogAttachText	80	“附加文本”对话框
    xlDialogAttachToolbars	323	“附加工具栏”对话框
    xlDialogAutoCorrect	485	“自动校正”对话框
    xlDialogAxes	78	“坐标轴”对话框
    xlDialogBorder	45	“边框”对话框
    xlDialogCalculation	32	“计算”对话框
    xlDialogCellProtection	46	“单元格保护”对话框
    xlDialogChangeLink	166	“更改链接”对话框
    xlDialogChartAddData	392	“图表添加数据”对话框
    xlDialogChartLocation	527	“图表位置”对话框
    xlDialogChartOptionsDataLabelMultiple	724	“图表选项多个数据标签”对话框
    xlDialogChartOptionsDataLabels	505	“图表选项数据标签”对话框
    xlDialogChartOptionsDataTable	506	“图表选项数据表”对话框
    xlDialogChartSourceData	540	“图表源数据”对话框
    xlDialogChartTrend	350	“图表趋势”对话框
    xlDialogChartType	526	“图表类型”对话框
    xlDialogChartWizard	288	“图表向导”对话框
    xlDialogCheckboxProperties	435	“复选框属性”对话框
    xlDialogClear	52	“清除”对话框
    xlDialogColorPalette	161	“调色板”对话框
    xlDialogColumnWidth	47	“列宽”对话框
    xlDialogCombination	73	“组合图”对话框
    xlDialogConditionalFormatting	583	“条件格式”对话框
    xlDialogConsolidate	191	“合并计算”对话框
    xlDialogCopyChart	147	“复制图表”对话框
    xlDialogCopyPicture	108	“复制图片”对话框
    xlDialogCreateList	796	“创建列表”对话框
    xlDialogCreateNames	62	“创建名称”对话框
    xlDialogCreatePublisher	217	“创建发布者”对话框
    xlDialogCustomizeToolbar	276	“自定义工具栏”对话框
    xlDialogCustomViews	493	“自定义视图”对话框
    xlDialogDataDelete	36	“数据删除”对话框
    xlDialogDataLabel	379	“数据标签”对话框
    xlDialogDataLabelMultiple	723	“多个数据标签”对话框
    xlDialogDataSeries	40	“数据系列”对话框
    xlDialogDataValidation	525	“数据有效性”对话框
    xlDialogDefineName	61	“定义名称”对话框
    xlDialogDefineStyle	229	“定义样式”对话框
    xlDialogDeleteFormat	111	“删除格式”对话框
    xlDialogDeleteName	110	“删除名称”对话框
    xlDialogDemote	203	“降级”对话框
    xlDialogDisplay	27	“显示”对话框
    xlDialogDocumentInspector	862	“文档检查器”对话框
    xlDialogEditboxProperties	438	“编辑框属性”对话框
    xlDialogEditColor	223	“编辑颜色”对话框
    xlDialogEditDelete	54	“编辑删除”对话框
    xlDialogEditionOptions	251	“编辑选项”对话框
    xlDialogEditSeries	228	“编辑数据系列”对话框
    xlDialogErrorbarX	463	“误差线 X”对话框
    xlDialogErrorbarY	464	“误差线 Y”对话框
    xlDialogErrorChecking	732	“错误检查”对话框
    xlDialogEvaluateFormula	709	“公式求值”对话框
    xlDialogExternalDataProperties	530	“外部数据属性”对话框
    xlDialogExtract	35	“提取”对话框
    xlDialogFileDelete	6	“文件删除”对话框
    xlDialogFileSharing	481	“文件共享”对话框
    xlDialogFillGroup	200	“填充组”对话框
    xlDialogFillWorkgroup	301	“填充工作组”对话框
    xlDialogFilter	447	“对话框筛选”对话框
    xlDialogFilterAdvanced	370	“高级筛选”对话框
    xlDialogFindFile	475	“查找文件”对话框
    xlDialogFont	26	“字体”对话框
    xlDialogFontProperties	381	“字体属性”对话框
    xlDialogFormatAuto	269	“自动套用格式”对话框
    xlDialogFormatChart	465	“设置图表格式”对话框
    xlDialogFormatCharttype	423	“设置图表类型格式”对话框
    xlDialogFormatFont	150	“设置字体格式”对话框
    xlDialogFormatLegend	88	“图例格式”对话框
    xlDialogFormatMain	225	“设置主要格式”对话框
    xlDialogFormatMove	128	“设置移动格式”对话框
    xlDialogFormatNumber	42	“设置数字格式”对话框
    xlDialogFormatOverlay	226	“设置重叠格式”对话框
    xlDialogFormatSize	129	“设置大小”对话框
    xlDialogFormatText	89	“设置文本格式”对话框
    xlDialogFormulaFind	64	“查找公式”对话框
    xlDialogFormulaGoto	63	“转到公式”对话框
    xlDialogFormulaReplace	130	“替换公式”对话框
    xlDialogFunctionWizard	450	“函数向导”对话框
    xlDialogGallery3dArea	193	“三维面积图库”对话框
    xlDialogGallery3dBar	272	“三维条形图库”对话框
    xlDialogGallery3dColumn	194	“三维柱形图库”对话框
    xlDialogGallery3dLine	195	“三维折线图库”对话框
    xlDialogGallery3dPie	196	“三维饼图库”对话框
    xlDialogGallery3dSurface	273	“三维曲面图库”对话框
    xlDialogGalleryArea	67	“面积图库”对话框
    xlDialogGalleryBar	68	“条形图库”对话框
    xlDialogGalleryColumn	69	“柱形图库”对话框
    xlDialogGalleryCustom	388	“自定义库”对话框
    xlDialogGalleryDoughnut	344	“圆环图库”对话框
    xlDialogGalleryLine	70	“折线图库”对话框
    xlDialogGalleryPie	71	“饼图库”对话框
    xlDialogGalleryRadar	249	“雷达图库”对话框
    xlDialogGalleryScatter	72	“散点图库”对话框
    xlDialogGoalSeek	198	“单变量求解”对话框
    xlDialogGridlines	76	“网格线”对话框
    xlDialogImportTextFile	666	“导入文本文件”对话框
    xlDialogInsert	55	“插入”对话框
    xlDialogInsertHyperlink	596	“插入超链接”对话框
    xlDialogInsertObject	259	“插入对象”对话框
    xlDialogInsertPicture	342	“插入图片”对话框
    xlDialogInsertTitle	380	“插入标题”对话框
    xlDialogLabelProperties	436	“标签属性”对话框
    xlDialogListboxProperties	437	“列表框属性”对话框
    xlDialogMacroOptions	382	“宏选项”对话框
    xlDialogMailEditMailer	470	“编辑邮件发件人”对话框
    xlDialogMailLogon	339	“邮件登录”对话框
    xlDialogMailNextLetter	378	“发送下一信函”对话框
    xlDialogMainChart	85	“主要图”对话框
    xlDialogMainChartType	185	“图表类型”对话框
    xlDialogMenuEditor	322	“菜单编辑器”对话框
    xlDialogMove	262	“移动”对话框
    xlDialogMyPermission	834	“我的权限”对话框
    xlDialogNameManager	977	“名称管理器”对话框
    xlDialogNew	119	“新建”对话框
    xlDialogNewName	978	“新建名称”对话框
    xlDialogNewWebQuery	667	“新建 Web 查询”对话框
    xlDialogNote	154	“注意”对话框
    xlDialogObjectProperties	207	“对象属性”对话框
    xlDialogObjectProtection	214	“对象保护”对话框
    xlDialogOpen	1	“打开”对话框
    xlDialogOpenLinks	2	“打开链接”对话框
    xlDialogOpenMail	188	“打开邮件”对话框
    xlDialogOpenText	441	“打开文本”对话框
    xlDialogOptionsCalculation	318	“计算选项”对话框
    xlDialogOptionsChart	325	“图表选项”对话框
    xlDialogOptionsEdit	319	“编辑选项”对话框
    xlDialogOptionsGeneral	356	“常规选项”对话框
    xlDialogOptionsListsAdd	458	“添加列表选项”对话框
    xlDialogOptionsME	647	“ME 选项”对话框
    xlDialogOptionsTransition	355	“转换选项”对话框
    xlDialogOptionsView	320	“视图选项”对话框
    xlDialogOutline	142	“大纲”对话框
    xlDialogOverlay	86	“覆盖图”对话框
    xlDialogOverlayChartType	186	“覆盖图图表类型”对话框
    xlDialogPageSetup	7	“页面设置”对话框
    xlDialogParse	91	“分列”对话框
    xlDialogPasteNames	58	“粘贴名称”对话框
    xlDialogPasteSpecial	53	“选择性粘贴”对话框
    xlDialogPatterns	84	“图案”对话框
    xlDialogPermission	832	“权限”对话框
    xlDialogPhonetic	656	“拼音”对话框
    xlDialogPivotCalculatedField	570	“数据透视表计算字段”对话框
    xlDialogPivotCalculatedItem	572	“数据透视表计算项”对话框
    xlDialogPivotClientServerSet	689	“设置数据透视表客户机服务器”对话框
    xlDialogPivotFieldGroup	433	“组合数据透视表字段”对话框
    xlDialogPivotFieldProperties	313	“数据透视表字段属性”对话框
    xlDialogPivotFieldUngroup	434	“取消组合数据透视表字段”对话框
    xlDialogPivotShowPages	421	“数据透视表显示页”对话框
    xlDialogPivotSolveOrder	568	“数据透视表求解次序”对话框
    xlDialogPivotTableOptions	567	“数据透视表选项”对话框
    xlDialogPivotTableWizard	312	“数据透视表向导”对话框
    xlDialogPlacement	300	“位置”对话框
    xlDialogPrint	8	“打印”对话框
    xlDialogPrinterSetup	9	“打印机设置”对话框
    xlDialogPrintPreview	222	“打印预览”对话框
    xlDialogPromote	202	“升级”对话框
    xlDialogProperties	474	“属性”对话框
    xlDialogPropertyFields	754	“属性字段”对话框
    xlDialogProtectDocument	28	“保护文档”对话框
    xlDialogProtectSharing	620	“保护共享”对话框
    xlDialogPublishAsWebPage	653	“发布为网页”对话框
    xlDialogPushbuttonProperties	445	“按钮属性”对话框
    xlDialogReplaceFont	134	“替换字体”对话框
    xlDialogRoutingSlip	336	“传送名单”对话框
    xlDialogRowHeight	127	“行高”对话框
    xlDialogRun	17	“运行”对话框
    xlDialogSaveAs	5	“另存为”对话框
    xlDialogSaveCopyAs	456	“副本另存为”对话框
    xlDialogSaveNewObject	208	“保存新对象”对话框
    xlDialogSaveWorkbook	145	“保存工作簿”对话框
    xlDialogSaveWorkspace	285	“保存工作区”对话框
    xlDialogScale	87	“缩放”对话框
    xlDialogScenarioAdd	307	“添加方案”对话框
    xlDialogScenarioCells	305	“单元格方案”对话框
    xlDialogScenarioEdit	308	“编辑方案”对话框
    xlDialogScenarioMerge	473	“合并方案”对话框
    xlDialogScenarioSummary	311	“方案摘要”对话框
    xlDialogScrollbarProperties	420	“滚动条属性”对话框
    xlDialogSearch	731	“搜索”对话框
    xlDialogSelectSpecial	132	“特殊选定”对话框
    xlDialogSendMail	189	“发送邮件”对话框
    xlDialogSeriesAxes	460	“系列坐标轴”对话框
    xlDialogSeriesOptions	557	“系列选项”对话框
    xlDialogSeriesOrder	466	“系列次序”对话框
    xlDialogSeriesShape	504	“系列形状”对话框
    xlDialogSeriesX	461	“系列 X”对话框
    xlDialogSeriesY	462	“系列 Y”对话框
    xlDialogSetBackgroundPicture	509	“设置背景图片”对话框
    xlDialogSetPrintTitles	23	“设置打印标题”对话框
    xlDialogSetUpdateStatus	159	“设置更新状态”对话框
    xlDialogShowDetail	204	“显示明细数据”对话框
    xlDialogShowToolbar	220	“显示工具栏”对话框
    xlDialogSize	261	“大小”对话框
    xlDialogSort	39	“排序”对话框
    xlDialogSortSpecial	192	“选择性排序”对话框
    xlDialogSplit	137	“拆分”对话框
    xlDialogStandardFont	190	“标准字体”对话框
    xlDialogStandardWidth	472	“标准宽度”对话框
    xlDialogStyle	44	“样式”对话框
    xlDialogSubscribeTo	218	“订阅”对话框
    xlDialogSubtotalCreate	398	“创建分类汇总”对话框
    xlDialogSummaryInfo	474	“摘要信息”对话框
    xlDialogTable	41	“表”对话框
    xlDialogTabOrder	394	“Tab 键次序”对话框
    xlDialogTextToColumns	422	“分列”对话框
    xlDialogUnhide	94	“取消隐藏”对话框
    xlDialogUpdateLink	201	“更新链接”对话框
    xlDialogVbaInsertFile	328	“VBA 插入文件”对话框
    xlDialogVbaMakeAddin	478	“VBA 创建加载项”对话框
    xlDialogVbaProcedureDefinition	330	“VBA 过程定义”对话框
    xlDialogView3d	197	“三维视图”对话框
    xlDialogWebOptionsBrowsers	773	“Web 浏览器选项”对话框
    xlDialogWebOptionsEncoding	686	“Web 编码选项”对话框
    xlDialogWebOptionsFiles	684	“Web 文件选项”对话框
    xlDialogWebOptionsFonts	687	“Web 字体选项”对话框
    xlDialogWebOptionsGeneral	683	“Web 常规选项”对话框
    xlDialogWebOptionsPictures	685	“Web 图片选项”对话框
    xlDialogWindowMove	14	“窗口移动”对话框
    xlDialogWindowSize	13	“窗口大小”对话框
    xlDialogWorkbookAdd	281	“添加工作簿”对话框
    xlDialogWorkbookCopy	283	“复制工作簿”对话框
    xlDialogWorkbookInsert	354	“插入工作簿”对话框
    xlDialogWorkbookMove	282	“移动工作簿”对话框
    xlDialogWorkbookName	386	“命名工作簿”对话框
    xlDialogWorkbookNew	302	“新建工作簿”对话框
    xlDialogWorkbookOptions	284	“工作簿选项”对话框
    xlDialogWorkbookProtect	417	“保护工作簿”对话框
    xlDialogWorkbookTabSplit	415	“拆分工作簿标签”对话框
    xlDialogWorkbookUnhide	384	“取消隐藏工作簿”对话框
    xlDialogWorkgroup	199	“工作组”对话框
    xlDialogWorkspace	95	“工作区”对话框
    xlDialogZoom	256	“缩放”对话框
    
    
    展开全文
    qq_32392853 2020-05-02 18:21:15
  • 利用VBA开发数据汇总工具通常在日常工作中总会用到Excel并且经常会遇到Excel将多个表格进行汇总。经过工作中的实践,发现用VBA开发具有一定重复性的功能,能够极大提高工作效率。最近,将本人曾开发的的Excel数据...

    5c9853e1aefbf386ea86857181a3d087.png
    1. 利用VBA开发数据汇总工具

    通常在日常工作中总会用到Excel并且经常会遇到Excel将多个表格进行汇总。经过工作中的实践,发现用VBA开发具有一定重复性的功能,能够极大提高工作效率。最近,将本人曾开发的的Excel数据汇总工具,进行进一步代码和界面的优化。此文是为了广大工作在一线的表格小白做一个Excel开发的普及篇。重点介绍作为一个小白,如何开发出自己想得到的趁手工具。

    第一章 认识Excel与VBA

    Excel是什么?

    很多小白的日常工作中,经常接触操作Excel,重复性的工作,但是除了那几种固定的操作模式,就不涉及到其他了。所以,仍对Excel认知较少。那么Excel究竟能帮助我们完成哪些工作呢,其实很简单,日常表格数据量不是超大规模的,几乎可以应付日常一般情况下的应用场景。比如网上通常的例子就是批量生成并打印工资单等等。Excel就是一个工具,一个具有数据处理分析功能的强大工具。并且可以通过VBA编程来定制自己特殊数据处理的工具。

    VBA是什么?

    由于微软Office软件的普及,人们常见的办公软件Office软件中的Word、Excel、Access、Powerpoint都可以利用VBA使这些软件的应用更高效率,例如:通过一段VBA代码,可以实现画面的切换;可以实现复杂逻辑的统计(比如从多个表中,自动生成按合同号来跟踪生产量、入库量、销售量、库存量的统计清单)等。

    掌握了VBA,可以发挥以下作用:

    1.规范用户的操作,控制用户的操作行为;

    2.操作界面人性化,方便用户的操作;

    3.多个步骤的手工操作通过执行VBA代码可以迅速的实现;

    4.实现一些VB无法实现的功能。

    5.用VBA制做EXCEL登录系统。

    6.利用VBA可以Excel内轻松开发出功能强大的自动化程序。

    VBA是一种Visual Basic的宏语言,它应该是最早的Office提供定制化的一种解决方案,在1994年发行的Excel 5.0版本中,就具备了VBA的宏功能。从名字上似乎可以看出他是VB的一个子集,和Visual Basic不同,VBA是一种宿主型语言。由于那个时候Visual Basic非常火, VBA取得了很大的成功,无论是专业的开发人员,还是刚入门的非开发人员,都可以利用VBA完成简单或复杂的需求。现在在一些办公环境中,VBA用的非常多,比如国内比较著名的ExcelHome论坛,上面就有很多关于Excel VBA的讨论,而且VBA还能够调研Com组件里面的一些方法,在其他的Office开放方式中,如VSTO或者SharedAddin中, VBA有时候可以辅助完成某些功能,如RTD函数,UDF函数的调用,专用模板的开发,动画效果的演示等等。不光是Office,有很多其他的软件业比如比较有名的ArcGIS,CorelDraw等软件,都提供了VBA的定制化解决方案。

    除了技术上的其他支持,我们也要搭建好开发环境。这就非常简单了。但是搭建过程中,也可能会遇到非常棘手的问题,也都需要逐一克服。但是,如果没有什么高的要求,一般情况下,只要是Windows的操作系统,并且还安装了一个Excel就可以了。除非你就想学最新的,Windows要求是10版更新到1903的,MS Office要求是2019专业版的,那这要求可就需要你折腾一下你的电脑了。因为此时会产生2个大问题:

    如何安装并激活window10?

    如何安装并激活MS Office 2019?

    以上2个问题先请行百度一下。我会在后面的介绍中详细说明。言归正传:安装完系统,安装完Excel。我们几乎就可以马上开发了!等等,此时还有人会问,我不会英语,也不熟悉计算机,怎么办?可以肯定的说,既便于你会英语会计算机日常操作,也不一定会VBA开发。因为,这2个学科并不能从本质上影响你学习开发VBA。

    第二章 安装并激活win10

    第一节 制作U盘启动盘

    准备一只U盘,U盘容量8G以上,传输速率当然是越快越好。所以,最好是选3.0接口的,您要是有2.0接口的也可以。

    3.0和2.0的区别:直观上一看,接口处,2.0是白色或黑色的,3.0是蓝色的。

    然后我们先到老毛桃官网下载一个U盘启动盘制作工具:

    老毛桃winpe,老毛桃winpe u盘启动盘制作工具,老毛桃winpe下载​www.laomaotao.net

    如何制作:

    winpe教程

    前期准备

    1、准备一个4G以上的U盘

    2、备份U盘重要文件,制作过程中会格式化U盘。

    PS:本软件涉及对可移动磁盘的读写操作,部分杀毒软件和安全类软件会导致制作失败,运行程序前请关闭相关软件!

    1. 下载老毛桃U盘启动盘制作工具,下载完成后,如图是老毛桃的运行程序。
    2. 插入U盘后,双击打开老毛桃U盘制作工具,会出现如图所示U盘winpe系统制作界面。
    3. 选择普通模式选项卡,“请选择”中选择自身U盘设备名称(一般会自动识别)。模式选择USB—HDD,格式选择“NTFS”
    4. 点击“一键制作成USB启动盘”按钮,开始制作U盘winpe系统,过程中会格式化U盘上的数据,制作前请确认U盘是否已做好备份。
    5. 开始制作后软件下方会有进度条提醒,请耐心等待。
    6. 制作完成后,程序会提示您已制作成功,您可以选择模拟启动测试,若能够进入老毛桃winpe主菜单,即表示老毛桃U盘启动盘制作成功。

    好,至此,U盘启动盘已经制作完毕。

    第二节 装机win10

    重装win10教程

    前期准备

    1. 制作一个老毛桃U盘winpe启动
    2. 提前准备好win 10的镜像系统,如若没有可在网上自行下载,并将镜像复制到老毛桃U盘winpe启动盘的根目录或本机其他分区中(除C盘外)
    3. 查询自身机型的U盘启动快捷键

    步骤如下:

    1. 插入装有老毛桃winpe系统的U盘,开机或重启电脑,当开机画面一闪而过之际,眼疾手快地按下U盘启动快捷键进入优先启动项设置界面。 PS:需查询自身机型的U盘启动快捷键
    2. 选择U盘选项后回车进入下一步,注意:通常带有“USB”字样的选项即为U盘选项。
    3. 进入老毛桃winpe主菜单后,通过“↑↓”键选择“【1】启动Win10 X64PE(2G以上内存)”后回车进入。
    4. 打开老毛桃一键装机,在选择操作一栏点击“安装系统”,接着在“选择映像文件”一栏点击“打开”,找到下载好的win10镜像文件, 最后选择安装路径为C盘,点击“执行”。
    5. 在老毛桃一键还原窗口中,勾选复选框内后点击“是”(建议用户将“网卡驱动”和“USB驱动”这两个选项勾选,以免重启后无法使用网络和鼠标)。
    6. 程序写入待安装完毕后重启笔记本,同时要拔掉U盘,以免再次进入老毛桃winpe界面了。
    7. 重启后就电脑会进入重装系统的第二阶段,此时无需操作,静待安装完成即可,如果成功进入win 10操作系统的桌面,即表明成功重装了win 10系统。

    至此,安装完成了win10。

    第三节 激活win10

    首先第一步,点击左下角搜索栏,输入:运行。右键以管理员身份运行。输入:cmd 打开即可

    复制以下命令:slmgr.vbs /upk。直接鼠标右键就可以粘贴进去。然后点击“enter键”。窗口弹出:"已经成功卸载密钥".那么这一步就成功了,恭喜你!

    然后复制以下命令:slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX 鼠标右键粘贴,enter,搞定,系统提示已经成功安装密钥!

    最重要的一步,也是激活的核心原理,仿照上面的方法,复制slmgr /skms zh.us.to 粘贴输入并且运行,系统提示:“密钥管理服务计算机名成功的设置为zh.us.to”。

    最后一步,最后一个命令:slmgr /ato。运行之后,系统提示成功激活,恭喜你,成功了!

    总的来说,确实有点繁琐,但是如果你使用之后,就会发现确实很简单,值得注意的就是:鼠标右键就是粘贴,enter就是运行,这也算是命令提示符的一个入门了吧。

    顺便提醒一句,系统激活只有180天的有效期,也就是说,180天后需要重新来一遍上面的步骤。

    第三章 安装并激活MS Office 2019

    第一节 安装MS Office 2019

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    本文链接:https://blog.csdn.net/hunzhangzui9837/article/details/83651268

    微软在2018年9月28日发布了 Microsoft Office 2019 正式版,不过仅支持Win10系统。目前微软镜像文件已经流出,可以通过离线镜像进行安装。如果想使用 Microsoft Office 2019 正式版,则需要先删除系统上已经安装的所有Microsoft Office系列软件。此次更新,是对过去三年在Office 365里所有功能进行整合,包括对Word、Excel、PowerPoint、Outlook、Project、Visio、Access和Publisher的更新。

    本次Microsoft Office 2019 正式版更新,不像之前一样通过推送更新来获取新的功能,Office 2019 是一次性发布的,不会再有后续的功能更新。此次更新主要想吸引之前未选择Microsoft Office 365的企业个人用户。Office 2019提供跨应用程序的功能,以帮助用户在更短的时间内创建令人惊叹的内容。在PowerPoint 2019中,允许用户创建带有Morph和Zoom等新功能的电影演示文稿。同时改进了Windows应用程序的输墨功能-比如漫游铅笔盒,压力敏感度,倾斜效果-允许用户自然地创建文档。Excel 2019增加了强大的新数据分析功能,包括新的公式和图表以及对PowerPivot的增强。

    Office2019还包括新的信息技术价值,以加强安保和精简行政管理。微软在Office 2013中引入了一种现代部署技术-Clickto-Run(C2R),现在它已被用于在全球数亿台设备上部署和更新Office。在Office 2019中,微软正在将Office的现场版本转移到C2R,以降低成本和提高安全性。C2R的优点包括每月可预测的安全更新、安装时的最新应用程序、通过Windows 10下载优化技术减少网络消耗,以及易于升级到ProPlus。

    下载地址:

    专业增强版(强烈推荐):

    http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60/media/zh-cn/ProPlus2019Retail.img

    专业版:

    http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60/media/zh-cn/Professional2019Retail.img

    家庭学生版:

    http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60/media/zh-cn/HomeStudent2019Retail.img

    家庭企业版:

    http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60/media/zh-cn/HomeBusiness2019Retail.img

    第二节 激活MS Office 2019

    破解补丁:

    目前MicroKMS神龙版能激活win10、win8/8.1、win7以及server2008/2012/2016等系统版本,其中包括:专业工作站版、企业版、专业版、教育版、专业教育版、家庭版、核心版、中文版(OEM预装系统版本)、单语言版等,同时支持激活office 2010/2013/2016/2019 Proplus、Visio 2010/2013/2016/2019 Pro、Project 2010/2013/2016/2019 Pro。

    下载地址:

    百度网盘:https://pan.baidu.com/s/1VCI_V7xlVEx9FhbVSPqSxQ

    提取码:xil9

    【注】:如果下载出现浏览器崩溃,先保存到自己网盘再去下载。

    另外注意的是,激活需要联网。

    ————————————————

    版权声明:本文为CSDN博主「小白clever」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/hunzhangzui9837/article/details/83651268

    第四章 如何获得技术支持

    工欲善其事必先利其器。学习VBA开发Excel也并不比完全系统学习。作为工作一族,我们已经不是学校的学生,所以可以手边常备一个Excel VBA开发的书籍。遇到问题就随手翻一翻。或者在处理表格数据时,按F1或者点击菜单上的“帮助”来获得技术支持。通常情况下,认真阅读,仔细思考,是能够看的懂帮助的内容的。读书百遍其意自现。第一遍有可能看不懂,多读几遍多思考几遍就会逐渐理解了。最好是加一些Excel开发的QQ群/微信群。或者是多上一些Excel VBA开发的论坛,比如Excel Home。还可以直接度娘,或者干脆上微软官网查找解决问题的方法。亦或者可以直接联系会这方面的好友,那样最好不过了,能有人手把手的教,这种待遇,真的是太奢侈了。

    推荐学习网址:我要自学网:https://www.51zxw.net/list.aspx?cid=539

    Excel Home论坛是Excel教程下载和软件下载中心,Microsoft技术社区联盟成员,全球极具影响力的Excel门户,Office技术培训社区:http://club.excelhome.net/forum-2-1.html

    推荐书籍:Excel VBA开发宝典《第三版》

    第五章 分析需求

    如前所述,要开发Excel应用程序,有很多方案可以选择。在作出选择之前,根据个人经验,有以下几方面需要考虑:

    1 应用程序的类型及功能

    根据Excel插件开发的功能需求,对于以些较简单的应用,比如一些Excel模板等,可以直接采用VBA宏进行定制,如果具有.NET 基础,可以采用VSTO Document-Level的方式来开发模板;对于一些较大型的或者比较复杂的一些应用,或者考虑到效率,编写VAB可能难以实现某些功能这时可以考虑采用SharedAddin或者VSTO Addin的方式来进行开发,他能够直接利用.NET平台上的各种语言及类库,并且可以使用Visual Studio这种强大的工具来开发和进行调试;如果对应用程序的跨平台,或者移动性要求较高,或者是需要在已有的Web应用程序上建立Office应用程序,则可以考虑使用Office App的方式来进行开发;如果应用程序对效率和要求较高,并且具有扎实的C或者C++基础,可以采取XLL的方式对Excel进行扩展;对于一些需要批量生产Excel文件的应用环境,比如在服务器上生产Excel文件,导出数据到Excel,对Excel文件进行合并分割等操作,采用OpenXML SDK、NOPI等第三方具有直接读写Excel文件的SDK来进行开发能够获取更高的效率,另外采用第三方SDK可以使得部署的目标机器不需要安装Office的可编程环境。

    2 程序兼容Office的版本问题

    第二个比较重要的考虑因素是应用程序的兼容版本问题。这个问题就像是开发BS应用程序需要考虑应用程序的类型比如是IE还是Chrome以及版本,比如需要处理IE6 下各种头疼的问题等等。开发Excel应用程序也需要注意这一点,虽然最新的Excel2013已经推出,但是仍有大部分的客户机器可能使用的是2003 的系统。这种情况下,如果使用VSTO Application Addin的方式可能不能兼容2003的系统,并且一些特殊的UI界面如Ribbon菜单,Customer Task Panel在03版本上不兼容。这种情况下,有时候可能需要采用一些比较通用的技术如VBA,XLL,SharedAddin技术来进行处理,另外对于一些07及以上版本中特有的UI界面和功能,使用SharedAddin开发,并且如果想利用这些功能,可能需要进行一些手动的编码和判断。另外,如果采用VSTO编程,还有一个重要的考虑因素是.NET的版本问题,Excel插件通常是和其他产品绑定在一起发布或者销售的,有时候可能限定平台在.NET 2.0 上,那么选择VSTO的版本,及开发工具的时候可能就需要注意了。如果确定目标用户使用的Office版本为比较新的版本,如2007或者以上,建议还是使用VSTO较高的版本进行开发,这样可以极大地简化开发的难度,提高应用程序的性能。如果客户使用的是最新版的Office,采用Office App的开发方式也是一种比较好的选择。

    3 日常重复性工作的归纳

    日常工作中,通常大致有2类汇总的情形。

    一种是复制粘贴式。也就是说,把来自多个表格的数据,通过复制粘贴的方式,汇总到同一张表格中。

    另一种是数据计算式。也就是说,把来自多个表格的数据的同种项目进行累加求和,形成一张表格。

    那么可以拆分成这么几个功能按钮:

    1是导入文件夹内所有工作簿中的所有工作表到同一个工作簿的不同工作表

    2是将导入的空工作表全部删除

    3是将同一个工作簿中的所有工作表通过复制粘贴式汇总到同一张表格

    4是将同一个工作簿中的所有工作表中的同一个项目进行累加求和,形成到一张表格中。

    5是重置工作表。将带程序的工作簿还原成初始状态。

    基于以上5个功能,可以开发5个命令按钮。这5个按钮要放到Excel的菜单上。大致就是这样吧。

    第六章 Excel菜单的开发

    我们先来直观感受一下Excel菜单。不严格的说,2010版本之后的2013/2016/2019版本管这个叫Ribbon。那么后面我们就叫Ribbon的开发。就是一条长带子的样子。

    我们现在要先在这个Ribbon上放置5个按钮。类似于“前端”的开发,不严格说,或者是界面的开发,总之随你怎么称呼。那么这个Ribbon的开发,可能有点超纲了,因为不得不学点XML语言。因为这玩意是用XML写的,你就的用XML语言去改。千万不要一看到这种带字母的语言就感到高大上和有距离感。你可以把它想象成学一门外语而已,并且这门外语不仅有26个字母,还有一堆符号,还有各种标记格式等等吧。那么如何学习XML呢?请到:

    XML 教程 | 菜鸟教程​www.baidu.com

    https://www.runoob.com/xml/xml-tutorial.html。

    这些知识看看也就够了。

    有2个途径可以编写Ribbon。

    1、借用OfficeCustomUIEditor 工具的

    参考:http://www.exceltip.net/thread-4190-1-1.html

    2、不借用任何工具,纯VBA环境下自定义EXCEL 菜单选项卡。

    参考:http://club.excelhome.net/forum.php?mod=viewthread&tid=729624&extra=page%3D1%26filter%3Ddigest%26digest%3D1%26digest%3D1

    这两篇文章都写的很好很详细。

    ————————————————

    版权声明:本文为CSDN博主「tianlangwangluo」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:

    https://blog.csdn.net/dutaibai/article/details/52115690​blog.csdn.net

    按照上文链接,我们先开发出如下的按钮:

    刚才,“前端“已经开发完了。那么重点来了,我们开始进行类似于“后端”的开发了。VBA开始写起了。

    第七章 初识VBE

    打开Excel,先另存为一个启用宏的工作簿。然后重新打开进行开发。按Alt+F11,打开开发界面,我们先了解以下开发界面:

    Excel宏编程基础:什么是VBA宏/在哪里编写宏/怎么运行宏?

    德宝老师 2014-1-30 9:46 分类:表格技巧

    一、什么是“宏”、“宏”有什么用

    关于“宏”的详细定义,可以参考百度百科的解释(点击查看)。我给它一个简单的或许不太严谨的定义:

    宏的通俗定义:宏是被某些软件所能识别、理解并执行的特定代码/脚本。

    宏的作用:因为宏能被软件执行、不需要人工来操作了,从而能实现“自动、批量”的业务处理,极大提高工作效率。

    二、“宏”不是Excel也不是Office专有

    要知道,宏不是Excel特有的,Office的其他组件如PPT、Word、Outlook等也都有宏。不光Office,不少软件也带有宏功能。例如印象中PS可以将一堆图片进行批量的裁剪或添加水印等处理,这可以视为一种宏。甚至连文本编辑器EditPlus都带有宏录制功能。还有些软件就专门实现宏功能的,类似“鼠标键盘录制回放器”那样将键盘操作记录下来再重新回放,比较知名的如:按键精灵、AutoHotkey等。

    三、“宏”长什么样

    如第2部分所述,很多软件都带有宏,不同软件的宏也不一样。下面这段是AutoHotkey的脚本:

    1. #z::Run http://www.autohotkey.com
    2. ::/note::
    3. IfWinExist 无标题 - 记事本
    4. WinActivate
    5. else
    6. Run Notepad
    7. return

    而Office里的宏称为VBA(Visual Basic for Application)。不同组件(Excel/PPT/Word等)中的VBA语法一样,但所支持的对象、方法会有所不同。具体代码见后文示例。

    四、VBA:Excel中的宏

    终于讲到Excel的宏了。VBA基本上就是VB(不知道VB是啥?点此)的简化版,如果有VB功底,学VBA就不费劲了。

    但毕竟VBA还是属于“开发”类工作,没有任何编程经验的人(码农)能不能学会VBA呢?答案是肯定的!只要有人带进门加以点拨,再肯下些功夫,一定可以写出一些提高工作效率的VBA工具。我在新浪工作期间,曾经有个实习生能修改我写的VBA工具,学中文的,女生。

    五、在哪里编写VBA:Excel VBE开发环境

    下面我们来制作一个带宏的Excel文档。详细步骤:

    1.新建一个工作薄,文件->另存为,“文件名”输入“宏测试”,在“文件类型”中选择“Excel 启用宏的工作薄(*.xlsm)”,点击保存。

    2.按Alt+F11组合键,调出VBE窗口。右键点击“VBAProject”->插入->模块。然后,在左边的窗口中出现“模块1”。

    3.双击“模块1”,在右侧的空白区录入以下代码(此代码用于在屏幕上显示一个文字提示框),完成VBA宏的编辑。见下图:

    Sub VBATest()

    MsgBox "这是我的第1个VBA程序。"

    End Sub

    注:为了使用更多关于宏的功能,最好将Excel中的“开发工具”选项卡调出来。Excel2007和2010显示“开发工具”选项卡的设置方法分别是:

    Excel2007:

    点击Excel左上角的Office按钮,点击弹出的菜单底部的“Excel选项”按钮,在“常用”项里勾上“在功能区显示开发工具选项卡”,确定即可。

    Excel2010:

    点文件->选项,在Excel选项对方框里找到“自定义功能区”,在右侧勾上“开发工具”,确定。

    经过以上设置后,就能在Excel主窗口上看到“开发工具”选项卡了,点开里面有诸多关于宏开发的功能。例如点击最左边的“Visual Basic”按钮也能进入VBE开发界面,跟按Alt+F11的效果一样。

    六、如何运行VBA宏

    至此,我们已经成功的编写了一个VBA宏,是不是很想看看这个宏执行的结果呀?接下来探讨如何运行宏、让宏正常工作了。通常有以下几个办法:

    1.从开发环境中直接运行。将光标置于Sub/End sub之间,按菜单上的绿三角按钮,或F5键。

    2.通过形状按钮调用。在工作表,点“插入”->形状,插入一下圆角矩形,输入“调用宏”并简单设置格式:

    右键点击“调用宏”这个形状,在弹出的菜单中选择“指定宏”,在“指定宏”对话框中选择刚才编写的宏(名称是VBATest),确定。

    在工作表任一单元格点击一下(好取消按钮的选中状态),这时鼠标移到按钮上就变成了小手的形状,点击后出现本宏运行的结果:

    3.快捷键调用。可以为宏设置一个快捷键,设置正确后直接按快捷键来运行宏。方法是:

    在“开发工具”选项卡,点“宏”按钮,选中“VBATest”,点击右侧的“选项”按钮,设置一个快捷键,确定。

    注意:此处设置的快捷键优先级高,如果跟软件原来的快捷键冲突,会覆盖原来的。

    七、为工程设置密码保护

    我们编写好的宏,为了防止被人任意修改,可以设置密码。通过后才可以进到代码编辑界面进行修改。具体操作方法:在左上角的列表树上右键点击“VBAProject...”,在弹击的菜单中选择“VBAProject属性”打开对话框,选择“保护”选项卡,勾选“查看时锁定工程”,并设置查看工程属性的密码,单击“确定”。如下图:

    展开全文
    weixin_39892309 2020-10-24 22:56:06
  • weixin_43916074 2021-11-23 08:20:43
  • 4星
    666KB na080808 2010-03-08 13:26:06
  • gerald2008 2020-06-03 19:34:30
  • 105KB weixin_42134117 2021-05-14 14:54:21
  • 4星
    70KB liangguoping 2014-05-17 08:42:33
  • LI5566123456 2019-09-29 21:09:57
  • Peter_Luoz 2019-04-11 16:45:51
  • weixin_39632693 2020-11-25 10:39:04
  • nbspzs 2021-11-09 11:22:38
  • cmzglj 2019-05-22 17:09:49
  • weixin_39620151 2020-12-14 17:05:28
  • stanwuc 2020-03-26 11:13:53
  • qq_39785418 2021-04-19 18:52:59
  • wangzz0427 2019-02-06 17:01:23
  • guorui_java 2021-01-14 19:50:24
  • weixin_35158372 2021-05-14 19:45:08
  • weixin_31358991 2021-07-19 18:12:36
  • weixin_39756696 2020-11-21 10:06:53
  • weixin_39557199 2020-12-03 15:14:15
  • weixin_42395725 2021-01-14 01:36:46
  • weixin_31936127 2021-01-17 03:20:18
  • weixin_39924486 2021-07-19 17:52:19

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,966
精华内容 2,786
关键字:

returnvba