Excel VBA 学习笔记13:单元格的格式

声明:本系列文章是学习蓝色幻想视频和《别怕,Excel VBA其实很简单》的

笔记总结,知识版权归上述两作品所有,图片均来自蓝色幻想视频。

Excel VBA 学习笔记13:单元格的格式

一、判断数值的格式

1. 判断是否为空单元格

Excel VBA 学习笔记13:单元格的格式

判断单元格是否为空常用3种方法:1、判断内容是否为空;2、判断单元格内容长度是否为0;3、判断单元格是否为empty。

另请注意,此例先将B1单元格的内容设置为空,但其实B1已经被使用过了。我们经常会用快捷键ctrl+A或用VBA 选中当前区域,不可避免会有些空表格算进来,就像这个例子中的B1单元格是会包含进去的,因为已经被使用过了。

2. 判断是否为数字

Excel VBA 学习笔记13:单元格的格式

判断是否为数字有两种方法:1、用VBA函数IsNumeric,但是它会将“空”归为数字,所以需要加个判断条件;2、利用工作表函数IsNumerber,它没有上述问题,可直接使用。

3. 判断是否为文本

Excel VBA 学习笔记13:单元格的格式

判断是否为文本也有两种方式:1、利用工作表函数IsText直接判断;2、利用VBA函数TypeName判断单元格内容的类型,注意,判断的是内容的类型,所以一定要用.Value获取单元格内容。另外,VBA对大小写敏感(即严格区分大小写),所以字符串类型String一定不要写成string。

4. 判断是否为汉字

Excel VBA 学习笔记13:单元格的格式

判断汉字的方法很多,这节课里提供了最简单的一个方式:比小写字母z大的字符。我们知道在ASCII码中大写字母在前,小写字母在后,所以这里判断的是小写z。

5. 判断错误值

Excel VBA 学习笔记13:单元格的格式

在编程过程当中我们经常需要判断前一步是不是出现了错误值,用VBA和工作表都提供了IsError函数,使用方法一样。

6. 判断日期

Excel VBA 学习笔记13:单元格的格式

判断日期很简单,利用VBA函数IsData就行。

二、设置单元格自定义格式

Excel VBA 学习笔记13:单元格的格式

这个例子将单元格格式设置成两位小数了,使用了NumberFormatLocal属性。实际工作中会需要不同类型的格式,可以先录制一个宏查看代码。

三、按指定格式从单元格返回数值

Excel中的颜色可以用两种方式获取,一种是EXCEL内置颜色,另一种是利用QBCOLOR函数返回。

1.内置颜色

Excel VBA 学习笔记13:单元格的格式

ColorIndex是单元格内置颜色,通过赋值产生变化。

2.QBColor颜色函数

Excel VBA 学习笔记13:单元格的格式

QBColor是个函数,注意其写法要加括号。例子中Range().Interior.Color指的是单元格背景色。

3.RGB颜色

Excel VBA 学习笔记13:单元格的格式

RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一(摘自百度百科)。通过R、G、B三个值从0~255的变化得到不同的颜色。

艺术上三原色指的是红、黄、蓝,与工业有区别。

上面的例子告诉我们,汉字是可以作为变量名称的,同样要付出存储空间的代价,因为汉字使用2字节存储。

四、单元格合并

1.合并单元格

Excel VBA 学习笔记13:单元格的格式

制作表格的时候免不了要将内容相同的单元格进行合并,我们循序渐进,先学习合并的方法,最后会给出一个实际应用的例子。

merge就是合并的意思,具体是Range("单元格区域").Merge方法,取消合并用的是UnMerge,但是大部分情况下我们还想把原来的内容恢复了,这个后续再讲。

2.合并区域的返回信息

Excel VBA 学习笔记13:单元格的格式

如果要获得某个单元格所在合并区域的详细地址用Range().MergeArea.Address

3.判断是否含合并单元格

Excel VBA 学习笔记13:单元格的格式

判断某单元格是否处于合并单元格中,用MergeCells属性。但是,同时包含合并单元格和非合并单元格时,MergeCells属性将返回Null,所以再改进一下代码,利用IsNull函数来判断,如果返回值是1证明该区域有合并单元格,如果返回值为0证明该区域不含合并单元格。

4.综合示例

(1)合并单元格

Excel VBA 学习笔记13:单元格的格式

这里给出了利用Union将相同内容单元格暂存起来,等判断前后内容不一样了进行合并的方法。每次手动合并单元格都会提示只保留左上角单元格内容,为了不让提示框打断代码运行,我们用
Applicationg.DisplayAlerts = False或True来控制。

Excel VBA 学习笔记13:单元格的格式

这个方法是我比较常用的,既然每次合并只保留上面的单元格内容,那么我们就倒着来判断,如果下面的单元格跟上面的内容一样,则合并(保留的是上面的内容),然后继续下一次判断。

(2)取消合并单元格并保留内容

Excel VBA 学习笔记13:单元格的格式

现在将前面的坑填上。取消单元格合并的时候,更多的希望恢复原样,对吧?思路很直观,我按顺序循环整列,先把当前值存起来,再拿到这个单元格所在合并区域的单元格数量(如果不在合并区域下面代码也会执行,只是不改变任何东西罢了),然后取消合并,再人为赋值。

需要注意有两个减1:①赋值的时候减1是因为2~9共8个单元格,但是只能在1的基础上加7;②i值重新赋值进入下一个循环,道理跟前边一样。

相关笔记请参阅:

Excel VBA 学习笔记12:单元格信息

Excel VBA 学习笔记11:特殊单元格定位

Excel VBA 学习笔记10:单元格的选取

Excel VBA 学习笔记9:Excel工作表操作


分享到:


相關文章: