有一点问题:
我已经编写了下面的代码来匹配另一张纸上的单元格中的单元格,这样我就可以在需要的地方偏移和粘贴更多数据。但是,代码似乎只能找到工作表的顶行,而不是任何人都可以提供帮助的值的单元格?
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
答案 0 :(得分:1)
为了获得想要的结果,您需要做的最小更改是:
ActiveSheet.Cells(FindCell,1).Select
或 ActiveSheet.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
方法,但很可能有更好的方法可以在没有它的情况下实现相同的结果。