weixieyang 发表于 2022-4-1 13:46:08

判断剪切板为空时问题

从Excel中复制单元格到其它程序。当检测到的剪切板为空(无内容)时,则退出循环,并退出程序。
但判断剪板板为空条件总是不成立?

Local $aa=0
Do
Send("{CTRLDOWN}c{CTRLUP}")
Local $sData = ClipGet()
Sleep(1000)
$sData = ClipGet()
If $sData="" Then   ;尝试了error=1,$sData=''均不行
        ExitLoop
        ExitProgram()
Else
;执行程序
Send("{CTRLDOWN}a{CTRLUP}")
Sleep(500)
ClipPut($sData)
Send($sData)
Sleep(500)
...
$aa=$aa+1
Until $aa=100
EndIf


afan 发表于 2022-4-1 14:04:54

如无清空剪贴板的操作,剪贴板始终会保留上次的数据,当然不为空。你不会认为随意按下ctrl-c就能清空吧?ClipPut('') 一次就清空了。
BTW, 第9行永远不会执行到

weixieyang 发表于 2022-4-1 14:11:56

afan 发表于 2022-4-1 14:04
如无清空剪贴板的操作,剪贴板始终会保留上次的数据,当然不为空。你不会认为随意按下ctrl-c就能清空吧?Cl ...

也就是说复制空时,还会保留上一次内容么。。。
当复制到Excel单元格为空时,则退出循环,那怎么判断呢?

afan 发表于 2022-4-1 14:24:05

试试 If StringRegExp($sData, '^\v*$') Then

weixieyang 发表于 2022-4-1 15:12:41

afan 发表于 2022-4-1 14:24
试试 If StringRegExp($sData, '^\v*$') Then

可以用的。
TKS~~~

chzj589 发表于 2022-4-1 15:13:39

weixieyang 发表于 2022-4-1 14:11
也就是说复制空时,还会保留上一次内容么。。。
当复制到Excel单元格为空时,则退出循环,那怎么判断呢 ...

为何不在读取Excel单元格时判断?

weixieyang 发表于 2022-4-1 15:46:41

chzj589 发表于 2022-4-1 15:13
为何不在读取Excel单元格时判断?

我不是用的自定义的函数 读取Excel 方式,是先前端打开excel,再复制、粘贴到别的程序的。

chzj589 发表于 2022-4-1 15:57:19

weixieyang 发表于 2022-4-1 15:46
我不是用的自定义的函数 读取Excel 方式,是先前端打开excel,再复制、粘贴到别的程序的。

复制之前读取就判断是否空格

weixieyang 发表于 2022-4-1 16:00:23

chzj589 发表于 2022-4-1 15:57
复制之前读取就判断是否空格

复制之前判断不了,打开excel,执行选中,复制...下一个单元格再选中...复制
选中的时候判断不了内容是不是空

chzj589 发表于 2022-4-1 16:25:01

weixieyang 发表于 2022-4-1 16:00
复制之前判断不了,打开excel,执行选中,复制...下一个单元格再选中...复制
选中的时候判断不了内容是 ...

你是说某列中有数据也有空格?不是一个单元格?

weixieyang 发表于 2022-4-1 16:29:31

chzj589 发表于 2022-4-1 16:25
你是说某列中有数据也有空格?不是一个单元格?

是单元格。需要检测单元格为空,但只选中时无法判断,只有复制后,我才能考虑判断是否为空。
这样循环读取某一列的单元格,直到单元格为空时退出。

chzj589 发表于 2022-4-1 17:25:16

weixieyang 发表于 2022-4-1 16:29
是单元格。需要检测单元格为空,但只选中时无法判断,只有复制后,我才能考虑判断是否为空。
这样循环读 ...

不知你是怎样读取的?
用_Excel_RangeRead读取后,再循环判断
页: [1]
查看完整版本: 判断剪切板为空时问题