【问题标题】:How to set a Range variable using .Find?如何使用 .Find 设置 Range 变量?
【发布时间】:2019-11-30 16:30:53
【问题描述】:

我正在尝试使用.Find 函数将范围变量“rcell”设置为等于包含变量“lot”值的单元格的范围。

我想搜索特定范围(D 列)而不是所有单元格。

我收到类型不匹配错误。

我尝试使用“Columns(4)”而不是“Range(D:D)”。

Workbooks("lotworkbook.xlsx").Activate
Sheets("Sheet1").Select
lot = Cells(row, 3)
Workbooks("findworkbook.xlsx").Activate
Sheets(3).Select
            
Dim rcell As Range
Set rcell = Range("D:D").Find(What:=lot, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False) 'this is the line with issues'
            
If rcell Is Nothing Then

Else

' ...

预期结果:在某个工作表中找到具有变量“lot”值的单元格,并在另一个工作表上找到该值,并将范围变量“rcell”设置为等于该单元格位置。

实际结果:类型不匹配错误。这适用于Cells.Find,但不适用于Range("D:D").Find

【问题讨论】:

  • row 定义在哪里?
  • @Warcupine 仍然出现类型不匹配。 Cells.Find 工作正常,但在我将其调整为仅在 Range("D:D") 中搜索后,我收到类型不匹配错误。
  • @cybernetic.nomad 行在前面的代码中定义为整数。在我将其更改为仅在 Range D 中搜索之前,该代码运行良好
  • 是的,我总是忘记没有设置它默认为.value my bad

标签: excel vba macos


【解决方案1】:

相信问题是After:=ActiveCell - 删除它并重试:

Dim rcell As Range
Set rcell = Range("D:D").Find(What:=lot, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False) 'this is the line with issues

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 2022-12-19
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多