目录
- WPS对象的属性、方法、集合
- 工作簿对象常用表达方式
- 工作表对象常用表达方式
- 单元格对象常用表达方式
- 单元格操作实战
- 单元格复制与重定位
- 单元格偏移与尺寸调整
- 颜色设置专题
- 索引颜色与RGB颜色
- 按条件动态设置单元格颜色
所有章节教程word文件可以点击如下链接获取
wps-excel办公+JS宏编程教程基础到进阶+函数使用手册
第二部分:WPS对象模型与核心操作
1. WPS对象的属性、方法、集合
核心概念
WPS对象就像“俄罗斯套娃”:
- 工作簿(Workbook) → 工作表(Worksheet) → 单元格(Range)
- 每个对象都有属性(描述特征)、方法(可执行的动作)、集合(多个同类对象的组合)。
1.1 工作簿对象常用操作
关键代码示例
// 获取当前工作簿路径
let 当前路径 = ThisWorkbook.Path;
MsgBox("当前文件保存在:" + 当前路径);
// 新建工作簿并保存
function 新建工作簿() {
let 新工作簿 = Workbooks.Add();
新工作簿.SaveAs(当前路径 + "\\2024年数据.xlsx");
新工作簿.Close();
}
// 遍历所有打开的工作簿
for (let wb of Workbooks) {
Console.log("已打开的工作簿:" + wb.Name);
}
常用属性
属性 | 作用 | 示例 |
---|---|---|
.Name | 获取工作簿名称 | ThisWorkbook.Name |
.FullName | 获取完整路径 | Workbooks("工资表.xlsx").FullName |
.Sheets | 获取所有工作表的集合 | ThisWorkbook.Sheets.Count (统计工作表数量) |
1.2 工作表对象常用操作
关键代码示例
// 重命名活动工作表
ActiveSheet.Name = "2024年数据";
// 隐藏指定工作表
Sheets("备份数据").Visible = false;
// 批量删除空白工作表
function 删除空白表() {
for (let sheet of Sheets) {
if (sheet.UsedRange.Count == 1) { // 如果已用区域只有一个单元格
sheet.Delete();
}
}
}
常用方法
方法 | 作用 | 示例 |
---|---|---|
.Copy() | 复制工作表 | Sheets("模板").Copy() |
.Move() | 移动工作表 | Sheets("数据").Move(Sheets(1)) (移动到最前) |
.Protect() | 保护工作表 | ActiveSheet.Protect("123") |
1.3 单元格对象常用操作
关键代码示例
// 读取A1单元格的值
let 姓名 = Range("A1").Value2;
MsgBox("当前用户:" + 姓名);
// 批量填充序号(A列1~100)
Range("A1:A100").Value2 = [...Array(100).keys()].map(i => i + 1);
// 动态获取最后一行数据
let 最后一行 = Cells(Rows.Count, 1).End(xlUp).Row;
Console.log("最后一行是:" + 最后一行);
常用属性
属性 | 作用 | 示例 |
---|---|---|
.Row | 获取行号 | Range("C5").Row → 5 |
.Column | 获取列号 | Range("C5").Column → 3 |
.Formula | 设置公式 | Range("D2").Formula = "=SUM(B2:C2)" |
2. 单元格操作实战
2.1 单元格复制与重定位
场景:将“订单表”的标题行复制到“汇总表”
function 复制标题() {
let 订单表 = Sheets("订单表");
let 汇总表 = Sheets("汇总表");
// 复制A1:F1标题区域
订单表.Range("A1:F1").Copy();
// 粘贴到汇总表A1位置(保留格式)
汇总表.Range("A1").PasteSpecial();
// 清空剪贴板
Application.CutCopyMode = false;
}
重定位技巧
// 从当前单元格向下偏移2行,向右偏移1列
Range("A1").Offset(2, 1).Value2 = "新数据";
// 动态扩展区域(从A1扩展到B3)
Range("A1").Resize(3, 2).Value2 = [
["姓名", "年龄"],
["张三", 28],
["李四", 32]
];
2.2 单元格偏移与尺寸调整
场景:在数据末尾追加新行
function 添加新数据() {
let 最后一行 = Range("A" + Rows.Count).End(xlUp).Row;
let 新行 = 最后一行 + 1;
// 在A列最后一行下方写入新数据
Cells(新行, 1).Value2 = "王五";
Cells(新行, 2).Value2 = 25;
// 自动调整列宽
Columns("A:B").AutoFit();
}
3. 颜色设置专题
3.1 索引颜色 vs RGB颜色
类型 | 特点 | 示例 |
---|---|---|
索引颜色 | 预定义56种颜色,速度快 | Range("A1").Interior.ColorIndex = 3 (红色) |
RGB颜色 | 自定义1600万种颜色,更灵活 | Range("A1").Interior.Color = RGB(255, 200, 0) (橙色) |
颜色代码对照表
3.2 按条件动态设置颜色
场景:将成绩大于90的单元格标为绿色
function 标记高分() {
let 数据范围 = Range("B2:B100");
for (let cell of 数据范围) {
if (cell.Value2 > 90) {
cell.Interior.ColorIndex = 4; // 绿色背景
cell.Font.Color = RGB(0, 0, 0); // 黑色字体
}
}
}
进阶技巧:清除颜色
// 清除A列所有颜色
Columns("A").Interior.ColorIndex = xlColorIndexNone;
第二部分总结
- 核心口诀:
- 工作簿是文件,工作表是页签,单元格是数据点。
- 属性描述状态,方法执行动作,集合管理多个对象。
- 实战建议:
- 用
Offset
和Resize
动态定位数据区域。 - 用
ColorIndex
快速配色,用RGB()
实现个性化需求。
- 用
课后练习:
- 写一个宏,将当前工作表的A1单元格复制到所有工作表的A1位置。
- 用
for...of
循环遍历B列,将负数标为红色。
代码参考答案
// 练习1:跨表复制A1内容
function 跨表复制() {
let 源内容 = Range("A1").Value2;
for (let sheet of Sheets) {
sheet.Range("A1").Value2 = 源内容;
}
}
// 练习2:标记负数
function 标记负数() {
for (let cell of Range("B2:B100")) {
if (cell.Value2 < 0) {
cell.Font.ColorIndex = 3; // 红色字体
}
}
}