视频加载中…
如果希望工作表中在现有使用区域中增加数据时自动给数据区域添加边框,则需要在单元格的Worksheet_Change过程中判断Target地址是否满足要求,并在满足要求时进行边框添加即可(如上方视频展示)。
Step1. 功能实现简述
如下表格,其数据区域为A1到D6,此状态下,我们需要实现当对A7或E1单元格进行数据添加时将其相邻的A6或D1单元格格式传入,同时A7到D7区域或E1到E6区域自动添加边框
Excel中每个工作表其背后都有一个change过程对单元格的数据变化进行监控,我们只需调出此过程并在过程代码中使用IF判断数据变化所发生的单元格是否满足上述条件,若满足则进行格式copy及边框添加。
Step2. 代码的添加
在当前工作表VBE界面(Alt+F11进入)右侧代码区域按①到③的顺序(其中③需选择两次:Change及SelectionChange)分别调出Worksheet_Change过程及Worksheet_SelectionChange过程
声明变量并填写补充两个过程中的代码,最终成型如下:
代码声明了两个变量rMax和cMax分别用来记录当前数据区域的行数和列数。
Selectionchange过程对所声明的两个变量进行赋值,因为Selectionchange过程总是发生于Change过程之前,所以此时进行数据区域行列数的赋值可保证Change事件发生时rMax及cMax数值是数据区域的最信息(即:数据区域有增减时rMax及cMax值会随之动态变化)。
Change过程,主要是对A列向下及第一行向右数据区域紧邻的两个单元格进行监控,如果是这两个单元格发生数据变化(一般是新增),则进行格式赋值以及边框添加。开始及结束的EnableEvents设置,目的是为了防止Change事件的无限连锁反应。
Change代码中的赋值使用Copy语句,粘贴则使用PasteSpecial(参数使用xlPasteFormats,及粘贴格式),这个代码组合完全等同于前台的选择性粘贴(如下图)。
Step3. 执行的代码
返回前台sheet界面,在A列向下及第一行向右数据区域紧邻的两个单元格进行数据添加,即可实现格式copy及边框自动添加。