澳门金莎娱乐手机版 数据库 VBA学习笔记,一种当然是在语句中用到聚合函数的地方统统加上isnull

VBA学习笔记,一种当然是在语句中用到聚合函数的地方统统加上isnull

以此警报在常规场景中没什么影响,但若是是用excel跑SQL,它会因为该警报阻止你的接轨操作~事实上excel施行sql约束多多,要求越多的奇技淫巧,早前笔者就写过一篇。言归正传,要解决这一个警告,大器晚成种自然是在讲话中用到聚合函数之处统统加上isnull,但只要语句很短,地点重重就蛋疼了,于是小编引入另叁个更温婉的做法:

怎么着往mysql中程导弹数据试行功用高

VBA学习笔记

只需语句顶端加一句:

 

笔记摘抄自EXCEL精英培养锻炼-水草绿幻想

SET ANSI_WARNINGS OFF;

难点,给您八个Excel数据文件,需求往mysql的数据库中程导弹入数据。

VBA学习笔记01(链接卡塔 尔(阿拉伯语:قطر‎
VBA学习笔记02 (链接卡塔尔

搞掂。

第生机勃勃,你得遵从对应表字段对excel数据文件举行布局,然后转向为insert的sql语句,然后往数据库中插入。

目录

– EOF –

最开首没思虑实行作用,作者转载为sql语句后,用navicat作为数据库查看的分界面,然后新建查询,将组织好的sql语句粘到里面,履行,然后sql语句早先疯跑,3万多条记下,试行了三百多秒,十肆分钟啊,太慢了,当时没放在心上。后来,开采导入的数目有个别地点因为excel格式而发生难题,于是又重新协会,再往数据库中程导弹。又是由来已经相当久的等待。。。

CH1 VBA底子知识

于是乎开头探究:将一张表导出为sql语句再推行、将整个数据库导出再施行好像并未那样慢啊!

CH2 VBA函数与公式

本身将sql语句制作成一个sql文件,以文件的点子实行,果然,十几分钟就施行完成。

CH3 VBE编辑器

结论:以文件形式进行sql语句比新建查询语句实践sql语句成效高得多。

CH4 分支与END语句

难题,给您一个Excel数据文件,要求往mysql的数据库中程导弹入数据。
首先,你得遵从对应表字段对excel数据文件…

CH5 文件操作

<br />


<br />

CH1 VBA根基知识

一、VBA对象:

VBA中的对象实际便是大家操作的具备艺术、属性的excel中帮忙的目的
Excel中的多少个常用对象表示方法

1、工作簿

 Workbooks 代表工作簿集合,所有的工作簿,Workbooks(N),表示已打开的第N个工作簿
 Workbooks ("工作簿名称")
 ActiveWorkbook 正在操作的工作簿
 ThisWorkBook 代码所在的工作簿      

2、工作表

Sheets(“专门的学业表名称”)
Sheet1 表示第贰个插入的专业表,Sheet2意味着第一个插入的劳作表….
Sheets(n) 表示按排列顺序,第n个专门的工作表
ActiveSheet 表示活动专门的职业表,光标所在工作表
worksheet 也代表工作表,但不包罗图形职业表、宏专业表等。

3、单元格

   cells 所有单元格
   Range ("单元格地址")
   Cells(行数,列数)
   Activecell 正在选中或编辑的单元格
   Selection 正被选中或选取的单元格或单元格区域

二、VBA方法和性情

1.VBA属性:VBA属性就是VBA对象所负有的风味。表示有个别对象的性质的办法是。

    对象.属性=属性值        
  Sub ttt()
       Range("a1").Value = 100
 End Sub

2.VBA方法

VBA方法是作用于VBA对象上的动作
代表用有个别方法效果于VBA的指标上,能够用上边包车型客车格式:

  Sub ttt4()  
     牛排.做 熟的程度:=七成熟     
    Range("A1").Copy Range("A2")
 End Sub

三、VBA语句

1.宏前后相继语句:运营后方可做到一个效能

Sub test()  开始语句

  Range("a1") = 100

End Sub   结束语句

2.函数顺序语句:运维后方可回去三个值

Function shcount()

shcount = Sheets.Count

End Function

3.在程序中运用的言语

 Sub test2()

    Call test

  End Sub

 Sub test3()

   For x = 1 To 100   for next 循环语句
      Cells(x, 1) = x
   Next x

 End Sub

4.剖断语句

(1卡塔 尔(阿拉伯语:قطر‎IF判定语句

     Sub 判断()        单条件判断
        If Range("a1").Value > 0 Then
           Range("b1") = "正数"
       Else
           Range("b1") = "负数或0"
      End If
    End Sub

Sub 判断2() 多条件判断
   If Range("a1").Value > 0 Then
      Range("b1") = "正数"
   ElseIf Range("a1") = 0 Then
      Range("b1") = "等于0"
   ElseIf Range("B1") <= 0 Then
      Range("b1") = "负数"
   End If
End Sub

Sub 多条件判断2()
  If Range("a1") <> "" And Range("a2") <> "" Then
     Range("a3") = Range("a1") * Range("a2")
  End If
 End Sub

(2卡塔 尔(英语:State of Qatar)IFF函数决断

Sub 判断4()
   Range("a3") = IIf(Range("a1") <= 0, "负数或零", "负数")
End Sub

(3)select判断

Sub 判断1() 单条件判断
  Select Case Range("a1").Value
 Case Is > 0
   Range("b1") = "正数"
Case Else
 Range("b1") = "负数或0"
End Select
End Sub

    Sub 判断2() 多条件判断
       Select Case Range("a1").Value
        Case Is > 0
               Range("b1") = "正数"
      Case Is = 0
             Range("b1") = "0"
      Case Else
             Range("b1") = "负数"
    End Select
  End Sub

    Sub 判断3()
       If Range("a3") < "G" Then
             MsgBox "A-G"
       End If
    End Sub

(4卡塔尔推断范围

    Sub if 区间判断()
        If Range("a2") <= 1000 Then
            Range("b2") = 0.01
        ElseIf Range("a2") <= 3000 Then
            Range("b2") = 0.03
        ElseIf Range("a2") > 3000 Then
          Range("b2") = 0.05
        End If
    End Sub

    Sub select区间判断()
       Select Case Range("a2").Value
       Case 0 To 1000
             Range("b2") = 0.01
       Case 1001 To 3000
           Range("b2") = 0.03
       Case Is > 3000
           Range("b2") = 0.05
       End Select
    End Sub

5.循环语句

(1)

    Sub t1()
      Range("d2") = Range("b2") * Range("c2")
      Range("d3") = Range("b3") * Range("c3")
      Range("d4") = Range("b4") * Range("c4")
      Range("d5") = Range("b5") * Range("c5")
      Range("d6") = Range("b6") * Range("c6")
    End Sub

(2卡塔 尔(英语:State of Qatar)FOXC90 <循环变量>=<初值>to<终值> [step 步长]
<循环体>
[EXIT FOR]
<循环体>
NEXT [循环变量]

  Sub t2()
      Dim x As Integer
       For x = 10000 To 2 Step -3
            Range("d" & x) = Range("b" & x) * Range("c" & x)
       Next x
  End Sub

(3)

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

(4) do[ while 逻辑表达式]
<循环体>
[EXIT DO]
<循环体>
loop [while 逻辑表明式]

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

(5)

    Sub t5()
           x = 1
           Do While x < 18
                 x = x + 1
                 Cells(x, 4) = Cells(x, 2) * Cells(x, 3)
           Loop
    End Sub

6.变量

(1卡塔 尔(阿拉伯语:قطر‎什么是变量?
所谓变量,就是可变的量。就好象在内部存款和储蓄器中暂且贮存的二个小盒子,那一个小盒子放的哪些物体不定点。

  Sub t1()
        Dim X As Integer x就是一个变量
        For X = 1 To 10
                Cells(X, 1) = X
        Next X
  End Sub

(2卡塔 尔(阿拉伯语:قطر‎变量的项目和评释

A.变量的花色

byte 字符型(0-255)
integer 整数型(-32768-32767)
long 长整数型
single 单精度浮点型
double 双精度浮点型
currency 货币型
decimal 小数型
string 字符串型 (数字 文本卡塔 尔(阿拉伯语:قطر‎
date 日期型
boolean 布尔型 (逻辑推断卡塔 尔(阿拉伯语:قطر‎
variant 万能型

B.评释变量

  dim 变量名 as 数据类型

  dim str as string

C.如给文本、数值、日期等数据型变量赋值
let 变量名称 =数据
如给目的变量(object型,如单元格卡塔 尔(英语:State of Qatar)赋值
set 变量名称=对象
e.g

    set rng=worksheets("sheet1").range("a1")
    rng.value="欢迎"

采纳常量
const 变量名称 as 数据类型-数值

   const p as single =3.14

(3卡塔尔变量的现成周期

1 进度级变量:进程截至,变量值释放

   如t1

2 模块级变量:变量的值只在本模块中保险,工作簿关闭时任何时候释放
例5

     Sub t6()
        m = 1
     End Sub
     Sub t5()
      MsgBox m
      m = 7
     End Sub

3 全局级变量:
在有着的模块中都可以调用,值会保存到EXCEL关闭时才会被放走。

   public 变量

     Sub t7()
       MsgBox qq
     End Sub

(4卡塔 尔(阿拉伯语:قطر‎变量的假释

相像景况下,进度级变量在过程运营甘休后就可以自行从内部存款和储蓄器中放出,而独有点从表面借用的对象变量才要求利用set
变量=nothing实行自由。
<br />


<br />

CH2 VBA函数与公式

黄金年代、在单元格中输入公式

1、用VBA在单元格中输入不足为道公式

 Sub t1()
   Range("d2") = "=b2*c2"
 End Sub

 Sub t2()
  Dim x As Integer
  For x = 2 To 6
   Cells(x, 4) = "=b" & x & "*c" & x
  Next x
 End Sub

2、用VBA在单元格输入带引号的公式

 Sub t3()

       Range("c16") = "=SUMIF(A2:A6,""b"",B2:B6)" 遇到单引号就把单引号加倍

 End Sub

3、用VBA在单元格中输入数组公式

Sub t4()
  Range("c9").FormulaArray = "=SUM(B2:B6*C2:C6)"
End Sub

二、利用单元格公式再次回到值

 Sub t5()
     Range("d16") = Evaluate("=SUMIF(A2:A6,""b"",B2:B6)")
     Range("d9") = Evaluate("=SUM(B2:B6*C2:C6)")
 End Sub

三、借用职业表函数

 Sub t6()

    Range("d8") = Application.WorksheeFunction.CountIf(Range("A1:A10"), "B")

 End Sub

四、利用VBA函数

 Sub t7()

  Range("C20") = VBA.InStr(Range("a20"), "E")

 End Sub    

五、编写自定义函数

  Function wn()
     wn = Application.Caller.Parent.Name
  End Function

<br />


<br />

CH3 VBE编辑器

  • 1.注明文字 :文字前加单引号
  • 2.勒迫转行 空格+下划线
  • 3.调解工具栏: 逐语句运营或按F8
  • 4.安装断点:STOP
  • 5.立刻窗口: debug.print “第“&X&”运维结果“ 呈现某步程序运营结果
  • 6.本地窗口:显示运营中断时对象新闻
    <br />

<br />

CH4 分支与END语句

一、END语句

职能:强制退出全数正在运作的前后相继。

二、Exit语句

脱离钦点的讲话

1、Exit Sub

 Sub e1()
 Dim x As Integer
    For x = 1 To 100
      Cells(1, 1) = x
      If x = 5 Then
        Exit Sub
      End If
     Next x
  Range("b1") = 100
 End Sub

2、Exit function

 Function ff()
 Dim x As Integer
    For x = 1 To 100
      If x = 5 Then
        Exit Function
      End If
     Next x
  ff = 100
 End Function

3、Exit for

Sub e2()     
 Dim x As Integer
    For x = 1 To 100
      Cells(1, 1) = x
      If x = 5 Then
        Exit For
      End If
     Next x

   Range("b1") = 100
 End Sub

4、Exit do

 Sub e3()
 Dim x As Integer
   Do
     x = x + 1
      Cells(1, 1) = x
      If x = 5 Then
        Exit Do
      End If
   Loop Until x = 100
   Range("b1") = 100
 End Sub

三、分支语句

1.Goto语句,跳转到内定的地点

 Sub t1()
      Dim x As Integer
      Dim sr
      100:
            sr = Application.InputBox("请输入数字", "输入提示")
     If Len(sr) = 0 Or Len(sr) = 5 Then GoTo 100
  End Sub

2.gosub..return ,跳过去,再跳回来

Sub t2()
      Dim x As Integer
      For x = 1 To 10
             If Cells(x, 1) Mod 2 = 0 Then GoSub 100
      Next x
 Exit Sub
 100:
         Cells(x, 1) = "偶数"
     Return
End Sub

3.on error resume next 境遇错误,跳过继续实行下一句

 Sub t3()
  On Error Resume Next
  Dim x As Integer
    For x = 1 To 10
      Cells(x, 3) = Cells(x, 2) * Cells(x, 1)
  Next x
 End Sub

4.on error goto 失误时跳到钦定的行数

Sub t4()
    On Error GoTo 100
    Dim x As Integer
    For x = 1 To 10
        Cells(x, 3) = Cells(x, 2) * Cells(x, 1)
    Next x
 Exit Sub
 100:
         MsgBox "在第" & x & "行出错了"
End Sub

5.on error goto 0 撤消错误跳转

    Sub t5()
            On Error Resume Next
            Dim x As Integer
            For x = 1 To 10
            If x > 5 Then On Error GoTo 0
                Cells(x, 3) = Cells(x, 2) * Cells(x, 1)
          Next x
     Exit Sub

<br />


<br />

CH5 文件操作

后生可畏、常用概念

1.excel文书和专门的学业簿

excel文件就是excel专门的学问簿,excel文件张开须求excel程的协理

(1卡塔尔 Workbooks 专门的工作簿会集,泛指excel文件或专门的学问簿

Workbooks(“A.xls”),名称为A的excel工作簿

Sub t1()
    Workbooks("A.xls").Sheets(1).Range("a1") = 100
 End Sub

workbooks(2),按展开各种,第一个展开的工作簿。

  Sub t2()
    Workbooks(2).Sheets(2).Range("a1") = 200
 End Sub

(2卡塔 尔(阿拉伯语:قطر‎ActiveWorkbook
,当打开多少个excel专业簿时,你正在操作的非常就是ActiveWorkbook(活动工作簿卡塔 尔(阿拉伯语:قطر‎

(3卡塔尔Thisworkbook,VBA程序所在的工作簿,无论你张开多少个工作簿,无论当前是哪些职业簿是移动的,thisworkbook便是指它所在的工作簿。

2.工作簿窗口

Windows("A.xls"),A工作簿的窗口,使用windows可以设置工作簿窗口的状态,如是否隐藏等。
 Sub t3()
    Windows("A.xls").Visible = False
 End Sub
 Sub t4()
    Windows(2).Visible = True
 End Sub

3.excel工作表的分类

excel职业表有两大类,大器晚成类是大家经常用的工作表(worksheet),另意气风发类是图形、宏表等。这两类的统称是sheets

sheets 职业表集结,泛指excel各个专门的学业表

Sheets(“A”),名称为A的excel工作表

 Sub t1()
    Sheets("A").Range("a1") = 100
 End Sub

workbooks(2),按张开各种,第二个展开的职业簿。

  Sub t2()
    Sheets(2).Range("a1") = 200
 End Sub

ActiveSheet ,当展开五个excel职业簿时,你正在操作的不得了就是ActiveSheet

二、 EXCEL文件操作

1 推断A.Xls文件是或不是存在

Sub W1()
 If Len(Dir("d:/A.xls")) = 0 Then
   MsgBox "A文件不存在"
 Else
   MsgBox "A文件存在"
 End If
 End Sub

2 决断A.Xls文件是还是不是展开

Sub W2()
 Dim X As Integer
  For X = 1 To Windows.Count
    If Windows(X).Caption = "A.XLS" Then
      MsgBox "A文件打开了"
      Exit Sub
    End If
  Next
End Sub

3 excel文本新建和保存

Sub W3()
 Dim wb As Workbook
 Set wb = Workbooks.Add
   wb.Sheets("sheet1").Range("a1") = "abcd"
 wb.SaveAs "D:/B.xls"
End Sub

4 excel文件展开和关闭

 Sub w4()
        Dim wb As Workbook
              Set wb = Workbooks.Open("D:/B.xls")
              MsgBox wb.Sheets("sheet1").Range("a1").Value
        wb.Close False
 End Sub

5 excel文件保留和备份

 Sub w5()
      Dim wb As Workbook
       Set wb = ThisWorkbook
        wb.Save
        wb.SaveCopyAs "D:/ABC.xls"
 End Sub

6 excel文件复制和删除

 Sub W6()
  FileCopy "D:/ABC.XLS", "E:/ABCd.XLS"
  Kill "D:/ABC.XLS"
 End Sub

7.确定A工作表文件是或不是留存

Sub s1()
 Dim X As Integer
  For X = 1 To Sheets.Count
    If Sheets(X).Name = "A" Then
      MsgBox "A工作表存在"
      Exit Sub
    End If
  Next
  MsgBox "A工作表不存在"
End Sub
  1. excel专门的工作表的插入

     Sub s2()
        Dim sh As Worksheet
        Set sh = Sheets.Add
        sh.Name = "模板"
        sh.Range("a1") = 100
     End Sub
    

9.excel专业表隐蔽和注销隐瞒

 Sub s3()
          Sheets(2).Visible = True
 End Sub

10.excel工作表的移位

 Sub s4()
             Sheets("Sheet2").Move before:=Sheets("sheet1")        ‘sheet2移动到sheet1前面
            Sheets("Sheet1").Move after:=Sheets(Sheets.Count)      ’ sheet1移动到所有工作表的最后面
 End Sub

11.excel专门的学业表的复制

 Sub s5() 在本工作簿中
      Dim sh As Worksheet
        Sheets("模板").Copy before:=Sheets(1)
        Set sh = ActiveSheet
        sh.Name = "1日"
        sh.Range("a1") = "测试"
 End Sub

Sub s6() 另存为新职业簿

  Dim wb As Workbook
   Sheets("模板").Copy
   Set wb = ActiveWorkbook
      wb.SaveAs ThisWorkbook.Path & "/1日.xls"
      wb.Sheets(1).Range("b1") = "测试"
      wb.Close True
   End Sub

12.维护职业表

 Sub s7()
        Sheets("sheet2").Protect "123"
 End Sub
 Sub s8() 判断工作表是否添加了保护密码
  If Sheets("sheet2").ProtectContents = True Then
    MsgBox "工作簿保护了"
  Else
    MsgBox "工作簿没有添加保护"
  End If
 End Sub

13.职业表删除

 Sub s9()
   Application.DisplayAlerts = False
     Sheets("模板").Delete
   Application.DisplayAlerts = True
 End Sub

14.专门的学业表的取舍

 Sub s10()
   Sheets("sheet2").Select
 End Sub
标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图