刚学习wps宏代码
请教怎么优化代码
function 保存并清除()
{
var x=Sheets("出货明细").Cells(Rows.Count,1).End(xlUp).Row+1;
Sheets.Item("销售单").Activate();
if(Cells(5,3).Value2!=undefined)
{
for(var i=9;i<=17;i++)
{
Sheets.Item("销售单").Activate();
if(Cells(i,2).Value2!=undefined)
{
//第一列
Sheets.Item("销售单").Activate();
Range("G4").Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,1).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第二列
Sheets.Item("销售单").Activate();
Range("K20").Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,2).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第三列
Sheets.Item("销售单").Activate();
Range("C5").Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,3).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第四列
Sheets.Item("销售单").Activate();
Range("B"+i).Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,4).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第五列
Sheets.Item("销售单").Activate();
Range("D"+i).Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,5).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第六列
Sheets.Item("销售单").Activate();
Range("E"+i).Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,6).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第七列
Sheets.Item("销售单").Activate();
Range("F"+i).Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,7).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第八列
Sheets.Item("销售单").Activate();
Range("G"+i).Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,8).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第九列
Sheets.Item("销售单").Activate();
Range("H"+i).Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,9).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第十列
Sheets.Item("销售单").Activate();
Range("I"+i).Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,10).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第十一列
Sheets.Item("销售单").Activate();
Range("J"+i).Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,11).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第十二列
Sheets.Item("销售单").Activate();
Range("K"+i).Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,12).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第十三列
Sheets.Item("销售单").Activate();
Range("M"+i).Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,13).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第十四列
Sheets.Item("销售单").Activate();
Range("G5").Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,14).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第十五列
Sheets.Item("销售单").Activate();
Range("L5").Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,15).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第十六列
Sheets.Item("销售单").Activate();
Range("C6").Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,16).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
//第十七列
Sheets.Item("销售单").Activate();
Range("G6").Select();
Selection.Copy(undefined);
Sheets.Item("出货明细").Activate();
Cells(x,17).Select();
Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
var x=x+1
}
}
}
else{MsgBox(" 未输入客户名")}
Sheets.Item("销售单").Activate();
if(Cells(5,3).Value2!=undefined)
{
Range("B9:G17,I9:J17,M9:M17,C5:E6,G5:I6,L5:M5").ClearContents();
Range("C5").Select();
ActiveWorkbook.Save();}
else{Range("C5").Select()}
}
思路:1用Range.Value2获取二维数组数据;2用forEach循环数组;3用Range.Resize.Value2方法写入数据
代码:
function 保存并清除() {
let thiswb = ThisWorkbook
, sell = thiswb.Sheets('销售单')
, detail = thiswb.Sheets('出货明细')
, sell_list = sell.Range('B9:M17').Value2
, ros = detail.Cells(Rows.Count, 1).End(xlUp).Row + 1
, head = [sell.Range('G4').Value2, sell.Range('K20').Value2, sell.Range('C5').Value2]
, tail = [sell.Range('G5').Value2, sell.Range('L5').Value2, sell.Range('C6').Value2, sell.Range('G6').Value2]
if (!sell.Range('C5').Value2) {
sell.Range('C5').Select()
return alert('未填写客户名称')
}
sell_list.forEach(i => {
if (!i[0]) return
i.splice(1, 1)
i.splice(9, 1)
i = head.concat(i)
i = i.concat(tail)
detail.Range('A' + ros).Resize(1, 17).Value2 = i
ros++
})
detail.Columns(1).NumberFormatLocal = "yyyy/m/d;@"
detail.Columns(2).NumberFormatLocal = "yyyy/m/d h:mm;@"
sell.Range('B9:M17,C5:E6,G5:I6,L5:M5').Value2 = ''
sell.Range('C5').Select()
thiswb.Save()
}
效果:
自定义菜单
自定义功能区采用通用的
CustomUI 标准进行配置, 该标准定义了一整套标准的控件,比如按钮、下拉菜单、组合框;能够对控件的标签、图标、点击事件等属性进行配置。下面通过一个示例进行详细说明。
自定义任务窗格
WPS 加载项的任务窗格是一个用来浏览网页的用户界面面板,通常停靠在 WPS 应用程序主窗口的一侧,开发者可以控制任务窗格停靠的位置及宽高。 但重要的是任务窗格中的这个网页可以和 WPS 直接完成交互,开发者可以提取 WPS 文档中的数据在网页中集中显示,也可以通过网页交互将数据直接写进文档。
自定义 WEB 对话框
根据给定的url、标题、宽高等信息创建一个对话框,对话框中的内容是一个web网页。