自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

奔跑的犀牛先生

自学编程的中年大叔--男人至死仍少年--人的一切痛苦本质上都是对自己无能的愤怒

  • 博客(58)
  • 收藏
  • 关注

原创 VBA 工作表 worksheet.add 方法

1 工作表 sheet的添加 worksheets.add 或 sheets.add1.1 基本语法Sheets.Add 方法 新建工作表、图表或宏表。新建的工作表将成为活动工作表。 语法 表达式.Add(Before, After, Count, Type) 表达式 一个代表 Sheets 对象的变量。名称 必选/可选 数据类型 说明 B...

2020-01-31 10:36:01 11523 4

原创 VBA,在PPT里使用VBA---未完成

VBA里可以限制不允许修改内容可以批量添加内容参考http://www.rapidbbs.cn/forum.php?mod=viewthread&tid=62184

2020-01-30 22:04:13 351

原创 VBA 与 word 还真可以使用--未完成

VBA 与 word 还真可以使用WORD开选择开发工具即可 参考http://www.exceloffice.net/archives/2596

2020-01-30 22:03:11 207

原创 VBA 禁止修改VBA代码,禁止查看VBA代码

1 把EXCEL工作簿加密的方法,好像不行有个标记为 最终状态,禁止其他人修改 如果是加密整个 workbook,就是wb 无法打开,保护表和VBA 如果是只想保护某个worksheet的修改,可以选择保护 worksheet ,可设置单独密码 如果是想保护workbook结构,可设置单独密码 如果是想单独保护VBA不能修改,好像不行2可以要求...

2020-01-30 20:42:20 5460

原创 VBA,禁止修改workbook的所有内容

1 代码1:禁止修改工作簿所有内容在workbook的 sheetchange() 里增加判断 只要内容发生变化,触发 sheetchange() 就把 target参数内容置回之前的内容 需要事先捕捉,修改前的 范围内容Dim arr1Private Sub Workbook_Open()MsgBox "此工作簿不允许修改"End SubPrivate S...

2020-01-30 20:40:22 2330

原创 VBA 工作簿workbook常用的事件,比如聚光灯,禁止保存,禁止关闭EXCEL,禁止打印,监测内容变化等等

1 工作簿workbook 常用的事件1.1 常用事件workbook_open() workbook_WindowActivate() workbook_Windowresize() workbook_sheetchange() workbook_sheetselectionchange() workbook_beforesave() workbook_befor...

2020-01-29 23:50:08 4947 1

原创 VBA 简单破解EXCEL工作簿数字密码的功能

代码1:无法实现破解密码虽然加了不显示警告窗口,仍然会因为密码不对被警告 希望正确的时候显示密码 后面希望每次设置密码几位。每位密码从一个库里随机,可能效率低Sub test_wb111()Application.DisplayAlerts = FalseWorkbooks.AddActiveWorkbook.SaveAs ThisWorkbook.Path &a...

2020-01-29 21:32:27 1686

原创 VBA里,workbook.path不是全名,而workbook.fullname才是。而file.path就是全名,没有file.fullname

1 VBA 和 Application--Excel下的命名系统2.1 workbooks 工作簿有fullname属性fullname= path+ "\" + nameThisWorkbook.FullName 文件全名 ThisWorkbook.Path 文件路径 ThisWorkbook.Name 文件名 ThisWo...

2020-01-29 19:31:12 3938

原创 VBA基础,工作簿workbook相关的方法和属性

0 我觉得VBA和VB,VBS最大的区别就在A(application)上了 所以application里的 workbook , worksheet range ,cell等应该是VBA语言的核心,最复杂内容了 本身VBA里的VB语言部分,其实和很多语言语法结构也差不多 每种语言的差别 一在语法差别上。但差异应该不会太大 另外一个就在每种语言的对象系统上,包括各种对象,数...

2020-01-27 08:18:07 12573

原创 VBA的with语句,即匹配对对象的属性赋值,和VBA的取对象属性

1 取对象的属性1.1 取对象的属性x= range("a6635").end(xlup).rowy=worksheets.count1.2 引用对象的方法,执行一个动作dict.add 1,"abc"cells().deleterange().clearcontent2 给对象的属性赋值range().interior.colorindex=3...

2020-01-25 17:24:19 2276

原创 VBA的运算符号

VBA常用运算符常规数学运算符: + - * / ^ 特殊数学运算符: \ 整除 mod 取余数 其他运算符: & ()比较运算符: =赋值 < > <= >= 特殊比较符: is like逻辑运算符 : ...

2020-01-25 12:02:01 7020

原创 VBA与代码封装基础

把计算代码封装在一个函数里 其他需要调用到不同计算的过程等,只需要引用这个函数即可,还可以传递不同的参数。避免每个sub单独计算Function 计算(type1, a, b, c)If type1 = 1 Then Debug.Print a + b + cElseIf type1 = 2 Then Debug.Print a * b * cEnd IfEnd F...

2020-01-25 09:28:39 847 1

原创 VBA---查单元格,行/列,区域边界情况,用end(xlup) .row , end(xldown) .row 等

好用的几种情况--只能试往下往右尽量大的位置反查回来"其他不好用情况主要是因为,range() 边界连接起来会影响end() 的判断end() 会查出 非空区域 / 空区域的边界Sub test121()'某列Debug.Print "C列的上下限"'查一列的上限比较少Debug.Print Range("c1").End(xlEnd).Row '这样不行,...

2020-01-21 12:08:07 9423 3

原创 VBA: 如何停止当前VBA程序(尤其是死循环)的运行,用程序停止其他程序,暂停程序等(未完成)

暂停程序的3个思路暂停 application.wait(now + timevalue("00:00:03")) 和 application.ontime(now + timevalue("00:00:03")) sleep 500 加入断点,然后点F5运行一下不就暂停了吗? stop 不行,程序运行时被挂起了 运行的时候程序是挂起的吧,只能加暂停的代码才能让你玩...

2020-01-20 15:31:21 34319

原创 vba, 统计一个文件夹下(含子文件夹)的所有一类文件的,某列的值统计

1 问题1.1 问题详细分析问题来源于群里的一个玩家提问 需要统计一个文件夹下的多个同类文件 提问者要求的是csv,我例子里用的xlsm 统计这些表某一列的值,然后显示出统计页1.2 初期想到的难点文件夹下统计某一种文件不难,但是需要迭代子文件夹,可能需要用到递归 用VBA使用文件的内容前,必须先打开文件2 第一版正确代码,基础可以跑而已,未优化2.1 代码需求点...

2020-01-19 21:11:39 1279

原创 EXCEL 字符串string的各种操作函数 len() left() right() mid()

1 EXCEL里如果遇到字符串,经常会遇到对这些string进行处理的问题1.1 常见函数len() 获得string的长度 left() 拆分数组坐标的内容,往往是特殊符号的左边,或者是 文本和数字的分离 right() 拆分数组坐标的内容,往往是特殊符号的右边,或者是 文本和数字的分离 mid() 取中间一定位数的,截断字符串...

2020-01-19 15:25:38 2290

原创 VBA 如何实现在EXCEL多张表里搜索目标内容,并标记处 行号,列号?

一个VBA群里有个网友求助,我写了个试试,好像可以。。。以后在改进Sub test_find1()Dim sh1 As ObjectDim cell1 As ObjectDim arr1()target1 = "A"I = 1For Each sh1 In ThisWorkbook.Worksheets ReDim Preserve...

2020-01-19 14:33:25 804

原创 EXCEL 如何实现随机,用randbetween() +match() / vlookup / index() / choose() 实现文本随机

rand() 写死了只能是 0~1之间随机randbetween() 只能是指定的下限,上限数字之间随机,比如 randbetween(1,100)用rand + vlookup 实现文本随机-----甚至实现随机文本排序功能,见上面例子将文本和随机数字建立对应关系,写成2列,第2列RA...

2020-01-19 11:10:20 2284

原创 EXCEL-vlookup() 函数精确查找记得带false参数,同时比较 hlookup() lookup()

  vllokup VLOOKUP(D8,A8:B15,2,FALSE) 1001 a 1005 e 1002 b 1003 c 1004...

2020-01-19 10:43:13 1144

原创 EXCEL 如何查找单元格内的一个字符串 某个特殊符号 出现的次数? 不能用lookup,count,或者find, 可以用substitute()

查找单元格内的 特殊符号出现的次数公式写法 LEN(A2)-LEN(SUBSTITUTE(A2,",",""))原理 利用subtitute() 函数把指定符号替换为空,然后用新旧字符串长度比较,得出特殊符号的数量。 len(A1) LEN(A1)-LEN(SUBSTITUTE(A1,",","")) 1,2,......

2020-01-19 10:27:42 3946

原创 VBA,如何让数组名可以为变量,批量操作多个数组?

用字典的方法 暂时没找到其他办法Sub ID自动查漏() Dim target_area1 As ObjectDim dict1 As ObjectSet dict1 = CreateObject("scripting.dictionary") MsgBox "开始前,请确保您要查错的列位于A列,要引用的列位于C列,并空出B列"target1 = Ap...

2020-01-17 14:25:19 2146

原创 VBA 数组,取二维数组中的1行/1列的两种方法

1 取二维数组的 1行/ 1列的方法1.1 方法1循环方法,固定1行/1列,另外一维循环 for arr1(i,1)1.2 方法2application.index() 取一维 application.index(arr1,1,0) application.index(arr1,0,1)2 工作表函数的index都默认从1开始2.1 工作表函数...

2020-01-16 22:18:52 14804

原创 VBA数组知识,数组的组合和嵌套,一维数组的组合并非二维数组,二维数组的组合并非三维数组

1 数组嵌套的知识1维数组的嵌套并非2维数组 二维数组的嵌套并非三维数组2 数组的嵌套写法1维数组的嵌套:arr(m)(i) 2维数组的嵌套:arr(m)(i,j)Sub test1001()Debug.Print "测试一维数组和其嵌套"'一维数组arr1 = Array(1, 3, 5, 7, 9)arr2 = Array(2, 4, 6, 8, 10)...

2020-01-16 21:54:59 3561

原创 VBA各种变量,在过程,函数过程后需要释放,各种不同的释放方式

sub内的代码,声明周期也是过程级,应该不影响其他吧Application.DisplayAlerts = False 这个声明的生命周期也应该在sub内,有啥必要非在sub结尾前关闭掉?多此一举把 那这么推论 如果变量,数组,字典只是过程级的,过程执行/调用 结束了就释放了吧,有必要额外这么释放吗? 过程外反正是查不到的变量的清空a="" ?...

2020-01-15 21:56:16 5214

原创 VBA从区域range()转化的数组都是二维数组,但特殊的1列或1行可以用Application.transpose为一维数组

转1维 如果取的range是1列,那么transpose1次可以变成1维数组 如果取的range是1行,那么transpose2次可以变成1维数组 其他多行多列的是不可能转为1维数组的Sub test_arr1()Debug.Print "这都是二维数组"'单列arr1 = Range("a1:a10")'单行arr2 = Range("a1:e1")'范围arr...

2020-01-15 21:52:20 5991 2

原创 VBA,使用inputbox() 和 application.inputbox() ,以及参数按次序,按名称传递的方式的差别

1 inputbox() 和 application.inputbox() 的语法和功能差别1.1 inputbox()基本语法 InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context]) 其中 inputbox(prompt) 是必选参数1.2 application.Input...

2020-01-15 20:27:26 1781

原创 VBA,用VBA进行分列(拆分列)的2种方法

1 方法1:原列上分列Range("a:a").TextToColumns other:=True, otherchar:=";"2 方法2: split()+dictionary 的方法3 代码Sub test10()'拆分列的方法1Range("a:a").TextToColumns other:=True, otherchar:=";"'拆分列...

2020-01-15 17:22:43 20130

原创 VBA如何实现一个字符串拆解分列后的ID,查找是否在另外一列中?

1 数据源2 需求分析如何实现一个字符串拆解分列后,查找是否在另外一列中?需求分析不查重 也不查空 但是需要查漏,查没对应的 3 代码Sub ID自动查漏()Dim target_area1 As ObjectDim dict1 As ObjectSet dict1 = CreateObject("scripting.dictionary")...

2020-01-15 15:16:19 329

原创 VBA,关于filter()函数的局限性和原理,自己写了一个仿造filter同功能自定义函数

1 filter() 函数的局限性filter() 非精确查找,是模糊查询,类似于 like 的功能 Filter函数可以区分" " 即1个空格,但不能区分""空值或空白。--为什么,因为filter的原理类 if likeSub test110()'Filter函数可以区分" " 即1个空格,但不能区分""空值或空白。'filter() 非精确查找'filter() 的原理是? ...

2020-01-14 17:21:23 6928 4

原创 VBA 为什么你redim() 动态二维数组总出错?因为 redim 动态数组不太适合和循环搭配

1总结1.1 如何避免出错如果是想生成一个二维数组,最后用静态声明,或则二次声明redim 一个足够大的动态数组1.2 出错的原因是什么?redim时只有最后1维可变化,redim不太适合和循环搭配,即使用 redim preserve也不行! 你装数据时一般都会有一个充当计数器的变量,这个变量最后的值就是数组中装入值的数量 一般是声明一个足够大的静态数组,或二次声明一个足...

2020-01-13 18:21:02 12780 2

原创 【原创】VBA学习笔记(314)VBA 数组基础知识3,空值问题,index停留在+1的地方,

1 数组里中有空值,会一直存在着数组不能直接删除其中的方式 数组里中有空值,会一直存在着,可以把数组某个值置空可以利用这一点只用数组前一截 数组的后面多一些空值,不咋影响,因为截断用前面的,没啥影响,可以利用这一点,只用数组前一截 但是数组中间有空值还是挺恶心的 这样redim 去重数组时可以随意大一点了Sub test_arr1()arr1 = Array(1, 3, ...

2020-01-10 16:07:51 1795 1

原创 VBA 字典内置2的2个数组,

'dict1.keys() dict1.items() 都是一维数组'这两种方式显示数组里的元素都OK’'其实数组=数组名,就是dict1.keys()=dict1.keys 所以 dict1.keys(1)=dict1.keys()(1)Sub test_dict500()Dim dict1 As New Dictionaryarr1...

2020-01-10 15:23:39 413

原创 【原创】VBA学习笔记(312)VBA生成字典的多种方法,和最优方法

1 生成字典多种方法1.1 add方法生成字典逐个add 循环,add,需要判断是否重复1.2 整体添加keys() items() ,整体生成数组(用数组等)循环赋值给 keys() items()1.3 循环赋值生成数组的方法循环dict5(I) = ""2 生成字典最合适的方法:循环赋值生成数组的方法--因为足够灵活,容错率高循环dict5(I) =...

2020-01-10 14:28:51 2653

原创 【原创】VBA学习笔记(313)VBA字典相关:遍历字典,用key查item, 用item查key的方法

1 字典的遍历方法即使是后期绑定,也可以用 for each i in dict1.keys() '这里用到的 dict1.keys() 但不是 dict1.keys(i) 是可以的Sub test_dict11()Dim dict1 As ObjectSet dict1 = CreateObject("scripting.dictionary")dict1....

2020-01-09 21:28:39 23310 2

原创 VBA 删除数组某元素的方法多种

Sub test_arr3()arr1 = Array(1, 2, 3, 999, 1, 3, 5)For Each I In arr1 If I = "999" Then I = "" Else Debug.Print I End IfNextdengbu.PrintEnd Sub...

2020-01-09 17:31:09 8266

原创 VBA 如果想判断两个数组内的元素,是否完全相同,怎么搞?

判断相同的标准是?所有元素相同,不看排列,看组合拆解特点 1 数组的元素个数相同,但不看次序 2 元素可能重复的话,不能只看不重复的元素 3 如1 1 2 3 不等于 1 2 33https://zhidao.baidu.com/question/540792935.html我觉得这个答案不太对...

2020-01-09 16:59:11 3746

原创 VBA数组去重:用字典的去重的多种方法 + 数组去重方法2种方法

1 用字典的方法去重方法1,用字典去重 dict1(I) = "" 方法2,用字典去重 + 统计次数 dict2(I) = dict2(I) + 1 方法3,用字典报重复,但没去重复 If Not dict3.exists(I) ThenSub test_dict1()Dim dict1 As ObjectSet dict1 = CreateObject("sc...

2020-01-08 22:12:56 18096 1

原创 【原创】VBA学习笔记(304)VBA数组array基础知识(2):数组更适合整体处理,字典更适合操作每个元素

1 数组更像1个整体,而字典更像1个集合适合逐个处理。 设计数组和字典的人,目的性很不同 理解array 和 dictionary 两者的定位有很多差别 1.1 数组的特点1.1.1数组方便的操作----数组最好用的方法是:循环数组整体赋值 arr1=range() (动态)数组整体改变赋值 取得数组的上下限制,lbound() 和 uboun...

2020-01-08 16:42:32 2298

原创 EXCEL公式 sumifs countifs 等 只能判断1列?

为了多条件统计尝试了 countifs 和 sumifs发现COUNTIFS($D:$D,$W29,$K:$K,o$28)会查不出内容改成按列才可以COUNTIFS($D:$D,$W29,$K:$K,X$28)+COUNTIFS($D:$D,$W29,$L:$L,X$28)+COUNTIFS($D:$D,$W29,$M:$M,X$28)+COU...

2020-01-08 16:26:46 1261

原创 excel删除重复值的办法

1 EXCEL功能,数据,删除重复值2 VBA3 公式好像很难4 数组公式数组公式的http://www.360doc.com/content/12/0423/15/9571699_205911527.shtmlhttps://zhidao.baidu.com/question/88946380.htmlhttps://jingyan.baidu.co...

2020-01-08 11:45:52 252

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除