Excel 一个宏 多个连续按钮中可以使用。WPS中按钮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel 一个宏 多个连续按钮中可以使用。WPS中按钮相关的知识,希望对你有一定的参考价值。

有50个按钮
ToggleButton1-50
每个按钮的宏代码如下,copy到目标位置后的数字比按钮1加了20行。有没有办法用
For i = 1 To 50 Step 1
For r = 1 To 1000 Step 20
这样的方式呢?

Private Sub ToggleButton1_Click()
Sheets("shoudongluru").Range("A3").Value = "1"
Sheets("shoudongluru").Range("B3:G21").Copy Sheets("duoxiangdata").Range("B3:G21")
Sheets("shoudongluru").Range("K3:P21").Copy Sheets("duoxiangdata").Range("K3:P21")
Sheets("shoudongluru").Range("B23").Value = "第1箱完成"
End Sub

Private Sub ToggleButton2_Click()
Sheets("shoudongluru").Range("A3").Value = "2"
Sheets("shoudongluru").Range("B3:G11").Copy Sheets("duoxiangdata").Range("B23:G41")'比按钮1加了20
Sheets("shoudongluru").Range("K3:P11").Copy Sheets("duoxiangdata").Range("K23:P41")'比按钮1加了20
Sheets("shoudongluru").Range("B23").Value = "第2箱完成"
End Sub

一共有50个。

参考技术A

只用一个按钮就可以,点了按钮之后选一下箱子号,代码如下:

Private Sub ToggleButton1_Click()
    Dim i
    i = Val(InputBox("输入箱子号","你打算处理第几箱",1))
    Sheets("shoudongluru").Range("A3").Value = i
    Sheets("shoudongluru").Range("B3:G21").Copy Sheets("duoxiangdata").Range("B"&(3+(i-1)*20)&":G"&(21+(i-1)*20))
    Sheets("shoudongluru").Range("K3:P21").Copy Sheets("duoxiangdata").Range("K"&(3+(i-1)*20)&":P"&(21+(i-1)*20))
    Sheets("shoudongluru").Range("B23").Value = "第"& i &"箱完成"
End Sub

本回答被提问者和网友采纳
参考技术B 我应该可以解决,发你的文件来!

WPS增加正则处理函数,简直如虎添翼


在2020年时,我在《自加载宏让你的Excel支持正则处理函数》一文中演示了给office的Excel增加正则处理函数,文本处理瞬间变得记得简单。VBA的宏要在WPS中使用,也只需要安装wps对应的vba库即可,上面的文章中有下载链接。

上一篇我也演示了一个js宏的小案例《WPS JS宏示例-批量添加链接》,今天我将使用JS宏开发正则处理函数,方便只安装WPS的电脑上使用。

JS宏开发正则处理函数

正则表达式的参考资料:

小小明 Python正则表达式速查表与实操手册

JS宏API文档直达页面:​​https://qn.cache.wpscdn.cn/encs/doc/office_v19/index.htm​

新建Excel,打开开发工具->wps宏编辑器,编写如下代码:

function readValue(target)
return typeof(target)=="string"?target:target.Item(1).Value2

//正则替换
function re_replace(text,pattern,repl)
text=readValue(text),pattern=readValue(pattern),repl=readValue(repl);
let regexp = new RegExp(pattern,"g");
return text.replace(regexp, repl);

//正则查找
function re_findall(text,)
text=readValue(text),pattern=readValue(pattern);
let regexp = new RegExp(pattern,"g");
let result=[];
while(a=regexp.exec(text))
result.push(a[0])

return result;

//正则抽取
function re_draw(text,)
text=readValue(text),pattern=readValue(pattern);
let regexp = new RegExp(pattern,"g");
let arr=regexp.exec(text);
arr.shift();
return arr.map(v=>v||"");

//正则判断,搜索是否包含指定的模式字符串
function re_test(text,)
text=readValue(text),pattern=readValue(pattern);
let regexp = new RegExp(pattern,"g");
return regexp.test(text);

//正则切割
function re_split(text,)
text=readValue(text),pattern=readValue(pattern);
let rule = new RegExp(pattern,"g");
return text.split(rule);

相对于vba而言,JS宏开发正则函数实在是过于简单。因此,相对之前的vba代码而言,我们还增加了正则匹配判断和正则切割的实现。

保存Excel文件为​​re.xlam​​​,即自加载的宏文件。将其放到​​C:\\Users\\userName\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\​

注意:userName表示你当前的用户名。

WPS增加正则处理函数,简直如虎添翼_前端

我个人是将之前的vba宏和现在写的js宏都保存到了这个文件里:

WPS增加正则处理函数,简直如虎添翼_正则_02

对于WPS而已,Excel宏放在上述目录下能自动加载需要开启WPS的office兼容模式。在开始菜单的配置工具中:

WPS增加正则处理函数,简直如虎添翼_兼容模式_03

个人开启的对2007的兼容模式,应该对2010的兼容模式也是该目录。

若不想开启兼容模式还可以通过everything搜索​​XLSTART​​​获取其他的加载项目录,将文件放到其中。例如,我搜索到​​C:\\Users\\ASUS\\AppData\\Roaming\\kingsoft\\wps\\XLSTART​​。

JS正则函数测试

对于之前已经测试过的正则,这次也全部测试通过。

正则抽取:

=re_draw(A1,"([^|(]+)(?:\\(共(\\d+)层\\))?(?:\\|(\\d4)年建\\|)?(\\d室\\d厅)\\|([\\d.]+)平米\\|([东南西北]+)")
=re_draw(A1,"(.+?)(\\d+)")

注意:对于数组公式(Ctrl+shift+Enter),WPS无法直接拖动填充柄。需要复制公式后,选中要填充的区域,再以公式形式选择性粘贴。

WPS增加正则处理函数,简直如虎添翼_正则表达式_04

先复制数组公式,再直接在剩余区域粘贴也行,直接粘贴后也可以切换到纯公式的形式。

WPS增加正则处理函数,简直如虎添翼_兼容模式_05

正则搜索:

=re_findall(A1,"[\\u4e00-\\u9fa5]+|^\\w+$")
=re_findall(A1,"[-_\\d]+")

WPS增加正则处理函数,简直如虎添翼_正则表达式_06

WPS增加正则处理函数,简直如虎添翼_正则表达式_07

正则替换:

=re_replace(A1,"[A-Z0-9_\\-]+|\\(.*\\)", "")

WPS增加正则处理函数,简直如虎添翼_正则_08

下面我们测试一下正则匹配测试,需求是判断一组地址字符串中是否包含指定的关键字(任意一个都行):

=re_test(A1,"(?:葵涌|港岛|元朗|沙咀)")

WPS增加正则处理函数,简直如虎添翼_前端_09

某些情况下使用正则切割进行分列会很方便,例如字符串的分隔符是长度不确定的空白字符:

=re_split(A1,"\\s+")

WPS增加正则处理函数,简直如虎添翼_前端_10


以上是关于Excel 一个宏 多个连续按钮中可以使用。WPS中按钮的主要内容,如果未能解决你的问题,请参考以下文章

WPS增加正则处理函数,简直如虎添翼

记一次Wps_js宏开发之旅——非Excel vba vb宏

如何使用wps宏进行大批量物流跟踪

wps复选框无法使用出现checkbox

excel多个sheet表拆分成独立的excel文件

将多个 csv 文件中的数据导入一个 Excel 工作表并计算平均值