$oExcelApp=ObjGet("","excel.application")这句,如果我同时打开了1.xls和2.xls(是手动打开的),但是我只想对1.xls操作,需要怎么写呢?谢谢~~ $o_Workbook1=$oExcelApp.workbooks("1.xls")然后对$o_Workbook1操作即可。 问题解决了一个,又发现一个,唉~~
今天试到一个奇怪的问题-------------用下面这段程式在excel中查找字符串,excel中有很多合并了的单元格(被查的字符也在此合并的单元格内):
1.如果该字符串在excel中出现了2次以上,则程式正常执行
2.如果该字符串在excel中仅出现了1次,则提示 Until $oR.address=$oRng.address不能被执行。试了下,发现是$oR=.usedrange.findnext($oR)出的问题,.usedrange.findnext($oR)找不到。
3.如果是在普通excel中(没有合并项)中查找,则不会出现以上问题
不懂为什么会这样~~Func searchcell($sFindValue)
With $oExcel
$oRng=.usedrange.find($sFindValue)
If IsObj($oRng) Then
$oR=$oRng
Do
MsgBox(0,"GetColor",$oR.interior.color)
$oR=.usedrange.findnext($oR)
Until $oR.address=$oRng.address
EndIf
EndWith
MsgBox(0,"END","END")
EndFunc 这个感觉挺有用的 回复 15# kevinch
看出来了,你是个高人,还是个热心人,有你是AU3论坛的福气! 回复 21# xms77
我是吹水的高人,au3学得很菜的。 回复 19# SHINE
在excel中,findnext默认会从指定位置开始一直向后找,当找不到时会回到开始继续找,这样就会形成最开始找到并记住的位置与现在位置一样,从而达到退出条件成立,你说的情况我似乎没遇到过,对于合并单元格是不会影响到find的,因为find找到的是合并区域左上角单元格的位置。 高手都喜欢谦虚的哈,呵呵 向你学习致敬。 回复 23# kevinch
附件是试到的情况,如果被查询的字符串不在合并单元格里面,看起来就没问题,可是如果在的话,就报错,如附件图片~~ 虽然不知道是怎么一回事,不过还是用kevinch在其他帖子中提到的,将合并项解开的方式把这个问题给绕过去了~~谢谢kevinch~~
嗯,不过还是希望找一个好的解决方式~~期待中~~Func searchcell($sFindValue)
With $oExcel
$oRng=.usedrange.find($sFindValue)
If IsObj($oRng) Then
$oR=$oRng
Do
If $oR.mergecells=True Then
$oR.select
$oR.parent.parent.parent.selection.unmerge
$oR.parent.parent.parent.selection.cells.value=$oR.value
EndIf
$adress=$oR.offset(1,0).address;在我所需要操作的excel里面,不会出现上下两个连续单元格的值一样的情况,解组合之后也只需要其中一个
MsgBox(0,"GetColor",$oExcel.name&@TAB&$oR.address&@TAB&$oRng.address)
$oR=.usedrange.findnext($oR)
If $oR.offset.address=$adress Then
$oR=.usedrange.findnext($oR)
EndIf
Until $oR.address=$oRng.address
EndIf
EndWith
EndFunc Func searchcell($sFindValue)
With $oExcel
$oRng = .usedrange.find($sFindValue)
If IsObj($oRng) Then
$oR = $oRng
Do
MsgBox(0, "GetColor", $oExcel.name & @TAB & $oR.address & @TAB & $oRng.address)
$oR = .usedrange.findnext($oR)
If Not IsObj($oR) Then ExitLoop
Until $oR.address = $oRng.address
EndIf
EndWith
EndFunc ;==>searchcell确实与vba有差别,要多加个判断。 谢谢kevinch ! 这样好用多了~~
If Not IsObj($oR) Then ExitLoop
我之前用msgbox看$oR=.usedrange.findnext($oR)的值,看到是空,但是不知道要用什么语句来判断~~ 追问高手:找到一个结果后,如何操作该行?我想要的是删除这一行或选定这一行复制到另一个表中
页:
1
[2]