• VBA手册


    VBA相关设置

    1 如何设置VBA相关功能

    把开发选中

    2 excel中调出vba

    方法1:Alt+F11
    方法2:

    3 无法使用vba

    4 保存格式

    如果想要vba保存后,下一次打开没有把信息覆盖掉,最好保存成xlsm格式文件

    5 注释

    单行 '
    单行 Rem
    多行

    6 输出日志

    Debug.Print fileNo
    Debug内容会显示下界面的下方,生成的内容可以随时全部选中后清空

    7 录制宏和设计控价

    8 乱码问题

    无论是中文还是日语乱码,有两种解决方法:
    1)乱码是因为在复制的时候,没有选择和文档一致的语言。比如语言是日语,但复制是电脑的输入法是中文,如果统一成日语,就不会出现粘贴乱码
    2)设置excel的vba语言格式。

    语法

    0 常用语法

    功能 方法 备注
    注释 ’或者上方菜单可以多条注释
    判断相等 == -
    判断不等 <> -
    判断为空 “” -
    单元格引用 If Cells(n, 1) = Cells(n, 3) Then -
    获取当前活动sheet fname = ActiveSheet.Name
    ActiveSheetName = "" & fname & ""
    Debug.Print ActiveSheetName
    -
    选中当前活动sheet Sheets(ActiveSheetName).Cells(n, 1) <> "" -
    选中整行 Cells(n, 1).EntireRow.Select -
    赋值 x = Range("C5").Value
    Range("C5").Value=Cells(n, 1).Value
    Range("J10").Value= "333"
    -
    连接字符串 a & b
    a + b
    -
    如何调用函数/功能 CreateSql (text)
    CreateSql ()
    CreateSql 参数1,参数2,参数3
    1个参数可以写在括号里,大于1个参数不写括号
    如何调用函数/功能 CreateSql (text)
    CreateSql ()
    -

    1 定义变量

    dim 变量名 as 变量类型 'eg:Dim file As String
    Const as = '常量声明时需立即跟等号赋值

    • 数据类型
    序号 内容 说明
    1 Integer 整数
    2 Double 小数
    3 String 字符串
    4 Array 数组
    5 Dictionary 字典
    6 Boolean 布尔
    7 Date 日期
    8 Object 对象

    如何获取知道数据属于什么类型,可以通过 Debug.Print vartype(变量名) 得到,反馈的是

    2 控制流

    • If……elseif……else分支
            If Item = 1 Then                    '障害発生日
                copy_range = "I20:K20"
            ElseIf Item = 2 Then                '名前
                copy_range = "F13:G15"
            EeIf Item = 13 Then               '障害解消日2(実績)
                copy_range = "E39:F39"
            End If
    
    • Do While循环
    Do While file <> "" '当指定路径中由文件时进行循环
                Set WB = Workbooks.Open(Path & file) '打开符合要求的文件
                fileNo = fileNo + 1
                Call Click2(file, fileNo)    '调用你的另一端对每个excel文件进行具体操作的宏,也可以直接写到这个宏中
                Workbooks(file).Close savechanges:=False
                file = Dir '找寻下一个excel文件
            Loop
    
    • For循环
    For Item = 1 To 24 Step 1
        Debug.Print Item
    Next
    
    • For each循环
    For Each sheet In book.Worksheets
      text = text & sheet.Name & vbNewLine
    Next
    
    • Switch分支
    • While……Wend循环

    3 常用内置函数

    1 特殊类

    函数 说明
    inputBox 输入框
    msgbox 消息框
    rnd 随机数
    timer 计时器
    RGB RGB取色

    2 数组

    函数 说明
    Lbound,Ubound 下限 上限

    3 字符串

    函数 说明
    Len 返回长度
    join,split 拼接和分割
    left right mid 取子串
    instr inStrRev 找子串位置
    Trim,LTrim,RTrim 去空格
    Format 格式化
    Asc Chr ASC转换
    LCase UCase 大小写转换
    4 数字
    函数 说明
    - -
    IsNumeric 类型确认
    Round Fix 四舍五入

    5 时间与日期

    函数 说明
    Date Time Now 获取系统时间
    DateAdd DateDiff 时间加减
    DatePart month day hour 时间

    4 excel交互

    • excel
      Windows("COMITX本番障害票&調査依頼書_登录工具.xlsm").Activate
    • sheet
      Sheets("システム障害報告書").Select
    • 单元格
      Range(select_range).Select
      Range("A1").Select
      Cells.Select
      Cells(n, 2)
      select_range = "A100:A101"
      Selection.Copy
      ActiveSheet.Paste

    5 其他

    过程和函数

    Sub 过程名()
    ……
    End Sub

    函数
    Function 函数名(一堆变量)
    ……
    End Function

    运算符

    算术运算符 说明 比较运算符 说明 逻辑运算符 说明 连接运算符 说明
    + = 等于 And + 连接
    - <> 不等于 Or & 连接
    * > 大于 Not - -
    / < 小于 Xnot 或非 - -
    % >= 大于等于 - - - -
    ^ <= 小于等于 - - - -

    如何debug

    CTRL+G显示debug窗口
    debug.print testcontext
    清空debug窗口内容的时候,选中Ctrl+A delete即可

    连接数据库


    解决:
    找到报错位置,怀疑是连接ADODB错误,关键词检索,提供方案添加对应的库

    但是在日语环境下怎么都找不到配置的位置,后来多文件查询,对应到下图位置,但是功能是置灰的
    当报错说没有定义的时候,尤其是这个定义的类型是一个比较特殊的类型时,很可能是因为没有添加对应的库

    怎么安装ODBC驱动


    如果按照文档操作后,没有postpgeSQL,需要安装文件driver
    https://www.postgresql.org/ftp/odbc/versions/msi/

    如何返回电脑设置

    local x32 x64
    Public Const sPostgresIDx32 = "DRIVER={PostgreSQL Unicode};DATABASE=postgres;SERVER=localhost;PORT=5432;UID=postgres;PWD=postgres;"
    Public Const sPostgresIDx64 = "DRIVER={PostgreSQL Unicode(x64)};DATABASE=postgres;SERVER=localhost;PORT=5432;UID=postgres;PWD=postgres;"
    
    Sub SetpostgresID()
        ExclVer = Application.OperatingSystem
        If ExclVer Like "*Windows (32-bit)*" Then
           If wCompName Like "*HK-PCB*" Then
              sPostgresID = sPostgresIDx32_HK
           Else
              sPostgresID = sPostgresIDx32
           End If
        Else
           If wCompName Like "*HK-PCB*" Then
              sPostgresID = sPostgresIDx64_HK
           Else
              sPostgresID = sPostgresIDx64
           End If
        End If
    End Sub
    

    常用功能

    1 编列excel的sheet表

    功能说明:遍历sheet表,并且弹出msgbox返回所以所以结果

    Sub mynzH() '遍历循环
    Dim book As Workbook, sheet As Worksheet, text As String
    For Each book In Workbooks
        text = text & "Workbook: " & book.Name & vbNewLine & "Worksheets: " & vbNewLine
        For Each sheet In book.Worksheets
            text = text & sheet.Name & vbNewLine
        Next
        text = text & vbNewLine
    Next
    MsgBox text
    End Sub
    

    应用场景

    Sub mynzH()
    Dim book As Workbook, sheet As Worksheet, text As String
    For Each book In Workbooks  
        For Each sheet In book.Worksheets 
            text = sheet.Name
            Debug.Print text
            '调用其他函数 otherFunction(text)
        Next  
    Next
    End Sub
    
  • 相关阅读:
    Unity—Json2
    Unity—Json1
    windows 命令行报错:file(s) not in client view
    winform listbox 使用DrawMode使用OwnerDrawVarialbe或OwnerDrawFixed无水平滚动条
    windows 命令行使用p4
    winform listbox增加鼠标双击事件
    lua5.3+luasocket
    centos 安装glide工具(golang)笔记
    centos 安装golang笔记
    centos安装redis,并设置开机自动启动项
  • 原文地址:https://www.cnblogs.com/Alice1005/p/13879036.html
Copyright © 2020-2023  润新知