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

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

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

创作声明:部分内容由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(行,列,`${行}×${列}=${行*列}`);
        }
    }
 }

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

相关推荐

IDEA界面太丑??尝试一下这几个插件

前言IntelliJIDEA主要用于支持Java、Scala、Groovy等语言的开发工具,同时具备支持目前主流的技术和框架,擅长于企业应用、移动应用和Web应用的开发。IntelliJi...

小巧 Vue 页面滚动进度条组件ScrollProgress

今天给大家分享一个轻量级Vue.js全屏滚动进度条组件VueScrollProgress。vue-scroll-progress一款基于vue.js构建的页面滚动进度条组件,...

基于vue实现可视化拖拽编辑器,页面生成工具,提升前端开发效率

项目介绍基于vue实现的可视化拖拽编辑器,实现页面生成工具,提升前端开发效率。可以基层到移动端项目作为自定义json直接生成UI页面。项目特点功能特点...

优秀 vue+heyui 后端管理系统HeyUI-Admin

今天再给小伙伴们推荐一款成熟的企业中后台管理系统HEYUI-Admin。heyui-admin基于vue.js和heyui组件库构建的后台管理系统。包含基础表单/表格功能,拓展组件(图表、富文本编辑...

响应式 Vue.js 前端组件化框架Xvue-UI

今天给小伙伴们推荐一款超不错的Vue轻量级组件框架XVueUI。xvue-ui基于vue2.x构建的响应式前端组件化框架。轻量级、易于上手,提供...

《基于SpringBoot+Vue的在线视频系统设计与实现》开题报告

【计算机毕业设计案例】基于SpringBoot+Vue的在线视频系统设计与实现_哔哩哔哩_bilibili...

超好用 Vue.js 图片裁切组件Vue-ImgCutter

今天给小伙伴们分享一个超棒的Vue图片任意裁剪插件VueImgCutter。vue-img-cutter基于vue2.x构建的轻量级剪切图片组件。支持移动图像、放大缩小图片、任意移动图片、固定比...

Vue 3 进阶用法:异步组件(vue 异步组件原理)

一、代码分割一个大型前端应用,如果所有代码都放在单一文件,体积会特别大,下载时间长,白屏时间久,用户体验差。...

源码补丁神器—patch-package(源码助手怎么用)

作者:张浩一、背景vue项目中使用vue-pdf第三方插件预览pdf,书写业务代码完美运行,pdf文件内容正常预览无问题。后期需求有变,业务需求增加电子签章功能。这个时候pdf文件的内容可以显示出...

经验分享:Vue2 项目升级 Vue3 + Element Plus,借助Deepseek手动升级

Vue3出来好久了,我开发的项目还在使用Vue2框架,一般情况下不考虑升级,但是最近需要接入工作流程引擎之类的,看了下Vue2生态下操作空间不是很好,那索性尝试升级Vue3吧。一番操作下来,升级成功,...

34K Star!史上最全JavaScript资源库 awesome-javascript

34KStar!史上最全JavaScript资源宝库大揭秘引言在GitHub上,有一个备受瞩目的JavaScript资源仓库,以其全面的内容和精心的分类,成为了众多开发者的必备参考。这个拥有超过...

基于 Vue.js 磁片栅格布局组件VueGridLayout

#头条创作挑战赛#今天给大家分享一个超优秀的vue.js拖拽栅格布局插件VueGridLayout。...

6款高颜值 Vue3 PC端UI组件库(vue3开发组件库)

马上到国庆了,还没学习或者想学习vue3的小伙伴们有安排上没?这次推荐几个比较流行的VUE3UI组件库,合理利用,又或者学习借鉴都是不错的选择。1、element-pluselement-plus...

高性能 vue.js+ztree 树形组件Vue-GiantTree

今天给大家分享一款超棒的Vue海量数据渲染树形组件VueGiantTree。vue-giant-tree基于ztree封装的Vue树形组件。轻松实现大数据高性能渲染,适合海量数据渲染场景。zTr...

【推荐】2024年推荐的6款开源免费 Vue 后台管理系统模板,建议收藏

前言在现今的软件开发领域,...