04 实用语句<上>¶
本期我们重点盘点一下那些不好归类,但是又出镜率特别高的方法,方法太多,我们先讲五个
一、Offset语句¶
首先出场的是offset语句,注意它有两种不同的写法:
- 单元格.offset(偏移行,偏移列):偏移的下标从0开始
- 单元格(偏移行,偏移列):下标从1开始
二、Resize语句¶
Resize语句将一个单元格可以拓展为一块区域,单元格在拓展区域的左上角,写法是:
单元格.resize(新区域行数,新区域列数)
看下面这个案例:
这个方法在你需要填充数组或者大量数据的时候特别实用,只需要给定初始位置,然后Resize填充即可
三、交集和并集¶
如果你需要遍历多块区域,不需要写两个for循环,只需要用Union将所有的区域取并集即可,而如果你想求的是交集,则通过Intersect方法定义,具体用法如下:
Union:表示并集,用法为 Union(区域1,区域2,…,区域n)Intersect:表示交集,用法为 Intersect(区域1,区域2,…,区域n)
我们同样看一个例子:
四、SpecialCells¶
这个方法就像我们通过EXCEL进行定位,设置定位条件时的那个界面,由于只有选择常量或者公式的时候,才需要进一步选择数字,文本,逻辑值和错误这些选项,因此在代码中就有可选参数 [Value]
语法为:Set r = Range("A1:D100").SpecialCells(Type, [Value])
1) SpecialCells 常用类型速查表(Type)
| Type 常量 | 数值 | 作用(会返回匹配的 Range) | Value 是否需要用 |
|---|---|---|---|
xlCellTypeBlanks |
4 | 空白单元格 | 否 |
xlCellTypeConstants |
2 | 常量(非公式结果)单元格 | 是(常用) |
xlCellTypeFormulas |
-4123 | 公式单元格 | 是(常用) |
xlCellTypeVisible |
12 | 可见单元格(筛选/隐藏后常用) | 否 |
xlCellTypeComments |
-4144 | 批注单元格(旧版“注释/批注”) | 否 |
xlCellTypeLastCell |
11 | 工作表“已用区域”的最后一个单元格 | 否 |
xlCellTypeAllFormatConditions |
-4172 | 含条件格式的单元格 | 否 |
xlCellTypeAllValidation |
-4174 | 含数据验证的单元格 | 否 |
xlCellTypeSameFormatConditions |
-4173 | 与活动单元格相同条件格式的单元格 | 否 |
xlCellTypeSameValidation |
-4175 | 与活动单元格相同验证规则的单元格 | 否 |
xlCellTypeRowDifferences |
9 | 与活动单元格相比,“行差异”单元格 | 否 |
xlCellTypeColumnDifferences |
8 | 与活动单元格相比,“列差异”单元格 | 否 |
xlCellTypeDependents |
16 | 依赖该单元格的单元格(从属) | 否 |
xlCellTypePrecedents |
8 | 该单元格引用到的单元格(先行) | 否 |
2) Value 参数速查(只在 Constants / Formulas 常用)
Value 用来限定“返回的常量/公式属于哪种数据类型”,可组合相加(位掩码)。
| Value 常量 | 数值 | 含义 |
|---|---|---|
xlNumbers |
1 | 数值 |
xlTextValues |
2 | 文本 |
xlLogical |
4 | 逻辑 TRUE/FALSE |
xlErrors |
16 | 错误值(#N/A 等) |
组合示例:
- 数值 + 文本:
xlNumbers + xlTextValues→1 + 2 = 3 - 全部类型:
xlNumbers + xlTextValues + xlLogical + xlErrors→23
SpecialCells 如果一个都找不到,会直接抛错,所以建议放在Error错误处理中:
五、Comment注释¶
对于单元格注释的处理,主要有以下这些常用的方式:
addcomment: 增加注释,后面跟上具体的文本,注意如果单元格本来就有注释,使用此方式就会报错range.comment.text:用于修改注释的文本,但是如果单元格本身没有注释,此方式报错range.comment.shape.textframe.autosize:设置注释的大小根据文本自适应调整range.comment.visible:设置注释是否可见range("a1").clearcomments:清空注释,和range("a1").comment.delete用法类似
range("a1").comment.visible = true的时候,表格就会一直显示这样一个注释,如下图:
本期我们总结了以上方法,其实VBA中好用的方法还有很多,其他的下回分解