以下是一个使用 VBA 查找工作表中某个字段并返回其所在行号的示例代码:
Function FindRowByColumnName(columnName As String, sheetName As String) As Long
Dim colIndex As Long
Dim rowIndex As Long
' 查找列索引号
On Error Resume Next
colIndex = Sheets(sheetName).Rows(1).Find(columnName).Column
On Error GoTo 0
' 如果找到列,则查找第一个非空单元格所在的行
If colIndex > 0 Then
rowIndex = Sheets(sheetName).Columns(colIndex).Find("*", , , , xlByRows, xlPrevious).Row
End If
' 返回结果
FindRowByColumnName = rowIndex
End Function
在上面的代码中,我们定义了名为 FindRowByColumnName 的函数,该函数接受字段名和工作表名作为参数,并查找工作表中的第一行中包含输入字段名的列,并返回该字段所在的行号。
首先,我们使用 Rows(1) 获取工作表中的第一行。然后,我们使用 Find 方法查找包含输入字段名的列,并将其索引号保存在变量 colIndex 中。注意,我们使用 On Error Resume Next 来处理没有找到列的情况。
如果成功找到列,则使用 Columns(colIndex) 获取这一列的范围,并使用 Find 方法查找第一个非空单元格,并将其所在的行号保存在变量 rowIndex 中。
最后,我们将 rowIndex 作为函数的返回值。
调用这个函数的示例代码如下
Sub Example()
' 设置要查找的字段名和工作表名
Dim columnName As String
Dim sheetName As String
columnName = "字段A"
sheetName = "Sheet1"
' 调用函数并获取返回值
Dim rowIndex As Long
rowIndex = FindRowByColumnName(columnName, sheetName)
' 在窗体中显示结果
MsgBox "字段 " & columnName & " 所在行号为:" & rowIndex
End Sub
在上面的代码中,我们首先设置要查找的字段名和工作表名。然后,我们调用 FindRowByColumnName 函数,并将返回的结果保存到 rowIndex 变量中。最后,我们使用 MsgBox 函数在窗体中显示结果。