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-
获取当前活动sheetfname = ActiveSheet.Name
ActiveSheetName = "" & fname & ""
Debug.Print ActiveSheetName
-
选中当前活动sheetSheets(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 = '常量声明时需立即跟等号赋值

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

如何获取知道数据属于什么类型,可以通过 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计时器
RGBRGB取色

2 数组

函数说明
Lbound,Ubound下限 上限

3 字符串

函数说明
Len返回长度
join,split拼接和分割
left right mid取子串
instr inStrRev找子串位置
Trim,LTrim,RTrim去空格
Format格式化
Asc ChrASC转换
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,需要安装文件driverhttps://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
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值