You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA跨工作簿调用Find方法失效及获取目标单元格列号问题

VBA问题修复方案

跨工作簿查找单元格失效问题

你的代码核心错误是With块内的Cells未加.前缀,此时Cells会指向当前活动工作表的单元格集合,而非你指定的Input Nsales.xlsx工作簿下Sheet1的单元格,因此无法正确匹配目标内容。
修正后代码如下:

Dim ra As Range
With Workbooks("Input Nsales.xlsx").Worksheets("Sheet1")
    ' Cells前加. 关联到With指定的工作表
    Set ra = .Cells.Find(What:="Basis", LookIn:=xlValues, LookAt:=xlWhole)
    If ra Is Nothing Then
        MsgBox ("Not found")
    Else
        MsgBox (ra.Address)
    End If
End With

补充说明:额外添加LookAt:=xlWhole参数是为了避免部分匹配,同时可固定Find方法的匹配规则,防止上次Excel执行Find操作遗留的参数干扰匹配结果。

获取单元格列号报错问题

你的代码错误是误用了Set关键字:Set仅用于给VBA中的对象类型(比如Range、Worksheet等)赋值,而ra.Column返回的是整数类型的列号,属于普通值类型,不需要Set修饰,直接赋值即可。
修正后代码如下:

Dim BasisCol As Integer
' 去掉Set直接赋值即可
BasisCol = ra.Column

执行后BasisCol就会存储对应列号,比如B列对应数值2,可直接用MsgBox BasisCol验证结果。

内容的提问来源于stack exchange,提问作者Raymond Yu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:24:06