我有 2 个代码。一个工作完美无缺,而另一个几乎完全相同,则不然。
你能指出我哪里错了吗?
工作 - 测试代码以使其正常工作
wbPath := A_Desktop "\Test File AHK.xlsx"
xl := ComObjGet(wbPath)
^+F1::
{
xl.Sheets(1).Range("A:A").Find(3).Offset(0,3).Value := ComObjActive("Excel.Application").ActiveCell.Value ; Works
}
不工作 - 我想使用的实际代码
wbPath := A_Desktop "\INVOICING SHEET.xlsx"
xl := ComObjGet(wbPath)
!+x::
{
title := WinGetTitle("A") ; Works
UniqueRef := Trim(SubStr(title,1,InStr(title," (")-1)) ; Works
msgbox ComObjActive("Excel.Application").ActiveCell.Value ; Works
xl.Sheets(1).Range("A:A").Find(UniqueRef).Offset(0,11).Value := ComObjActive("Excel.Application").ActiveCell.Value
}
上下文:我的目标是检索当前文档(作品)标题中的唯一引用,在外部工作表中查找位置并在我正在使用的工作表中输入 ActiveCell 的值。
在代码 2 中,ActiveCell 部分可以工作,但它只是不允许我使用偏移量,即使它在代码 1 中很好。特别是这一行:
xl.Sheets(1).Range("A:A").Find(UniqueRef).Offset(0,11).Value
错误:
所有路径均已检查且正确。我的 Excel 工作表或 Office 版本(完整付费版本 - Office 2021)没有任何问题。
非常感谢任何帮助!
如果
xl.Sheets(1).Range("A:A").Find(UniqueRef)
没有发现任何问题,就会出现问题。
通常应通过以下方式完成:
' VBA
Set a = xl.Sheets(1).Range("A:A").Find(UniqueRef)
if Not a Is Nothing Then x = a.Offset(0,11).Value