我有一个工作簿,在许多不同的列(20+)中有许多订单号。每列都有一个不同的标题(列名),可以在第一行中找到。
在另一张纸上,我将把所有订单编号编译到A栏。在B栏中,我将填写每个订单号的列名称(标题)。
下面的代码将为我提供一个返回工作表名称的功能。在第14行,我尝试改变w。标题到标题,但它不起作用。
Option Explicit
Function FindMyOrderNumber(strOrder As String) As String
Dim ws As Worksheet
Dim rng As Range
Application.Volatile
For Each ws In Worksheets
If ws.CodeName <> "Sheet3" Then
Set rng = Nothing
On Error Resume Next
Set rng = ws.Cells.Find(What:=strOrder, LookAt:=xlWhole)
On Error GoTo 0
If Not rng Is Nothing Then
FindMyOrderNumber = ws.Name
Exit For
End If
End If
Next
Set rng = Nothing
Set ws = Nothing
End Function
答案 0 :(得分:0)
根据您的描述,您似乎希望返回与您传入此功能相同的价值......
如果您的意思是要返回找到标题的列字母,请编辑以下行:
'On Error Resume Next 'don't need this...
Set rng = ws.Rows(1).Find(What:=strOrder, LookAt:=xlWhole)
'On Error GoTo 0
If Not rng Is Nothing Then
FindMyOrderNumber = Replace(rng.Address(False, False),"1","")
Exit For
End If
编辑:要返回标题下方单元格中的值:
'On Error Resume Next 'don't need this...
Set rng = ws.Rows(1).Find(What:=strOrder, LookAt:=xlWhole)
'On Error GoTo 0
If Not rng Is Nothing Then
FindMyOrderNumber = rng.Offset(1,0).Value
Exit For
End If
答案 1 :(得分:0)
FindMyOrderNumber = ws.Cells(1, rng.Column)