首页 > 解决方案 > VBA - 在另一个文件中寻找行号

问题描述

我正在尝试在与我运行代码的位置不同的封闭文件中找到包含特定值的单元格。一旦我找到它,我想接收所述单元格的行号。不知何故,我的代码不起作用。这是我在这个网站上找到的东西和我自己编码的东西的混合物。任何帮助都会很棒!

    Dim file_dir As Workbook
Set file_dir = Workbooks.Open("PATH.xlsx")

Dim j As Integer
Dim n As Integer
Dim temp As Range

n = file_dir.ActiveSheet.Cells(file_dir.ActiveSheet.Cells.Rows.Count, "A").End(xlUp).Row

Set temp = file_dir.ActiveSheet.Range("A1:A" & n).Find(what:="LOOKUP_VALUE")
j = temp.Row

MsgBox j

标签: excelvba

解决方案


欢迎来到 Stack Overflow,我可以看到你是一个初学者,所以我想我会展示一种不同的方法来解决这个问题。您需要学习数据类型和返回的函数,所以我认为与其使用嵌套函数等,不如从更简单的代码开始,然后您可以通过使其运行得更快等来使其更复杂。看来您的价值是在 A 列中,而不是FIND仅使用循环并将其与您的lookup_value. 确保lookup_value在例程中给出一个真实的值:

Sub Main()
    Dim bValueFound As Boolean
    Dim j As Integer
    Dim n As Integer
    Dim temp As Range
    Dim WS As Worksheet
    Dim file_dir As Workbook

    Set file_dir = Workbooks.Open("PATH.xlsx")
    Set WS = file_dir.ActiveSheet
    n = WS.Cells(WS.Cells.Rows.Count, "A").End(xlUp).Row

    Set temp = file_dir.ActiveSheet.Range("A1:A" & n)

    For j = 1 To n
        If WS.Cells(j, 1).Value = LOOKUP_VALUE Then
            bValueFound = True
            Exit For
        End If
    Next j

    If bValueFound Then
        MsgBox "The row is " & j
    Else
        MsgBox "Lookup value was not found"
    End If

End Sub

推荐阅读