WPS表格 JSA 学习笔记 - 实现【设置编号】并添加到自定义选项卡

本文档详细介绍了在WPS表格中手动和通过代码设置标题编号的步骤,提供了一种纯手工实现方法及批量处理的VBA代码。强调了在整个文档中保持编号一致性的建议,并给出了创建自定义编号和应用到整个列表的重要性。此外,还讨论了如何将该功能添加到自定义选项卡以提高工作效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


经常遇到编号设置混乱的文档,需要我们修复。本文的代码可以帮到你。不过再那这前,我们先试试手动实现。

0. 纯手工实现:

  1. 首先,要确认我们的标题层级都是正确的。
  2. 为了便于观察,先取消所有编号。(此步可选)
    全选当前文本》开始》段落》编号》选【无】。
    热键(按顺序):Ctrl + a, Alt, H, U
  3. 选择第一个一级标题,利用【选择格式相似的文本】选中所有一级标题。
    开始》选择》选择格式相似的文本
    热键(按顺序):Alt, H, S, L, S
  4. 设置编号。记得整个文档都要使用同一个编号。
  5. 重复第3步,将2、3、… 后续所有级别的标题都设置一遍。

0.1. 编号使用建议

注意:整个文档,都要使用同一个编号,记得应用到【整个列表】。这样后续我们想调整就很方便了。
建议一开始都统一使用系统自带的编号,选一个满意的或最接近的。
整个文档处理完后,最后来再调整。

因为每次编辑编号后就会多出一个自定义编号,也不知道是不是BUG,如果小白多次操作后很可能会出现一大堆自定义编号,到最后自己都分不清应该用哪个。
如果确实有多种编号同时使用,那记得自己清楚,别互相用乱了就好。
所以最简单的方法就是只保留一个自定义编号,设置时都选择它就OK了。

  1. 在标题上进行:开始》编号》自定义。改成自己想要的效果。
  2. 确定时记得,左下角:应用于【整个列表】(因为我们整篇文章从头到脚都使用的是同一个编号,所以只要改一处就都生效了。)
    在这里插入图片描述

1. 标题设置编号

如果数量不多,并且想手动控制一个一个边改边检查,可以用这个。

  1. 先定位到第一个要设置的标题处。
  2. 执行以下代码。
function 标题设置编号()
{
	try{
		var listGallery = ListGalleries.Item(3).ListTemplates.Item(9);
	}catch(e){
		alert("请先创建一个自定义编号!")
		return;
	}
	
	var lf = Selection.Range.ListFormat;
	// 去掉编号
	lf.RemoveNumbers(wdNumberParagraph);
	// 应用自定义编号的第1个
	lf.ApplyListTemplate(listGallery, wdContinueList, wdListApplyToWholeList, wdWord8ListBehavior);
	// 找下一个标题
	Selection.GoTo(wdGoToHeading, wdGoToNext, 1, "");
}

2. 遍历所有标题设置编号

如果数量多,或者成竹在胸,直接批量处理。

  1. 准备:先创建一个自定编号。(详情见下文:关于编号引用
  2. 先全选全文,取消编号。
  3. 将标定在最开始。
  4. 执行以下方法。
function 遍历所有标题设置编号(){
	var listGallery = ListGalleries.Item(3).ListTemplates.Item(9);
	try{
		listGallery = ListGalleries.Item(4).ListTemplates.Item(1);
	}catch(e){
		var result = MsgBox("是否使用默认编号?",jsYesNo,"未找到【自定义编号】")
		if(result == 7){// yes=6, no=7
			return;
		}
	}
	var flag = 0;
	var rng = Selection.GoTo(wdGoToHeading, wdGoToNext, 1, "");
	// 关闭屏幕更新,提升执行效率
	// Application.ScreenUpdating = false;
	var beginTime = new Date();
	while (flag != rng.End) {
		// 记住当前位置
		flag = rng.End;
		// 定位到下一个标题
	   	rng.GoTo(wdGoToHeading, wdGoToNext, 1, "");
		// 去掉编号
		rng.ListFormat.RemoveNumbers(wdNumberParagraph);
		// 应用自定义编号的第1个
		rng.ListFormat.ApplyListTemplate(listGallery, wdContinueList, wdListApplyToWholeList, wdWord8ListBehavior);
		// 找下一个标题
		rng = Selection.GoTo(wdGoToHeading, wdGoToNext, 1, "");
		// 日志
		Selection.HomeKey(wdLine, wdExtend);
		Selection.EndKey(wdLine, wdExtend);
		Console.log(Selection.Range.Text);
		DoEvents(); // 在循环过程中避免卡死,体验更好些。测试 315 个目标多了6秒,但因为有实时反馈,心理返回感觉这样更快。
	}
	var endTime = new Date();
	Debug.Print("用时共计"+(endTime-beginTime)+"ms");
	// 开启屏幕更新
	// Application.ScreenUpdating = true;
}

添加到自定义选项卡

为了方便操作,我们做点辅助工作。
文件》选项》按下图顺序操作。(自定义选项卡、组是我手动创建的)
在这里插入图片描述

参考资料

关于编号引用

这句就是引用编号的 ListGalleries.Item(3).ListTemplates.Item(9);
这里选中的是第3个【多级编号】列表中的第9项。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑虾

多情黯叹痴情癫。情癫苦笑多情难

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值