zoukankan      html  css  js  c++  java
  • Excel VBA 入门

    一、文件格式

    要使用VBA,excel文件必须保存为启用宏的工作簿,即xlsm格式。

    二、启动VBA编辑器

    打开工作簿后,要启动VBA编辑器,有两种方法,一是在工作表的名字上面点击右键,选择“查看代码”,另一种就是快捷键Alt+F11

    三、工程资源管理器简介

    VBA编辑器右边的树形目录就是工程资源管理器,如下图,列示了一个工程(VBAProject)及其下面的各个对象。一个工作簿就是一个工程,下面的sheet1就代表一张工作表,双击它可以查看和编辑这张工作表的代码,在里面实现各种功能,ThisWorkbook代表整个工作簿。

    四、立即窗口、MsgBox与Hello World程序

     与所有其它编程语言入门一样,第一个程序都是输出一句话:Hello World。

    首先选择菜单栏——视图——立即窗口打开立即窗口(快捷键Ctrl+G),立即窗口的意思就是这里面的代码在输入回车之后会被立即执行,有点像调试javascript的Console。

                             

    在窗口中输入

    MsgBox "Hello World"

    然后回车,就会看到hello world对话框。

       

    五、工作表——Worksheets(1)、Sheets(1)和Sheet1

    下面三行代码都会输出工作表1的名称:

    MsgBox Worksheets(1).name
    MsgBox Sheets(1).name
    MsgBox Sheet1.name

    Worksheets表示当前活动工作簿中所有工作表的集合,Worksheets(1)表示集合中的第1张工作表,也就是Sheet1

    Sheets表示当前活动工作簿中所有图表(Charts)和工作表(Worksheets)的集合,也就是说Sheets包含上面的Worksheets

    Sheet1直接表示当前活动工作簿中的第一张表

    六、区域——Range

    比如,Range("A1")表示A1单元格,Range("A1:B2")表示由A1、A2、B1、B2四个单元格组成的区域,以此类推;如果要表示不连续的区域,将多个不连续区域用逗号隔开即可,比如Range("A1:B2,C3:D4")

    以下代码输入区域的地址:

    MsgBox Sheet1.Range("A1:B2").Address

    运行结果如图:

    七、单元格——Cells

    Cells(1,2)——表示第1行第2列的单元格,即B1单元格。

    Cells(1,2) = “我是一个单元格”——表示在第1行第2列填上文本“我是一个单元格”

    八、流程控制语句

    If condition Then

    ...

    End if

    ---------------------------------------

    If condition Then

    ...

    Else

    ...

    End if

    ----------------------------------------

    If condition Then

    ...

    ElseIf condition Then

    ...

    Else

    ...

    End If

    -----------------------------------------

    For i=0 to 100

    ...

    Next

    -----------------------------------------

    While condition

    ...

    Wend

    -----------------------------------------

    Do

    ...

    Loop While condition

    -----------------------------------------

    九、复制

    单元格复制:

    Cells(1,2).Copy Cells(1,3) 

    以上代码将第1行第2列的数据复制到第1行第3列

    ---------------------------------------------------------

    区域复制:

    Range("A1:B2").Copy Range("C3") 

    以上代码将A1:B2区域的内容复制到C3区域

    ----------------------------------------------------------

    行或列复制:

    Rows(1).Copy Rows(2) 
    Columns(3).Copy Columns(4)

    将第1行的数据复制到底2行

    将第3行的数据复制到第4行

    ----------------------------------------------------------

    十、清除——Clear和ClearContent

    Range(A1:B2).ClearContent  '清除区域内容
    Range(A1:B2).Clear  '清除区域,包括内容和格式等

    十一、行和列自适应高(宽)度

    Rows.AutoFit
    Columns.AutoFit

    十二、跳转到某工作表

    跳转到某工作表即激活某个工作表,使它变成活动状态:

    Sheet2.Activate

    十三、事件

    比如要实现双击Sheet1单元格A1时弹窗提示good,那么在工程资源管理器中双击Sheet1,打开Sheet1的代码窗口,窗口顶部第一个下拉菜单选择worksheet,第二个下拉菜单选择BeforeDoubleClick,这时代码窗口就会出现这样一段代码:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    
    End Sub

    这段代码表示Sheet1工作表任意地方被双击时会执行的操作,但我们要的是A1单元格被双击时弹窗,那么还要对被双击的地方进行判断,被双击的目标即参数中的Target,我们根据地址判断Target是不是A1,是就弹窗提示,不是就不执行任何操作:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Address = "$A$1" Then
        MsgBox "good"
    End If
    End Sub
  • 相关阅读:
    Atomikos 中文说明文档(周枫翻译) 东师理想
    flex手机项目嵌套html页面和html页面播放声音文件 东师理想
    sql server 创建 ASPState 数据库方法 东师理想
    Android中文API(博客翻译版转载) 东师理想
    sql server导入excel和多表关联更新 东师理想
    关于CSS样式zindex在firefox和平板电脑中的问题 东师理想
    使用Flash builder 4.6创建Flex手机项目读取XML文件方法 东师理想
    android动画切换(滑屏效果)实例 东师理想
    一个障碍,就是一个超越自我的契机(转载)
    多去阅读思维训练类的书籍(转载)
  • 原文地址:https://www.cnblogs.com/dige1993/p/6853191.html
Copyright © 2011-2022 走看看