vba
ainizhongguoaa
这个作者很懒,什么都没留下…
展开
-
单元格的表示方式
三种:range()、cells()、[]cells(行,列)如果引用列名需要用引号cells(1,1),cells(1,“a”)cells(rows.count,"a")range(“单元格地址”)复杂形式因此需要用引号range(“a1”)range(“a1",a5")将把从a1,到a5都选择起来,中间是逗号range("a:a")表示A列[原创 2016-07-28 14:20:23 · 2282 阅读 · 0 评论 -
多级下拉菜单
-----------------------Private Sub ComboBox1_Click()ActiveCell = Me.ComboBox1.ValueEnd Sub---------------------------------Private Sub ComboBox2_Click()ActiveCell = Me.ComboBox2.ValueE原创 2016-08-18 21:20:38 · 327 阅读 · 0 评论 -
条件填充
首先搞清楚层级关系:sheet.shapes.chart(图表).seriescollection(系列).points(系列中的条)Sub tse()Dim cha As Chart, 将cha定义为表dim ba As Series, 将ba定义为表中的系列dim zhi, n%Set cha = Sheet1.Shapes("图表 1").Chart‘原创 2016-08-18 11:00:07 · 510 阅读 · 0 评论 -
批量做动态表addchart
描述:在a2到a19resize(1,3)单元格中存在数据,批量作表addchart(类型,左边界,上边界,宽度,高度)Sub t()Dim rng As Range, sp As ChartFor Each rng In Range("a2:a19")Set sp = Sheet2.Shapes.AddChart(, rng(1, 4).Left, rng(1, 4)原创 2016-08-18 09:24:18 · 611 阅读 · 0 评论 -
target操作,对当前单元格进行操作
需要选择worksheet 和change!输入数量,和库存比对,并计算总金额Dim rng As RangeDim bijiao As IntegerDim kucun As IntegerIf Target.Column = 2 Then Set rng = Sheet2.Range("a:a").Find(Target(1, 0)原创 2016-08-16 09:06:52 · 1289 阅读 · 0 评论 -
Ubound Lbound,数组上下边界 将二维数组处理后写入新数组,并粘贴到单元格中。
Sub k()Dim arr, arr2arr = [b1:c19] ‘定义操作数组为b1到c19的区域’icount = Application.CountIf([b:b], "A") ‘icount变量定义为b列中出现的A的个数’ReDim arr2(1 To icount, 1 To 2) ‘定义需要写入的数组,为2维数组,第一维(行,该维度取决于A的个数)为从1到icoun原创 2016-08-15 13:40:21 · 4883 阅读 · 0 评论 -
退出exit,错误处理
end :结束stop:跟设置断点类似exit sub,退出过程exit for,退出forapplication.quit,退出程序dim ifor i=1 to 6i=i+1if i=4 then end(exit for,exit sub,stop,,,,)next错误值处理方法:on error goto xxx转载 2016-08-15 08:35:59 · 1708 阅读 · 0 评论 -
worksheets的基本操作,displayalerts显示警告框
worksheets(2)worksheets("abc")sheet1dim ws as worksheetfor each ws in worksheets(遍历工作表)worksheets.count工作表的数量worksheets.add在活动工作表前加一个工作表。Worksheets.Add Worksheets("hehe")在名为hehe的原创 2016-08-14 15:09:38 · 2474 阅读 · 0 评论 -
dir函数:遍历文件名
dir(“地址\”)返回该地址下的第一个文件的文件名Sub t()Dim sr As Stringsr = Dir("G:\社团、活动\JMR\*.xlsx")这里使用了通配符,并指定了文件扩展名;如果不指定,至少应当在地址后加 \ ,以实现遍历DoMsgBox srsr = DirLoop Until sr = ""End Sub使用do原创 2016-08-14 16:44:18 · 2453 阅读 · 0 评论 -
跨工作簿粘贴
Sub t()Dim ws As WorksheetDim rng As RangeDim rng2 As RangeFor Each ws In Worksheets If ws.Name Set rng = ws.[a1] Set rng = ws.Range("a2", ws.[b1].End(xlDown))转载 2016-08-14 18:51:31 · 495 阅读 · 0 评论 -
动态图标 setresourcedata
Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim cht As ChartIf Not Intersect(Target, [a1:c19]) Is Nothing ThenSet cht = Sheet1.ChartObjects("图表1").Chartcht.SetSourceData Target原创 2016-08-18 08:21:53 · 225 阅读 · 0 评论 -
sheet1.hpyerlinks.add添加超链接,提取超链接的地址
worksheets().hyperlinks.add anchor:添加超链接的位置【1】,超链接打开的地址【2】,子地址(这里省略),提示【3】,显示内容【4】。Sub k()Dim rng As RangeFor Each rng In Range("a1:a2")Worksheets("baocun").Hyperlinks.Add rng(1, 2)【1】,原创 2016-08-01 16:02:42 · 1330 阅读 · 0 评论 -
len,counta,& “”连接符号,字符串长度,非空单元格数量
len()返回字符串的个数值worksheetfunction.counta()返回区域内非空单元格数量所有的字符串的连接都需要 & 符号,而文本内容需要用“ ”引起来。rs = rs & rw& ":" &rw &"," 表示出来就是 rw:rw,rw:rw,…本例中,rs是变量(dim rs as string)“:” “,”是字符,因此需要用原创 2016-07-28 19:26:30 · 656 阅读 · 0 评论 -
instr,left,mid 定位、取内容(字符串)函数
instr(查找范围,“查找内容”):定位函数,在某个某个单元格内,寻找引号内的内容,并返回所在位置的值。left(查找范围,查找位置的值)mid(查找范围,起始位置的值,延续长度)Sub a()Dim ak As Range, sr As Integer For Each ak In Range("a10", [a10].End(xlDown)) sr原创 2016-07-28 15:46:42 · 5676 阅读 · 0 评论 -
cut, resize,剪切,重新大小,改变单元格大小
cells().cut cells( ):需要剪切的单元格(也可以是 range),cut到 需要剪切后的单元格(只需要所在区域的第一个单元格作为定位即可)cells().reszie( ):需要拓展的单元格resize(需要拓展的行(包括自身),需要拓展的列(同左))Cells(2, 2).Resize(1, 2).Select---------------------原创 2016-07-29 10:52:55 · 745 阅读 · 0 评论 -
rows.count,clearcontents,worksheets,copy,提取行数,清除内容,跨工作表,复制
rows.count:提取某个区域的行数,range().rows.count提取range内的行数。cells(rows.count,1)第一列最后一行range().clearcontents清除某一区域内的内容worksheets(“”).range()跨工作表提取内容range().copy cells()需要复制的单元格 复制到单元格的位置Sub t()Di原创 2016-07-29 12:50:54 · 1983 阅读 · 0 评论 -
find 查找单元格
range().find([ ])在range 中查找[ ]单元格中的内容,或“ ”中的内容,另find 函数提供多种参数,详见F1。返回的应当是一个单元格或区域Sub main()Dim rng1 As RangeDim rng2 As RangeDim rng3 As Range ‘把我们需要查找的目标单元格定义为rng3’Set rng1 = Range("a2",原创 2016-07-31 20:08:11 · 522 阅读 · 0 评论 -
format,inputbox,格式,输入窗口,判断后自动赋值
format(expression,"格式") format函数(需要转化的表达式,需要转化后的形式)如format(now,"yyyymmdd-hhmmss")将时间转化为年月日-时分秒的格式,又如format(1,"-000")将数字转化为-001的格式inputbox(“请输入内容”,消息框)Sub a()Dim rng As RangeDim str As St原创 2016-07-31 21:01:09 · 1078 阅读 · 0 评论 -
findnext, do loop until,查找下一个,循环语句,在一行中取几列,字体格式
range().findnext(after)在range中查找下一个(必须与find函数一起使用)do……loop untilSub f()Dim rng As RangeDim dizhi As StringSet rng = Range("a:a").Find("abc")'在a列中查找abc并赋给rngdizhi = rng.Addres原创 2016-08-01 09:11:12 · 1802 阅读 · 0 评论 -
worksheets工作簿的表示方法
workbooks(1)workbooks(“hehe”)for each in workbooks(在所有的工作簿中都循环一遍)thisworkbookactiveworkbooksub test ()workbooks.addactiveworkbook.saveas "f:\abc.xlsx"end sub新建一个工作簿,并保存到F盘根目录下,并取转载 2016-08-04 17:55:58 · 745 阅读 · 0 评论 -
row, merge,displayalerts:获取行数,合并,提示框
在获得了某个range 后.row获得其行属性,返回一个行的数值。r = Cells(Rows.Count, "a").End(xlUp).Row获取到a列最后一个单元格的行的值,并赋给r变量range().merge合并一个区域内的单元格。Application.DisplayAlerts = False(true):显示/不显示提示框原创 2016-08-01 15:43:32 · 552 阅读 · 0 评论 -
数组的使用
[a2:f2] = Array(1, 2, 3, 4, 5, 6)[a4:a9] = WorksheetFunction.Transpose(Array(1, 2, 3, 4, 5, 6))数组的使用可以加快运算速度,比较实现同样功能的不同写法,本质相同。Sub t()Dim arr, ar, n%arr = Range("a1", [a1].End(xlDown))原创 2016-08-15 09:02:37 · 368 阅读 · 0 评论