zoukankan      html  css  js  c++  java
  • VBA的一点东西

    因为帮一个朋友弄excel中的一些数据处理,然后用到了VBA的编程。其中要点如下:


    Sub MyFirstVBAProgram()
        Dim strName As String  ' As String 定义了变量的数据类型
        Dim strHello As String
        strName = InputBox("输入名字:")
        strHello = "你好," & strName & "!"
        MsgBox strHello
    End Sub

    Function MyAdd(varA, varB) As Variant
        MyAdd = varA + varB
    End Function

    Sub TestAdd()
        Dim a,b,c
        a = 12
        b = 34
        c = MyAdd(a,b)
        MsgBox c
    End Sub

    Public Function Shipping(Price)
        Shipping = Price * 0.1
    End Function

    ' 注释

    VBA中的数据类型
    Byte        0 - 255
    Bollean     True 或者 False
    Integer     -32768 - 32767
    Long        
    Single
    Double
    Date        
    String(变长)
    Variant 是一个特殊的数据类型,可以表示任意类型的数据,对于没有定义数据类型的变量,
    默认为这个类型

    创建变量
        使用Dim语句
        Dim 变量名 As 数据类型

    & 表示连接两个字符串
    + 也可以用来表示连接两个字符串

    运算符
        ^(某次方) * / \(整除) Mod + -

    Function Add(a As Double, b As Double) As Double
    最后一个As Double表示返回值的类型,返回值为Add

    条件语句
    If T < 2 Then
        Target = 200
    ElseIF T >= 2 And T < 3 Then
        Target = 300
    Else
        Target = 500
    End If
    注意,在判断值相等时候,用的是=号

    逻辑运算符
        And Or Not

    循环语句
        Dim i As Long
        Dim sum As Long
        For i = 1 To 8 Step 2
            sum = sum + i
        Next i ' 循环结束

        DO While count <= 100
            sum = sum + count
            count = count + 1
        LOOP

    Exit提前结束循环
        For i = 1 To 100
            If i = 50 Then
                Exit For
            End If
        Next i
    嵌套循环中,Exit语句会退出他所在的那层循环,而不会退出其他循环

    ActiveSheet.Cells(i,j).Value为Excel对象,ActiveSheet表示当前的数据表,
    Cell(i,j)表示数据表的第i行第j列的单元格,Value表示单元格的值。

    数组
        Dim Months(11) As String
        Months表示数组名称,11表示数组的最大索引,String为元素类型

    _ 可以将几行代码算作一行,相当于\

    Rnd是VBA的函数,返回一个0到1之间的平均值

    Application对象代表了Excel程序,通过Excel的Application对象,可以操作当前激活的工作薄,
    工作表或者活动单元格

    将活动工作表的第一行第二列的单元格设置为当前时间
    Application.ActiveSheet.Cells(1,2) = Time

    ActiveCell.Value 表示当前活动单元格的值

    Workbok对象代表Excel的一个工作薄,通过Workbok可以得到工作薄中的工作表(Sheets),
    获得当前工作薄的名称,保存路径,保存工作薄等。
    Application.ActiveWorkbok.Save  ' 保存工作薄

    Worksheet
    Worksheet对象代表了一个工作表,可以进行拷贝、粘贴、打印等工作

    Range对象
    代表工作表的一个单元格或者单元格区域
    Worksheets("Sheet1").Range("A1").Value = 20
    Range的Value属性可以返回Range的值,如果是一个单元格,那么就是一个具体的数值或者字符串,
    如果是一个单元格区域,则返回一个数组。
    同样,我们可以通过Value属性给Range赋值

    将第一列和第二列的单元格的内容连接之后,赋值给第三列
    Sub MergeTest()
        Dim i As Long
        For i = 3 To 30
            Cells(i,3) = Cells(i,1) & " " & Cells(i,2)
        Next
    End Sub
    使用Application对象的Cells属性来返回表格数据(Application可以省略)

    使用VBA操作工作表单元格
        [A1]    = 100   ' 在A1 单元格输入100
        [A2:A4] = 10    ' 在A2:A4单元格输入10

        Range("B1") = 200
        Range("C1:C3")=300

        Cells(1,4) = 400 ' 在D1单元格输入400
        Range(Cells(1,5),Cells(5,5)) =50 ' 在E1:E5单元格输入50

    在单元格D1:D20中循环,将所有绝对值小于0.1的数字都设置为0
        Sub RoundToZero()
            Dim i As Long
            Dim rCell As Range
            For i = 1 To 20
                Set rCell = Worksheets("Sheet2").Cells(i, 4)
                If IsNumeric(rCell.Value) Then
                    If Abs(rCell.Value) < 1# Then
                        rCell.Value = 0
                    End If
                End If
            Next i
        End Sub

  • 相关阅读:
    dubbo+zookeeper注册服务报错问题:No service registed on zookeeper
    悲观锁和乐观锁的区别,它们是怎么实现
    cookie和session的区别,分布式环境怎么保存用户状态
    深入理解Java接口和抽象类
    Java中堆内存和栈内存详解
    Java基础梳理(一)
    Spring的@Transactional注解详细用法
    SpringBoot学习笔记(一)基础
    项目实体类使用@Data注解,但是项目业务类中使用getA(),setA()方法报错,eclipse中配置lombok
    有依赖的背包问题-购物单
  • 原文地址:https://www.cnblogs.com/cyttina/p/2987577.html
Copyright © 2011-2022 走看看