VBA
logo_28
这个作者很懒,什么都没留下…
展开
-
VBA 不连续的多行一次选中操作
不连续的多行一次选中操作,比如复制或者删除。这个用法,还是与前面说到过的多行一次选中删除一样的原理。为了更好操作,将不连续的多行用个range对象装起来,即可方便操作。原理:将不连续的多行使用字符串装起来,各行号间用逗号隔开。格式如:myrow = "1,3,9"然后使用这个轮子,把字符串代表的行给转换成单元格对象:Function RowsSelect(ByVal Rowstr As String) As Range Dim cc As Variant, ran As R.原创 2021-12-10 17:36:38 · 3721 阅读 · 0 评论 -
如何用VBA遍历指定文件夹内的所有文件
用baidir函数加上循环即可。比du如将D:\ABC文件夹内的所有文件zhi显dao示到zhuanA列,代码如下:Sub遍历所有文件()DimFn$,N%Fn=Dir("D:\ABC\*.*")WhileFn<>""N=N+1Range("A"&N)=FnFn=DirWendEndSub上述方法对一层目录有效,并且不对子文件夹进行遍历。...原创 2021-03-04 10:14:14 · 2891 阅读 · 1 评论 -
VBA 筛选结果存入数组
:自动筛选--获取可见行(数据)数据自动筛选,按第3列的缺勤进行筛选后,将筛选结果复制到F:H.Sub 获取可见数据() Dim LastRow As Long Dim Rng As Range, Rng1 As Range With ActiveSheet .UsedRange LastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row '返回最后一行行号 Set Rng ...原创 2020-11-20 20:15:25 · 10782 阅读 · 3 评论 -
VBA 字典+计次统计一个区域连续负数的最大个数
解决思路:遍历数组,出现负值,Key就递增,出现连续负值,相关key对应的item就递增。然后取item最大值具体代码:Function负数(rn)SetD=CreateObject("Scripting.Dictionary")n=1ForEachrInrnIfr<0ThenD(n)=D(n)+1Elsen=n+1...原创 2020-11-09 18:14:03 · 706 阅读 · 0 评论 -
VBA 二维数组整体直接赋值的方法小结
一维数组可以通过这样一行代码来整体赋值:arr = Array("你", "我", "他", "1", "2", "3", "aa", "bb", "cc")那么,如果想给二维数组采用类似的方法来整体赋值,要怎么办呢?arr=array("你", "我", "他" ;"1", "2", "3" ; "aa", "bb", "cc"),好像不行。一番搜索,网上给出的答案有如下:第一种:使用[{}]将字符串括起来,字符串行间用分号(;)分割,列间用逗号(,)分割:arr = [{"你", "..原创 2020-10-26 20:31:11 · 11608 阅读 · 2 评论 -
VBA 批量打印多工作簿的指定工作表
要解决的问题:同一个文件夹有多个工作簿,工作簿中有相同格式的多个sheet表,其中有两个固定的SHEET需要打印(所有EXCEL工作簿表格中两个固定SHEET的名字相同)。每次打开这么多文档,再将表格一个个打印很繁琐,有什么快捷的方法可以直接打印这个文件夹下所有EXCEL表中这两个固定的SHEET表内容?解决思路:1、将要打印的工作簿放在同一个文件夹内,如:D:\mywbooks\2、使用dir在文件夹中遍历文件,然后打开工作簿,再打印指定的工作表,然后关闭文件。EXCELVBA代码如.原创 2020-10-10 20:11:57 · 5851 阅读 · 2 评论 -
VBA 批量打印单工作簿内所有可见工作表(sheet)
要解决的问题:一个工作簿中有相同格式的多个sheet表,手动点击一张一张打印,太慢了。能不能一次性打印?解决思路:1、sheet表做好后,提前设置好打印的格式设置;2、有默认的打印机。3、根据工作表数量进行循环,然后打印,打印份数默认设为1份。EXCELVBA代码如下: Sub test() Dim ws As Worksheet For Each ws In Worksheets If ws.Visible = xlSheetV...原创 2020-10-10 16:20:26 · 4017 阅读 · 2 评论 -
VBA 一次性选中符合条件的单元格 整行删除
有同学问:能不能使用union函数将符合条件的单元格所在行全部选中,然后删除.如下图:删除黄色底纹的标题行为此,给出代码如下:Sub test()Dim arr, myrow As StringDim cc As Variant, ran As Ranger = Sheet1.Range("b65536").End(xlUp).Rowarr = Sheet1.Range(B...原创 2020-04-08 22:36:58 · 6823 阅读 · 0 评论 -
VBA 单列合并单元格经典代码
Sub 合并单元格() Dim i As Integer, j%, rng As Range,strng as range Application.DisplayAlerts = False i = Cells(Rows.Count, 1).End(xlUp).Row set strng =Application.InputBox("请选择要合并区域的任一...原创 2020-03-30 18:27:50 · 1139 阅读 · 0 评论 -
VBA 获取单元格行标和列标&数字转字母
在vba中,对单元格进行操作,经常需要知道单元格所在的行或列.可用以下方法获取:一、单元格的行标和列标 set C=range("A1") c.row 得行号, c.column 得列号 二、列号转字母 ‘将1,2,3,....转为"A","B","C"..... Sub test() For i = 1 To 26 ...原创 2020-03-30 15:27:38 · 8912 阅读 · 0 评论 -
VBA 用变量或数组引用不连续单元格
在工作中,常常会遇到引用不连续单元格的情况,经过摸索总结,有以下方法:一、对象变量引用单元格本身假如有三个不连续的单元格:A1,B2,B5则用vba方法选中这三个不连续单元格的代码如下:1, range("A1,B2,B5").select2,Union([A1], [B2], [B5]).selcet以上均可使用range对象变量进行直接引用.dim c as ran...原创 2020-03-15 15:53:36 · 5827 阅读 · 0 评论 -
VBA 在行中循环遍历的例子
在单元格区域对象中循环:For Each c In Range("$A$2:$A$" & Cells(Rows.count, "A").End(xlUp).row ‘do somethingNext c基于上述代码运行后,你会发现,少量数据处理上还行,但大量数据之后,电脑卡慢,用时较长等缺点就出来了。那要如何操作才能既快速,又能按行的要求进行循环遍历呢?答案是:使用数组替...原创 2020-01-12 10:13:56 · 2857 阅读 · 0 评论 -
VBA 获取最大行数和最大列数
在EXCEL中,对数据进行定位操作,必然要用到数据区域的最大行和最大列,代码如下:columnmax = Range("IV1").End(xlToLeft).Column '取得1行的最大列数columnmax =cells(i,columns.count).end(xltoletf).column 'i行的最大列数rowmax = Sheet1.Range(...原创 2020-01-12 09:19:29 · 27332 阅读 · 2 评论