可以

随便聊聊 · 518 次浏览
湘喑 创建于 2022-04-17 23:00

是先复制了一个相同大小的合并区域,然后用格式刷实现的么


weinan 2022-04-17 23:02 :

是的

湘喑 回复 weinan 2022-04-18 09:20 :

https://wwb.lanzouq.com/irj4W03drb7c

因为WPS自带合并单元格筛选的功能了,所以没写过这个动作,刚刚帮你写了一个VBS脚本,你测试看下可以用不,选中合并单元格后双击运行VBS脚本就可以了。也可以在脚本上右键然后用记事本打开,复制里面的代码,然后在QUICKER中添加一个运行脚本的模块,将代码粘贴进去,设置好脚本参数,以后就可以用QUICKER运行这个代码了

weinan 回复 湘喑 2022-04-18 11:06 :

刚试了下好像在excel还不行,运行完是空值,应该哪步有问题,麻烦大佬再帮看看

湘喑 回复 weinan 2022-04-18 11:11 :

运行完是空值是什么意思,最好截图加文字说明情况,我在WPS试了可以的呀,运行完后合并单元格里已经有值了,

例如图上,B5:B6是一个合并单元格,通常B6是没有值的,运行完脚本后,测试B6已经有值了。

weinan 回复 湘喑 2022-04-18 22:37 :

大佬   这是我的操作步骤,不知道是哪步错了

weinan 最后更新于 2022-04-18 22:39
weinan 2022-05-06 20:08 :

大佬 你好 我想请教下 我在quicker里用脚本VBA ,提示这个,但是我写的在表里能正常运行,是为啥呢。比如我写的一个删除筛选行:Sub 删除本期历史数()

Application.Calculation = xlCalculationManual

Application.ScreenUpdating = False

Application.DisplayAlerts = False

Dim sht, rng

On Error Resume Next

Set sht = Sheets("2022年收入成本")

    sht.UsedRange.AutoFilter field:=4, Criteria1:=Sheets("跟进报表").Range("a1")

    Set rng = sht.Range("a2:a" & sht.UsedRange.Rows.Count).EntireRow.SpecialCells(xlVisible)

    rng.Delete

sht.UsedRange.AutoFilter

sht.Range("c1048576").End(xlUp + 1).Select

Application.ScreenUpdating = True

Application.DisplayAlerts = True

End Sub



湘喑 回复 weinan 2022-05-06 21:51 :

不好意思,没收到系统的回复通知,一直没看到你这个。你把脚本编码类型改为unicode试试,还有问题就在代码前面加插值符$$试试

湘喑 回复 weinan 2022-05-06 21:51 :
Vba代码不能简单复制到vbs的,因为vba是依附于excel程序的,可以直接调用application,vbs就不行
湘喑 最后更新于 2022-05-06 21:53
weinan 回复 湘喑 2022-05-06 23:36 :

那要注意什么哈  或者哪里有区分说明或教程不

湘喑 回复 weinan 2022-05-06 23:40 :

几句话说不清,我改天抽空写一个教程吧,这几天太忙

weinan 回复 湘喑 2022-05-07 07:45 :

好的,谢谢

湘喑 回复 weinan 2022-05-07 14:15 :

Dim application

Set application = GetObject(,"excel.application")


Application.Calculation = -4135

Application.ScreenUpdating = False

Application.DisplayAlerts = False

Dim sht, rng

On Error Resume Next

Set sht = application.activeworkbook.workSheets("2022年收入成本")

    sht.UsedRange.AutoFilter 4, application.activeworkbook.workSheets("跟进报表").Range("a1")

    Set rng = sht.Range("a2:a" & sht.UsedRange.Rows.Count).EntireRow.SpecialCells(12)

    rng.Delete

sht.UsedRange.AutoFilter

sht.Range("c1048576").End(3).Select

Application.ScreenUpdating = True

Application.DisplayAlerts = True


Set application = Nothing

weinan 回复 湘喑 2022-05-08 18:07 :

谢谢大佬,可以用了,现在我会一点VBA ,然而网上搜了VBA代码和VBS的区别,好像都没怎么讲到,想快速把VBA的代码调整为VBS的,大佬有相应的教程吗,或者见过的网络资源

湘喑 回复 weinan 2022-05-08 18:30 :

没教程的,我都是自己摸索的,这几天实在太忙,有空了我整理一下

weinan 回复 湘喑 2022-05-08 18:31 :

好的,感谢

weinan 回复 weinan 2022-05-12 23:23 :

大佬您好,感谢你启发了我,看了你的脚本,我一开始以为就是VBA,就去学了VBA,发现VBA能解决不少重复性工作的问题,然后又发现你的实际是VBS,通过getobject调用excel来实现,你的代码我基本都看得懂了,最初合并单元格的脚本用的excel确实有问题,可能在wps可以使用,然后我在VBA里改写了下,VBA可以实现了,我又学着你的VBS添加调用,到第12行 sheets.add after:=sheets(sheets.count).这个语法好像VBS不支持,然后还有-4122这个VBS好像也不支持,测试了好几次。确实还是不太懂VBA 和VBS 再哪些语法有区别,网上也没搜到,烦请指教。Dim Application, sh, Rng

Set Application = GetObject(, "excel.application")

On Error Resume Next

Set Rng = Application.Selection

If Rng.Rows.Count = 1 Then WScript.Quit

arr = Rng.Value

For i = 2 To UBound(arr)

  If arr(i, 1) = "" Then arr(i, 1) = arr(i - 1, 1)

Next

Application.ScreenUpdating = False

Application.DisplayAlerts = False

Set sh = Application.Sheets.Add(after:=Sheets(Sheets.Count))

Rng.Copy sh.Range("a1")

Set rng2 = sh.Range("a1").CurrentRegion

Rng.UnMerge

Rng.Value = arr

rng2.Copy

Rng.PasteSpecial -4122

sh.Delete

Application.ScreenUpdating = True

Application.DisplayAlerts = True

Set Application = Nothing

Set sh = Nothing

Set Rng = Nothing

weinan 最后更新于 2022-05-13 18:20
湘喑 回复 weinan 2022-07-27 10:13 :

VBS里不能直接写参数名:=参数值 这种,也无法识别VBA的固定参数,如xlPasteFormats,VBA可以识别,但VBS不行,只能识别xlPasteFormats代表的参数值,即-4122

湘喑 回复 weinan 2022-07-27 11:33 :

https://getquicker.net/QA/Question/12629我总结了一些,你 可以参考一下

weinan 回复 湘喑 2022-07-27 11:59 :

好的好的,感谢

回复内容
暂无回复
回复主贴