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

JSA宏教程WPS表格常用内置对象——单元格区域(Range)对象(二)

zhezhongyun 2025-05-28 21:40 23 浏览

本期继续上一期的内容进行。

名称

说明

ColumnWidth

返回或设置指定区域中所有列的列宽。Variant 类型,可读写。

RowHeight

为单位返回或设置指定区域中所有行的行高。如果指定区域中的各行的行高不等,则返回 nullVariant 类型,可读写。

Left

返回一个 Variant 值,它代表从列 A 的左边缘到区域的左边缘的距离(以磅为单位)。

Top

返回或设置一个 Variant 值,它代表行 1 上边缘到区域上边缘的距离(以磅为单位)。

Width

返回一个 Variant 值,它代表区域的宽度(以磅单位表示)。

Height

返回或设置一个 Variant 值,该值代表区域的高度(以磅为单位)。

Hidden

返回或设置一个 Variant 值,它指明是否隐藏行或列。

AddIndent

返回或设置一个 Variant 值,它指明当单元格中文本的对齐方式为水平或垂直等距分布时,文本是否为自动缩进。

HorizontalAlignment

返回或设置一个 Variant 值,它代表指定对象的水平对齐方式。

VerticalAlignment

返回或设置一个 Variant 值,它代表指定对象的垂直对齐方式。

NumberFormat

返回或设置一个 Variant 值,它代表对象的格式代码。

Font

返回一个 Font 对象,它代表指定对象的字体。

Formula

返回或设置一个 Variant 值,它代表 A1 样式表示法和宏语言中的对象的公式(不支持数组溢出的公式)。

Formula2

返回或设置一个 Variant 值,它代表 A1 样式表示法和宏语言中的对象的公式(支持数组溢出的公式)。

Text

返回或设置指定对象中的文本。String 型,只读。

Value2

返回或设置单元格值。Variant 类型,可读写。

Name

返回或设置一个 Variant 值,它代表对象的名称。

ID

返回或设置一个 String 值,它代表将页面另存为网页时指定单元格的识别标志。

Row

返回区域中第一个子区域的第一行的行号。Long 类型,只读。

Column

返回指定区域中第一块中的第一列的列号。Long 类型,只读。

Count

返回一个 Long 值,它代表集合中对象的数量。

MergeCells

如果区域包含合并单元格,则为 TrueVariant 型,可读写。

以上属性(均来自于WPS开放平台)就是我们本期需要练习属性。上的属性涉及三个方面:

1、单元格区域的外观;2、单元格区域的内容;3、单元区域的自身

WPS官方开发文档的不足

WPS官方的教程有点缺憾,就是上面的属性给的并不全面,有一些相对比较重要的属性没有给出来。通过查找OFFICE的内容。我觉得上面的属性还需要加一个Borders属性,即是单元格的边框属性。

Borders:四个 Border 对象的集合,这些对象表示 Range 对象或 Style 对象的四个边框。只能对 Range 和 Style 对象的各个边框分别设置边框属性。 其他带边框的对象(如误差线和序列线)具有被视为单个实体的边框,而不管它有多少边。 对于这些对象,在返回边框和设置边框属性时必须将其作为一个整体处理。

使用 Borders (索引) (其中 index 标识边框)返回单个 Border 对象。 Index 可以是以下 XlBordersIndex 常量之一: xlDiagonalDown、 xlDiagonalUp、 xlEdgeBottom、 xlEdgeLeft、 xlEdgeRight、 xlEdgeTop、 xlInsideHorizontal 或 xlInsideVertical。

而Borders集合也有它自己的属性,以下列示出Borders集合常用的属性:

Color:设置边框的颜色

ColorIndex:设置四条边的颜色,要求四条边的颜色都一样,如果不一样,这个属性将返回null.

Count:代表集合中对象的数量,即是Borders对象中的Border有多少个。

Item:返回一个 Border 对象,该对象代表单元格区域或样式的边框之一。可以取以下值:

LineStyle:指定边框的线条样式。它可以取以下值:

Weight:返回或设置一个 XlBorderWeight 值,该值代表边框的权重。它可以取以下值:

练习

练习1:熟悉单元格区域外观系列属性

做一个表格标题栏1行5列:第一列列宽3、第二列列宽12、第三列列宽4、第四列列宽5、第五列列宽6;行高25;各列都是水平居中、垂直居中。

  • 通过ColumnWidth和RowHeight属性设置单元格区域的列宽和行高。
  • 通过HorizontalAlignment和VerticalAlignment设置单元格中文本在水平和垂直方向的对齐方式,并通过AddIndent属性设置单元格中文本是否缩进。HorizontalAlignment和VerticalAlignment取值如下图
  • 通过Borders属性来设置单元格区域的边框:外边框蓝色细实线、内边框红色虚线
const TABLEHEAD = "A1:E1";//定义好标题栏的地址
const TABLEBODY = "A2:E6";//定义好数据栏的地址
const DATATABLE = "A1:E6";//定义表格的地址。

//定义一个无前缀的“会计专用”数字格式。
const ACCOUNTANT_NUMBER_FORMAT_NONPREFIX = '_ * #,##0.00_ ;_ * -#,##0.00_ ;_ * "-"??_ ;_ @_ ';

function CreateTableHead()
{
	let rngHead = Worksheets("Sheet2").Range(TABLEHEAD);
	
	//行高
	rngHead.RowHeight = 25;
	
	//第一列列宽5、第二列列宽12、第三列列宽7、第四列列宽7、第五列列宽10
	rngHead.Parent.Range("A:A").ColumnWidth = 5;
	rngHead.Parent.Range("B:B").ColumnWidth = 12;
	rngHead.Parent.Range("C:C").ColumnWidth = 7;
	rngHead.Parent.Range("D:D").ColumnWidth = 7;
	rngHead.Parent.Range("E:E").ColumnWidth = 10;
	
	//各列都是水平居中、垂直居中
	rngHead.HorizontalAlignment = xlHAlignCenter;
	rngHead.VerticalAlignment = xlVAlignCenter;
	
	//通过Borders属性来设置单元格区域的边框:外边框蓝色细实线、内边框红色虚线	
	// xlEdgeBottom、 xlEdgeLeft、 xlEdgeRight、 xlEdgeTop、 xlInsideHorizontal 或 xlInsideVertical。
	rngHead.Borders(xlEdgeBottom).LineStyle = xlContinuous;
	rngHead.Borders(xlEdgeLeft).LineStyle = xlContinuous;
	rngHead.Borders(xlEdgeRight).LineStyle = xlContinuous;
	rngHead.Borders(xlEdgeTop).LineStyle = xlContinuous;
	//颜色RGB(red,green,blue)三个参数分别代表着0~255范围内的值。以下(0,0,255)表示是纯蓝色
	rngHead.Borders(xlEdgeBottom).Color = RGB(0,0,255);
	rngHead.Borders(xlEdgeLeft).Color = RGB(0,0,255);
	rngHead.Borders(xlEdgeRight).Color = RGB(0,0,255);
	rngHead.Borders(xlEdgeTop).Color = RGB(0,0,255);
	
	rngHead.Borders(xlInsideHorizontal).LineStyle = xlDash;
	rngHead.Borders(xlInsideVertical).LineStyle = xlDash;
	//颜色RGB(red,green,blue)三个参数分别代表着0~255范围内的值。以下(0,0,255)表示是纯红色
	rngHead.Borders(xlInsideHorizontal).Color = RGB(255,0,0);
	rngHead.Borders(xlInsideVertical).Color = RGB(255,0,0);
}

练习2:在练习1的基础上再画出5行。

边框要求同练习1;第一列水平居中垂直居中;第二列垂直居中水平居左;第三到第五列数字格式设为“会计专用”第五列公式:第三列的值乘以第四列的值。将练习1中的标题栏从左至右设置单元格内容为:序号、名称、数量、单价、金额。

  • 通过NumberFormat设置单元格数字显示格式;
  • 通过Font属性设置表格文本字体、及字体样式;
  • 通过Formula2属性设置单元格中的公式;
  • 通过text和value2属性设置单元格的文本或数值。
function CreateTableBody(){
	let rngBody = Worksheets("Sheet2").Range(TABLEBODY);
	let rngTable = Worksheets("Sheet2").Range(DATATABLE);
	let titleArray = ['序号','名称','数量','单价','金额'];
	//边框要求同练习1,因此可以直接将练习1关于边框的都复制过来
	// xlEdgeBottom、 xlEdgeLeft、 xlEdgeRight、 xlEdgeTop、 xlInsideHorizontal 或 xlInsideVertical。
	rngBody.Borders(xlEdgeBottom).LineStyle = xlContinuous;
	rngBody.Borders(xlEdgeLeft).LineStyle = xlContinuous;
	rngBody.Borders(xlEdgeRight).LineStyle = xlContinuous;
	rngBody.Borders(xlEdgeTop).LineStyle = xlContinuous;
	
	rngBody.Borders(xlEdgeBottom).Color = RGB(0,0,255);
	rngBody.Borders(xlEdgeLeft).Color = RGB(0,0,255);
	rngBody.Borders(xlEdgeRight).Color = RGB(0,0,255);
	rngBody.Borders(xlEdgeTop).Color = RGB(0,0,255);
	
	rngBody.Borders(xlInsideHorizontal).LineStyle = xlDash;
	rngBody.Borders(xlInsideVertical).LineStyle = xlDash;
	
	rngBody.Borders(xlInsideHorizontal).Color = RGB(255,0,0);
	rngBody.Borders(xlInsideVertical).Color = RGB(255,0,0);
	
	//2、第一列水平居中垂直居中;第二列垂直居中水平居左;第三到第五列数字格式设为“会计专用”第五列公式:第三列的值乘以第四列的值。
	for(col of rngBody.Columns)
	{
		//对列的序号进行switch判断分别
    switch(col.Column){
			case 1:
        //第一列,水平居中
				col.HorizontalAlignment = xlHAlignCenter;
				break;
			case 2:
        //第二列,水平居左
				col.HorizontalAlignment = xlHAlignLeft;
				break;
			case 3:
        //第三列和第四列都要设置为会计专用的数字显示格式。
				col.NumberFormat = ACCOUNTANT_NUMBER_FORMAT_NONPREFIX;
        break;
			case 4:
				col.NumberFormat = ACCOUNTANT_NUMBER_FORMAT_NONPREFIX;
        break;
			case 5:
        ////第五列要设置为会计专用的数字显示格式;还要设置公式
				col.NumberFormat = ACCOUNTANT_NUMBER_FORMAT_NONPREFIX;
				col.Formula = "=C2*D2";//这样写也能实现自动向下填充
				//col.Cells(1).Formula = "=C2*D2";//列中第一个单元格的公式
				//col.FillDown();//向下填充
				break;
		}
		col.VerticalAlignment = xlVAlignCenter//所有列都垂直居中
	}
	
	//3、将练习1中的标题栏从左至右设置单元格内容为:序号、名称、数量、单价、金额。
	//取得数据表的第一行,也即是标题栏那一行,设置它每个单元格的值是上述所定义的数组。
  rngTable.Rows(1).Value2 = titleArray;
  //所有行高
	rngTable.RowHeight = 25;//数据表格中的单元格行高25
	
	//通过Font属性设置表格文本字体、及字体样式;
	rngTable.Font.Name = '微软雅黑';
	rngTable.Font.Size = 11
	rngTable.Rows(1).Font.Bold = true;//标题栏粗体
}

以上就是本期关于Rang对象的属性的第二部分内容。

通过第二部分的内容,创建了一个简单的数据表格:设置了表格的字体、边框、公式;学会了如何将数组值赋值给单元格。

我们同样是可以通过微软的VBA对象模型用在WPS的JSA中。小编发现WPS官方的文档内容不足,有缺失。我们在实际工作中,完全是可以将VBA的对象模型作为我们的参考工具之一。

以上代码复制后即可运行。

小编的演示文档会保存起来,免费提供给大家学习,如有需要关注后私信说明要哪一章节的演示文档。

请注意:演示文档与小编的教程同步即是小编的教程到哪一步,演示文档就到哪一章节。

关注我,持续共同学习,一起踏上wps宏(JSA)的登山之路。

#头条创作挑战赛#

相关推荐

HashMap详解(hashmap lru)

讲解步骤基础知识工作原理关键代码核心方法基础知识数组结构数组接口,在查询数据方面,具备优势链表结构链表结构,在增删数据方面,具备优势红黑树结构红黑树结构,在查询数据方面,数据量较大的时候,具备一定的优...

升级内核,UC浏览器电脑版v2.0.570.0下载

IT之家(www.ithome.com):升级内核,UC浏览器电脑版v2.0.570.0下载7月21日晚,UC浏览器电脑版发布了v2.0正式版,最新的版本号是2.0.570.0。此次更新的最大亮点是内...

MySQL惊天陷阱:left join时选on还是where?

前天写SQL时本想通过AleftBjoinonand后面的条件来使查出的两条记录变成一条,奈何发现还是有两条。后来发现joinonand不会过滤结果记录条数,只会根据and后的条...

一个高效使用cursor开发项目的方法,怎么让 AI 写的代码不跑题?

最近又用cursor做了一个小应用,番茄时钟,用来管理自己的时间,提高效率。然后使用cursor开发的过程中。有了一些新的感悟。找到了一条可以让Curosr不跑题的办法。生成一份详细的项目资...

某通信公司笔试题,你会做几道?(通信行业行测题)

笔试部分1.描述下面代码中两个static各自的含义:staticvoidfunc(void){staticunsignedinti;}参考答案:行1,static表示静态...

新手学Python避坑,学习效率狂飙! 二、Python 代码缩进

在Python里,缩进有着极其重要的作用,它被用于界定代码块。与其他多数编程语言使用大括号{}来划分代码块不同,Python依靠缩进来明确代码的层次结构。下面分享缩进问题,并且给出避坑的方法...

Python缩进规范详解与最佳实践(python缩进讲解)

Python的缩进规则是强制性的语法要求,绝对不能乱缩进!作为一门用缩进表示代码块的语言,Python的缩进错误会导致程序直接崩溃。以下是关于缩进规范的全面解析:一、Python缩进的底层逻辑代...

深度解析ConcurrentHashMap1.8源码分析

想必大家对HashMap数据结构并不陌生,JDK1.7采用的是数组+链表的方式,JDK1.8采用的是数组+链表+红黑树的方式。虽然JDK1.8对于HashMap有了很大的改进,提高了存取效率,但是线程...

星河战神暴风旋转刃好不好 暴风旋转刃属性详解

星河战神暴风旋转刃好不好?暴风旋转刃怎么得?小编为大家分享星河战神暴风旋转刃属性图鉴,希望可以帮助到大家。暴风旋转刃85级满级属性战力加成暴风旋转刃分类:僚机初始:1星属性:风满星:5星暴风旋...

假面骑士亚极陀全形态盘点(假面骑士亚极陀形态合集)

《假面骑士亚极陀》的形态设计延续了空我的属性差异化思路,但更强调“觉醒”与“进化”的主题。从基础形态的属性专精到闪耀形态的等离子爆发,每个形态都承载着角色成长与剧情转折。数据对比不仅揭示了力量...

膛线磨没了子弹精度到底是怎么受影响的呢?

这是一个回复:那么咱们就来深究这个问题吧——当膛线磨没了,子弹的精度到底是怎么受影响的呢?到底是不是就成了“滑膛枪”射程、精度是不是差了一点?先说结论——膛线磨没了,只能让这把枪成为“信仰之枪”,根本...

【莫莫老师亲授】公考行测图形推理3大属性规律!提分利器

在公务员考试的行测科目中,图形推理是高频考点之一,而属性规律作为基础题型中的核心模块,常通过图形的对称性、曲直性、开闭性三大属性考查考生的观察与归纳能力。本文将从定义、特点、常见考法及例题分析入手,系...

DNF驱魔属性合并,技能重做解读(dnf驱魔加强了吗)

作者:B蜀黍前言本轮职业平衡驱魔进行了力驱法驱合二为一,部分技能重做和技能优化。形态方面:新增四神系技能且可柔化,力系技能加快出手速度,一觉从1秒瞬发单段脱手改为3秒站桩多段,形态逆向优化,实战体验...

拉满一个3级配件?还是升6个2级配件,橙装升级最优解方案揭秘!

各位车长,试验型配件已经重新发放!即日起至3月31日,在这期间登录游戏就能免费领到6个试验型配件和700个合金原件(已领取的玩家不再重复获得)。今天就和各位车长简单聊一聊:活动期间一共能获得多少合金元...

CAD动态块制作方法—旋转动态块(cad动态块制作教程 视频教程)

CAD动态块制作方法—可见性动态块CAD动态块制作方法—拉伸动态块今天来讲一下含有旋转动作的动态块制作方法。我们用立面索引符号来举例。旋转动态块首先制作一个带有属性定义的立面索引符号的图块。(此步...