提问者:小点点

使用VBA根据文件名查找行号


我想写一个代码,让VBA找到当前打开的文件名,然后查找excel工作表,找到具有完全相同值的单元格。由于文件类型是. dgn类型,我尝试使用FileSystemObject。但是我被困在如何编写它来读取当前打开的文件名上。

找到匹配的单元格后,我想执行该单元格的行号。

祝好


共1个答案

匿名用户

我假设“当前打开的文件名”是指VBA代码所在的工作簿的名称。

此外,假设您的数据存储在名为“Sheet1”的工作表中。对于此示例,数据范围如下所示:

Option Explicit

Private Sub Answer()

    ' Get the name of this document
    Dim DocumentName As String
    DocumentName = ThisWorkbook.Name
    
    ' Search for the name of the document in the range
    Dim MyRange As Range
    Set MyRange = ThisWorkbook.Sheets("Sheet1").Range("A1:A4")

    Dim CellAddress As String
    CellAddress = FindCell(CellRange:=MyRange, SearchContent:=DocumentName)
    
    ' Output the result as a message
    MsgBox "The first cell with " & DocumentName & " in it is at " & CellAddress

End Sub


Private Function FindCell(CellRange As Range, SearchContent As String) As String

    ' Return the cell address of the first cell found in CellRange that has
    ' CellContent in it
    
    ' Iterate through the range
    Dim Cell As Variant
    For Each Cell In CellRange
    
        If Cell.Value = SearchContent Then
        
            FindCell = Cell.Address
            Exit Function
        
        End If
    
    Next Cell

End Function

我创建了一个名为FindCell的函数,它返回与我们正在搜索的数据匹配的范围内第一个单元格的单元格地址。在本例中,我们正在搜索具有此工作簿名称的第一个单元格(我称之为“Book1”)。

正如其他用户所指出的,当您提出问题时,请包含更多细节。我不得不做一些大的假设来把这个例子放在一起。