vba-常用代码记录

一些代码优化:
1.Range("B5:C6").Copy Destination:=Range("B8")
2.使用mid$函数而不是mid
3.把整个sheet保护,需要操作时,后台先关闭保护。
4.Excel中自带的Sum函数是将整个区域转换为数组,在内存中进行求和,速度快多了。 
    Dim result As Double
    result = Application.WorksheetFunction.Sum(Range("A1:A10")) --自动过滤不是数字的单元格。
5.如果改变不了当前数组的中每个元素的数据类型,就应该开辟一个新的数组。。。。
6.Private Sub Worksheet_Change(ByVal Target As Range) 修改录入的内容格式
7.使用条件格式设置单元格格式    :
    Set condition = rng.FormatConditions.Add(Type:=xlCellValue, Operator:=xlGreater, Formula1:="10")
        condition.Interior.Color = RGB(255, 255, 0)
8.取余算法的使用  (ii + 1) Mod 3 + 1 => ii不断加1,对3取余结果就是不断0,1,2循环。
9.Excel工作表中 替换指定内容:Sheet5.UsedRange.Replace what:="小王", replacement:="特别的小王", lookAt:=xlPart, searchOrder:=xlByRows
10.For Each Rg In Range("A1:A9, E3:E9, C3,C7") 这样可以实现多个range循环
11.[E1:G1] = Array("产品名称", "数量", "金额")
12.[b1].End(4).Row是Excel VBA中用于定位最后一行的方法之一 获取b列最后非空单元格所在列。= Range("B" & rows.count).end(xlup).row

 自定义右键菜单

Sub 添加右键菜单() '过程的名称,Sub是开始的意思
    Dim cd As CommandBarButton '定义变量
    'Dim定义变量的意思,As象什么,CommandBarButton是按钮的意思
    On Error Resume Next '为了防止没有添加就删除会报错
    Application.CommandBars("cell").Controls("签名").Delete '删除右键"签名"按钮
    Application.CommandBars("cell").Controls("日期").Delete '删除右键"日期"按钮
    Set cd = Application.CommandBars("cell").Controls.Add(Type:=msoControlButton, before:=1)
    'set是给的意思,赋值的意思;appication是EXCEL程序的意思;CommandBars是菜单的意思;Cell是右键菜单的意思;
    'Controls是指右键菜单上的按钮集合;Add是添加的意思;Type是类型的意思;msoControlButton是按钮型;Before:在什么的前面的意思
        With cd 'cd相当于我们说话的主语了,后面的语句就可以省略这个主语
            .Caption = "签名" 'Caption是指这个按钮在右键菜单上的名字'
            .FaceId = 483 'FaceId是指图标
            .OnAction = "签字" 'OnAction是指这个按钮关联的过程和动作'
        End With
     Set ce = Application.CommandBars("cell").Controls.Add(Type:=msoControlButton, before:=2)
    'set是给的意思,赋值的意思;appication是EXCEL程序的意思;CommandBars是菜单的意思;Cell是右键菜单的意思;
    'Controls是指右键菜单上的按钮集合;Add是添加的意思;Type是类型的意思;msoControlButton是按钮型;Before:在什么的前面的意思
        With ce 'cd相当于我们说话的主语了,后面的语句就可以省略这个主语
            .Caption = "日期" 'Caption是指这个按钮在右键菜单上的名字'
            .FaceId = 484 'FaceId是指图标
            .OnAction = "日期" 'OnAction是指这个按钮关联的过程和动作'
        End With
End Sub '结束过程 end是结束意思

 二,VBA中使用WIA处理本地图像

    https://club.excelhome.net/thread-1569944-1-1.html?_dsign=5a3a9d9d

三,相关技巧

' like的使用
Sub RngLike() Dim rng As Range Dim a As Integer a = 0 With Sheet5 .Range("A:A").ClearContents For Each rng In .Range("B1:E1000") ' .[B1:E1000] If rng.Text Like "*a*" Then a = a + 1 .Range("A" & a) = rng.Text End If Next End With Debug.Print a End Sub
---------------------

 

posted @ 2023-07-25 15:51  vba是最好的语言  阅读(136)  评论(0编辑  收藏  举报