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
---------------------