在另一个工作表 VBA 上将一个单元格与另一个单元格匹配时遇到问题

时间:2021-07-27 11:55:33

标签: excel vba match

有一点问题:
我已经编写了下面的代码来匹配另一张纸上的单元格中的单元格,这样我就可以在需要的地方偏移和粘贴更多数据。但是,代码似乎只能找到工作表的顶行,而不是任何人都可以提供帮助的值的单元格?

Sub Find_select()
  
    Dim matchValue As Variant, FindCell As Long
   
    Sheets("Booking Sheet").Activate
      
    matchValue = Worksheets("Booking Sheet").Range("BE5").Value
    FindCell = WorksheetFunction.Match(matchValue, Worksheets("Data Storage").Range("A2:A10000"), 0)
    
        Sheets("Data Storage").Activate
        ActiveSheet.Cells(FindCell).Select
End Sub

1 个答案:

答案 0 :(得分:1)

为了获得想要的结果,您需要做的最小更改是:

ActiveSheet.Cells(FindCell,1).SelectActiveSheet.Cells(FindCell,"A").Select

基本上,当您使用 .cells 集合时,您需要同时指定行索引和列索引,以便 VBA 了解您指的是哪个单元格。

ActiveSheet.Cells(FindCell) 指的是索引为 FindCell 的列的第一个单元格,例如,如果 FindCell=10,那么您的代码将选择单元格 J1

话虽如此,我也会避免在没有特别需要的情况下使用 .Activate 方法和 ActiveSheet 对象,而是使用显式引用。

Dim matchValue As Variant, FindCell As Long
Dim sht1 As Worksheet, sht2 As Worksheet
Set sht1 = ThisWorkbook.Worksheets("Booking Sheet")
Set sht2 = ThisWorkbook.Worksheets("Data Storage")

matchValue = sht1.Range("BE5").value
FindCell = Application.WorksheetFunction.Match(matchValue, sht2.Range("A2:A10000"), 0)
sht2.Cells(FindCell, "A").Select

另外,我不确定您为什么要使用 .select 方法,但很可能有更好的方法可以在没有它的情况下实现相同的结果。

相关问题