【已解决】使用_Excel_RangeFind搜索指定excel,找不到如何跳过报错
本帖最后由 jj119120 于 2022-2-22 12:55 编辑先上代码
#include <Excel.au3>
Local $oExcel
Local $bianliang = 11
$ti = "\123.xls"
$oExcel = _Excel_Open(False, False, False, False, True)
$oWorkbook = _Excel_BookOpen($oExcel, @ScriptDir & $ti)
$Q = $oExcel.activesheet.UsedRange.Rows.Count
$tin1 = _Excel_RangeFind($oWorkbook, $bianliang, "A1:A" & $Q, Default, $xlWhole) ;查找EXCEL
If @error Then
MsgBox(0, 0, "未找到")
Else
$tmzb1 = StringReplace($tin1, "$", "")
MsgBox(0, 0, $tmzb1)
EndIf
excel内容如下
使用_Excel_RangeFind搜索指定excel,找到弹出坐标,找不到会直接报错,我想让他跳过报错,弹出提示未找到,但不知道哪里错了 本帖最后由 chzj589 于 2022-2-22 11:43 编辑
查看帮助
#include <Array.au3>
#include <Excel.au3>
#include <MsgBoxConstants.au3>
; 创建应用对象并打开示例工作簿
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeFind 示例", "创建 Excel 应用对象发生错误." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Local $oWorkbook = _Excel_BookOpen($oExcel, @ScriptDir & "\Extras\_Excel1.xls")
If @error Then
MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeFind 示例", "打开工作簿发生错误 '" & @ScriptDir & "\Extras\_Excel1.xls'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
_Excel_Close($oExcel)
Exit
EndIf
; *****************************************************************************
; 查找所有匹配 "=C10*10" 公式的字符串, 精确匹配
; *****************************************************************************
Local $aResult = _Excel_RangeFind($oWorkbook, "=C10*10", "A1:G15", $xlFormulas, $xlWhole)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeFind 示例 2", "范围搜索失败." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeFind 示例 2", "查找所有匹配 "=C10*10" 公式的字符串, 精确匹配." & @CRLF & "成功完成数据搜索.")
_ArrayDisplay($aResult, "Excel UDF: _Excel_RangeFind 示例 2", "", 0, "|", "工作表|名称|单元格|值|公式|注释")
本帖最后由 skysmile 于 2022-2-22 12:23 编辑
可以尝试判定返回的数组行数,不管有没有找到,返回的都是个数组,只不过可能是个空数组,你后面的$tin1就会报错
If UBound($tin1,1)>0 Then
$tmzb1 = StringReplace($tin1, "$", "")
MsgBox(0, 0, $tmzb1)
Else
MsgBox(0, 0, "未找到")
EndIf skysmile 发表于 2022-2-22 12:11
可以尝试判定返回的数组行数,不管有没有找到,返回的都是个数组,只不过可能是个空数组,你后面的$tin1 ...
这个可以, 完美解决问题
页:
[1]