ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ctp_119

[原创] 跟我学JavaScript in WPS

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-15 22:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
OKJSJSF 发表于 2024-5-8 20:23
又想了想,没必要用数组了,数组也简化不了什么了,数组要赋值,相当于复制,最多是省了二句表格切换代码 ...

刚学习了一个东西,当MsgBox输出对话框只需第一个参数时,可以用alert( )。如 alert(“执行完毕。”)

TA的精华主题

TA的得分主题

发表于 2024-5-17 22:03 | 显示全部楼层
WPS表格如何改成个人宏工作簿?象EXCEL一样隐藏所有工作表,再通过XML编辑器,做成加载项。具体步骤?

TA的精华主题

TA的得分主题

发表于 2024-5-18 07:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 OKJSJSF 于 2024-5-18 13:17 编辑

image.png

TA的精华主题

TA的得分主题

发表于 2024-5-18 10:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 OKJSJSF 于 2024-5-18 13:16 编辑
OKJSJSF 发表于 2024-5-8 20:23
又想了想,没必要用数组了,数组也简化不了什么了,数组要赋值,相当于复制,最多是省了二句表格切换代码 ...

列宽自动适应的代码作修改,又简化了一点。数组的方法还没试。完整代码如下:
function 全行数据一览无余(){
        while(!rang){
                var ran=Application.InputBox("请选个列标题单元格:","参数设置1","","","","","",8);     //输入对话框        
                if(!ran){
                        return;     //退出过程
                        }        
                var rang=Intersect(ran,ran.Parent.UsedRange);     //是否选择了有效区域
                if(!rang){
                        MsgBox("无效选择。",jsQuestion,"金山提醒:");     //输出对话框        
                        }                        
                }                                
        var r=ran.Row;     //引用单元格的行号、列号、当前区域总列数、工作表名称
        var c1=ran.End(xlToLeft).Column;
        var c2=ran.CurrentRegion.Columns.Count;
        var n=ran.Parent.Name;
        Worksheets(n).Cells(r,c1).Resize(1,c2).Copy();     //复制
        Sheets.Add();     //新建工作表
        var n2=ActiveSheet.Name
        Cells(2).PasteSpecial(xlPasteValuesAndNumberFormats, xlPasteSpecialOperationNone, false, true);     //转置粘贴值与数字格式
        Cells(1).Formula = "1";
        Cells(1).AutoFill(Range("A1:A" + c2), xlFillDefault);     //填充自然数
        Worksheets(n).Select();
        while(!rang2){
                var ran2=Application.InputBox("请选个数据单元格:","参数设置2","","","","","",8);        
                if(!ran2){
                        return;
                        }        
                var rang2=Intersect(ran2,ran2.Parent.UsedRange);
                if(!rang2){
                        MsgBox("无效选择。",jsQuestion,"金山提醒:");        
                        }                        
                }        
        Worksheets(n).Cells(ran2.Row,c1).Resize(1,c2).Copy();
        Worksheets(n2).Select();
        Cells(3).PasteSpecial(xlPasteValuesAndNumberFormats, xlPasteSpecialOperationNone, false, true);
        ActiveSheet.UsedRange.Borders.LineStyle = xlContinuous;     //先添加细边框        
        if(c2>50){     //50列以上才分栏
                if(c2%2==0){     //哎呀,余数是这么求的!函数放着不用靠边站了
                        Cells(c2/2+1,1).Resize(c2/2,3).Cut();     //剪切
                        Cells(4).Select();
                        ActiveSheet.Paste();     //回车粘贴法
                        Cells(1).Resize(c2/2,3).Borders.Item(xlEdgeRight).LineStyle = xlDouble;     //分栏的边框线采用双线                                                
                        }
                else{
                        Cells(c2/2+1.5,1).Resize(c2/2+0.5,3).Cut();   
                        Cells(4).Select();
                        ActiveSheet.Paste();     
                        Cells(1).Resize(c2/2+0.5,3).Borders.Item(xlEdgeRight).LineStyle = xlDouble;                                                                             
                        }
                Cells(1).CurrentRegion.Columns.AutoFit();     //当前区域列宽自动适应                  
                }
        Range("G1").Select();
        alert("排版完毕。")
}

TA的精华主题

TA的得分主题

发表于 2024-5-18 13:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
数组练习:
Range("a1:h10").Value2=[[1,2],[3,4,5,6],["",7]]
上式为把右边的三个常量数组的无素一次性写入左边的10行8列的单元格区域,程序不会出错。第一个数组相当于1行2列,第二个数组相当于1行4列,第三个数组相当于1行2列。三个数组用 [ ]括起来相当于VBA中的 union( )。由于三个数组组合后最多占用3行4列空间,所以执行赋值后,单元格区域中3行4列以外的单元格会被写入错误值 #N/A。
Range("a1").Value2=[[1,2],[3,4,5,6],["",7]]
上式只有第一个数组的第一个元素被写入指定的那个单元格,程序不会出错。
如果是日期写入数组,再数组写入单元格,则日期变成数字。

TA的精华主题

TA的得分主题

发表于 2024-5-18 13:41 | 显示全部楼层
本帖最后由 OKJSJSF 于 2024-5-18 15:48 编辑

image.png

TA的精华主题

TA的得分主题

发表于 2024-5-18 19:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ctp_119 发表于 2022-5-24 08:10
当时我没有想到三元操作符,O(∩_∩)O哈哈~

这里变量 t 不需声明?

TA的精华主题

TA的得分主题

发表于 2024-5-18 20:34 | 显示全部楼层
pc087 发表于 2022-6-3 18:53
jsa里,同一个问题可以有多种解法,比vba数组自由多了

哎呀,这是另一种代码,没见过呀。

TA的精华主题

TA的得分主题

发表于 2024-5-18 20:38 | 显示全部楼层
ctp_119 发表于 2022-6-4 20:10
在此感谢pc087坛友,他提供的flat()方法,后来我查资料,看书,深度学习了一下。现总结如下:
...

可能JSA处理问题方案太多,所以更难学

TA的精华主题

TA的得分主题

发表于 2024-5-18 20:43 | 显示全部楼层
ctp_119 发表于 2022-6-4 20:10
在此感谢pc087坛友,他提供的flat()方法,后来我查资料,看书,深度学习了一下。现总结如下:
...

这数组怎么象一层一层的文件夹与子文件夹及文件。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 02:47 , Processed in 0.048933 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表