zoukankan      html  css  js  c++  java
  • VBA

    1. 在工具栏中将"开发工具"菜单调出来,点击VBA script或者快捷键ALT+F11, 打开编程窗口

    2. 下拉列表:选中要处理的单元格>>数据>>数据验证(数据有效性)>>序列>>输入示例:1,2,3

    3. function和sub最大区别在两点
      1.function可以返回值,sub则不可以返回值
      2.sub可以直接执行,但function需要调用才可以执行

    4. 定义宏

    sub mysub()
        'you code here
    end sub
    
    1. 定义函数
    '定义返回类型为Intteger
    Function GetLogTypeID(LogType As String) As Integer
    
        Set GetLogTypeID = 129 '返回
    End Function
    
    1. 退出,类似其他程序中的return
    Exit Sub '退出宏
    Exit Function '退出函数
    
    1. Range和Cells

      1. Range是对象,根据参数获得一个区域对象
      2. Cells为属性,在某个对象上调用时返回该对象上指定的单元格,直接使用Cells(1,1)实际是省略了Application.
    2. alert一个消息

    '下面两种都可以
    MsgBox(123)
    MsgBox 123
    
    1. For 循环
    For i = 1 to 10
        MsgBox i
    Next i
    
    1. For Each
    For Each R in Range("C2:C20")
        R = 123
    Next
    
    1. 选择工作表
    '根据序号和名字都可以
    Worksheets(1)
    Worksheets("ListData")
    
    1. 单元格点击事件处理
      单元格好像没有指定宏的功能,按钮什么的倒是有。处理单元格点击事件就是检测整个工作表的Worksheet_SelectionChange事件,然后判断是否

    2. Q:在VBA中,如何输入录入多行的字符串?A:这个是VBA中的基本功。使用“&+空格+_”换行,

    Sub lyq()
        sStr = "abc" & _
        "dsfkjd" & _
        "sdflj"
        MsgBox sStr
    End Sub
    
    1. 字符串连接
      在VBA中用于字符串连接的只有“&”和“+”两种运算符。

      1. “&”是强制性连接,就是不管什么都连接。
      2. “+”是对字符串进行连接,对数字则进行加法运算。(用“+”号的时候,“+”前后类型要一致)
    2. 复制到剪切板
      将变量的值或文本内容复制或发送到剪贴板,仅对窗体有效,DataObject 是MSFORM子类

    '声明新DataObject 类
    Dim MyData As New DataObject 
    '设定文本,可以将Me.TextBox1.Text作为文本传递   
    MyData.SetText("文本内容")
    '送入剪贴板     
    MyData.PutInClipboard           
    
    1. 获取剪切板内容
    Function GetClipBoardText()
         '将剪贴板中的文本输出到一变量。
         Dim MyData As DataObject
         Set MyData = New DataObject
         '如果剪贴板的数据是文本
         If MyData.GetFormat(1) = True Then
            '从剪贴板中获得数据
            MyData.GetFromClipboard
            
            '把数据返回给函数值
            GetClipBoardText = MyData.GetText(1)
         End If
    End Function
    
    1. 获取剪切板内容
    Dim a As New DataObject
    a.GetFromClipboard
    Range("a1").Value=a.GetText
    
    1. 单元格复制粘贴
    Sub C2R()    
        Dim RCount As Integer
        RCount = 2
        
        Dim FillIn, FillIn2
        Set FillIn = Worksheets("Fill-in Forms")
        Set FillIn2 = Worksheets("fillinforms2")    
        
        Application.ScreenUpdating = False    
        Dim ENComment$
        
        For Each EN In FillIn.Range("B2:DG2")        
            ENComment = FillIn.Cells(2, EN.Column + 1).Value
            If InStr(0, ENComment, EN.Value) >= 0 Then
                For Each Fill In FillIn.Range("A2:A166")
                    If Cells(Fill.Row, EN.Column).Value <> "" Then
                        EN.Copy (FillIn2.Range("A" & RCount))
                        Fill.Copy (FillIn2.Range("B" & RCount))
                        Cells(Fill.Row, EN.Column).Copy (FillIn2.Range("C" & RCount))                   
                        RCount = RCount + 1                    
                    End If
                Next
            End If
        Next    
    End Sub
    
    1. 字符串搜索
      http://www.51vba.com/show.aspx?id=4202

    2. 类型定义符
      %是整型,存储范围为-32768到32767
      &是长整型,存储范围为-2147483648到2147483647
      $是字符串,string
      Dim wipID&
      Dim wipID as Long

    3. 非空行数,A列的非空行数

    Application.CountA(Range("A:A"))
    
    1. 清除单元格
    Range("A1").clear '啥都清除
    Range("A1").clearFormats
    Range("A1").clearContents
    
    1. 背景色
    Cells(1).Interior.ColorIndex = 3'该单元格填充红色
    
    1. 已用非空行
    UsedRows = Application.CountA(Worksheets("MonthSummary").Range("A:A")) + 1
    
    1. with 语句使用
    summary.Range("B" & UsedRows) = feedate & fee.Value
    With summary.Range("B" & UsedRows)
        .Offset(0, -1) = UserName
        .Offset(0, 1) = fee.Offset(0, 1).Value
        .Offset(0, 2) = fee.Offset(0, 2).Value
        .Offset(0, 3) = fee.Offset(0, 3).Value
        .Offset(0, 4) = fee.Offset(0, 4).Value
        .Offset(0, 5) = fee.Offset(0, 5).Value
    End With
    
    1. 使用过渡变量,会报错"需要对象", 慎用
    Dim copy2cell as Range,UsedRows%,fee
    UsedRows = 2
    
    fee = Range("A2")
    set copy2cell = ssummary.Range("B" & UsedRows)
    copy2cell.Offset(0, 1) = fee.Offset(0, 1).Value
    copy2cell.Offset(0, 2) = fee.Offset(0, 2).Value
    
  • 相关阅读:
    django url路由
    web 协议
    动画效果 each循环
    页面载入
    js 事件 事件委托
    jQuery 文档操作
    jQuery 标签操作 样式操作
    筛选器方法
    jQuery 介绍
    js操作属性 类操作 事件
  • 原文地址:https://www.cnblogs.com/wancy86/p/VBA.html
Copyright © 2011-2022 走看看