百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

WPS三板斧(10):不同对象的属性和方法名称可能相同

csdh11 2025-03-06 13:54 3 浏览

创作声明:部分内容由AI辅助创作

不同对象的同名方法用法不同

招式9:不同对象的同名方法示例

不同性别,但同名同姓的两个人,

前面我们已经了解了Workbooks集合对象的Add()方法。对于Sheets集合对象同样有Add()方法,用于向工作簿中添加一个新表,适用于所有的Sheets集合对象中的各种表类型。我们需要重新学习针对Sheets集合对象的语法规则(对于Range对象又变成Insert方法了)如下:

Sheets.Add:fn(Before:?,After:?,Count:?,Type:?) As IDispatch

返回的IDispatch对象是一个COM(Component Object Model)接口的引用,是微软提出的标准。简而言之,在WPS的JS宏中,IDispatch对象是一个桥梁,它让JavaScript能够与WPS Office的COM对象模型进行交互,实现复杂的自动化任务。

参数说明:

  • Before: 可选。新工作表将被添加到指定的现有工作表之前。Before和After不能同时使用,两者同时省略则认为是在当前的活动工作表之前添加。
  • After: 可选。新工作表将被添加到指定的现有工作表之后。
  • Count: 可选。指定要添加的工作表数量。默认值为1。
  • Type: 可选。指定新工作表类型。默认值为普通工作表,我电脑上的WPS版本直接支持Excel VBA枚举型常量作为参数,例如xlChart。

打开“代码库.xlsm”文件的WPS宏编辑器,输入以下代码,带分号的语句是可录制的:

function 新建表(){
	Sheets.Add(undefined,undefined,1,xlChart)//全参数
	Worksheets.Add();
	Charts.Add()
	Excel4MacroSheets.Add()
	DialogSheets.Add()
	Debug.Print("Sheets:"+Sheets.Count,"Worksheets:"+Worksheets.Count,"Charts:"+Charts.Count)
}

说明:首先用Sheets集合对象的全参数方式添加一张图表,然后用四种不同表类型的Add()方法添加了四张表,最后使用输出语句,统计了Sheet集合对象、Worksheets集合对象、Charts集合对象的现有数量。执行代码后,数字的缺口就是另外两种为进行数量统计的表类型。

同时看到工作表窗口,WPS宏编辑器窗口、这样在单步调试时方便观察效果

再举一个Item()方法的示例,这个方法通常用于获取集合中的特定项目,语法规则如下:

Workbooks.Item:fn(Index:?) As Workbook

Workbooks.Item 方法用于从当前打开的工作簿集合中获取特定的工作簿,从0开始的索引位置作为参数。请注意,如果你尝试获取一个不存在的索引位置的工作簿,将会抛出一个错误。为了避免索引超出范围,我们可以用当前打开工作簿的数量来进行限制,以下代码遍历Workbooks集合并打印工作簿名称。我们可以新建或打开多个工作簿,在“代码库.xlsm”文件运行以下代码,可在WPS宏编辑器的立即窗口中列出所有当前打开工作簿的名称。

function 遍历工作簿集合(){
	for (var i = 0; i < Workbooks.Count; i++) {
    	Debug.Print(Workbooks.Item(i).Name)
    }
}

Sheets.Item:fn(Index:?) As IDispatch

Sheets.Item 方法用于从当前工作簿中获取特定的表,与Workbooks用法相同,但工作表的索引从1开始,适用于所有的各类表对象,获得数量用的表类型在循环内外保持一致。

function 遍历工作表集合(){
	for (var i = 1; i <= Sheets.Count; i++) {
		Debug.Print(Sheets(i).Name)
    }
    for (var i = 1; i <= Worksheets.Count; i++) {
		Debug.Print(Worksheets(i).Name)
    }
}

Cells.Item:fn(RowIndex:?,ColumnIndex:?,RHS:?)

Cells.Item 方法用于获取特定单元格,共有三个参数,第三个参数可以省略。前两个参数使用行索引和列索引来确定单元格。下面是一个用WPS灵犀自带DeepSeek编制一个乘法表的示例:

提问1:WPS的JS宏编制九九乘法表示例

回答1(深度思考65秒):给出代码示例、代码说明、运行效果、注意事项(具体内容略)

第一边乘法表的效果

提问2:如何优化这段九九乘法表代码

回答2(深度思考66秒):给出优化后的代码、优化点详解、优化前后对比表格、最终效果、扩展建议(具体内容略)

黑板上手书乘法表

提问3:采用1乘1得1的样式,不要表头

回答3(深度思考46秒):给出优化后的代码、关键改动说明、运行效果、扩展建议(动态大小、高亮重复项、条件格式)

优化后的代码

运行效果

第一条扩展建议,将n=9作为函数的参数,编制n*n的乘法表,未采纳。因为我们要编制九九乘法表,示例代码在我电脑的WPS版本下无法正常运行,下面是挑时候修改的代码,用来说明Cell.Item的用法。

function 乘法表() {
    Worksheets.Add();
    ActiveSheet.Name="乘法表"
    for (行=1;行<=9;行++) {
        for (列=1;列<=9;列++) cells.item.value2='结果;' if>列) {
 			   Cells.Item(行,列).Font.Color = 0x0000FF; // 红色字体
 			}
			if (乘积>50) {
 			   Cells.Item(行,列).Interior.Color = 0x00FFFF; // 黄色背景
			}
        }
    }
    Range(Cells(1,1),Cells(9,9)).HorizontalAlignment = 2;//个人觉得左对齐美观,从3改成2
    Columns.AutoFit();
}


该实例使用了变量、嵌套循环、判断、格式化字符串(比使用+连接字符串方便),另外的字体颜色、背景颜色、左对齐、自动调整列宽等均可以通过录制宏来实现。这些内容在后续会有专题讲解。

特别注意的是,对于第三个参数RHS,查找DeepSeek和互联网,所提供的示例代码我电脑上的WPS版本中无法完成所需的结果,所以不管任何来源的代码解释也不能盲目相信。在代码调试过程中发现,该方法会将第三个参数的值写入单元格,原来是赋值语句。使用该功能编写的乘法表是目前我所见到的最好版本,修改后不包括扩展功能的的代码如下:

function 最佳乘法表() {
    Worksheets.Add();
    ActiveSheet.Name="最佳乘法表"
    for (行=1;行<=9;行++) {
        for (列=1;列<=9;列++) {
           Cells.Item(行,列,`${行}×${列}=${行*列}`);
        }
    }
 }

在双层循环嵌套中,只用一行代码就搞定乘法表!

相关推荐

音视频命令转换工具 - FFmpeg

随着自媒体兴起,许多人会自拍视频或者找视频素材裁剪,配上背景音乐或解说,加上各种特效边框,处理后再生成新的视频文件,发布到各大平台。生成的原始视频文件都很大,我们需要转换格式或者压缩大小,便于上传或者...

视频剪辑软件,如何批量将h264转换为h265格式的视频

最近有很多朋友在问,因为剪辑、或者上传的原因,需要将视频编码转换成H265格式编码,该怎么操作呢?不知道怎么办的宝贝们,下面请随小编一起来试试吧。需要哪些工具?安装一个媒体梦工厂视频素材若干怎么快速剪...

1080秒变4K,让PotPlayer开启“超分辨率”播放视频文件

大家好,我是大卫呆。1080P的视频能秒变4K视频吗?通过上期节目的实机测试,答案是:...

视频编码H.265与H.264的区别-------深入浅出说监控

我们在购买监控摄像头或者录像机产品的时候,一般情况下,经销商会问你是要H.265编码格式与H.264编码格式的,很多人都会好奇,什么是H.265和H.264?他们的实际效果有什么区别?今天就从定义和作...

H.265已落后!下一代视频技术实现重大突破

来源:快科技下一代视频技术实现重大突破。从阿里云官微获悉,阿里达摩院XG实验室参与制定的新一代国际视频编码标准H.266(VVC)出炉,同等画质下将节省近50%传输流量,清晰度越高,码率节省越多。前不...

VP9 或 H.265 的 6 个比较点

直播很复杂。广播流和通过Internet传输流的整个过程涉及一系列可以采用多种格式的方法。一个重要的组件是用于媒体文件编码和解码的编解码器。编解码器还定义了可用于进行流式传输的工具类型。大大简化流...

融合通信系统播放不了H.265视频怎么解决

在融合通信项目中,视频的融合是很多项目的落地要求,随着技术的进步,需要融合的视频也是多种多样,很多项目中需要接入视频监控,布控球,无人机,视频会议等视频资源。这些视频资源使用不同的技术,不同的传输协议...

别被忽悠了!视频编码H.265与H.264的区别有多大?看完你就懂了

相信大家都听过H.265和H.264这两种编码,也看过专业术语的解释。包括电视机都会标注支持H.265格式4K视频编码,视频监控系统也会标注支持H.265。但是还是有很多人不知道什么是视频编码H.26...

视频行业迎来巨变!H.265将被淘汰,电视及流媒体全受影响

这两天,姐夫自己遇到一个问题,从一些流媒体网站上下载来的视频,比如油管上的视频,居然无法正常在Windows10上播放,必须要重新下载一个视频编码插件才行。甚至于这些视频都无法通过现有的编辑软件去做...

对于Mybaits缓存的理解

...

你居然还去服务器上捞日志,搭个 Graylog 日志收集系统不香么

一、前言...

Java 代理从 0 到彻底搞懂

一、为什么出现代理?咱们先抛开编程,想象一下生活中的场景。假如你是一位大明星,每天都有无数的活动邀约、采访请求,还有各种商务合作的洽谈。要是你亲自去处理这些事情,那你哪还有时间去拍戏、唱歌、提升自己的...

SpringBoot系列——cache缓存

  前言  日常开发中,缓存是解决数据库压力的一种方案,通常用于频繁查询的数据,例如新闻中的热点新闻,本文记录springboot中使用cache缓存。...

Spring的缓存帝国,得益于这 5个注解!

在微服务,分布式的大环境下,缓存绝对是提升系统性能的关键手段,Spring作为Java生态中最流行的企业级应用框架,它是如何实现缓存的呢?这篇文章,我们将深入探讨Spring中5个核心的缓存注解...

JVM缓存EhCache在实际业务系统中的应用及复杂场景探讨

本文将介绍JVM缓存EhCache的基本概念、原理以及在实际业务系统中的使用。文章将重点讨论EhCache在复杂场景下的应用,并提供Java语言实现的示例。1.JVM缓存EhCache简介EhCa...