Vba Excel:给定变量的查找表名称Excel

Vba Excel:给定变量的查找表名称Excel,vba,excel,Vba,Excel,我有一本包含多个项目的工作簿。每个项目都有自己的工作表。在每一张表中,都有订单编号(“OrderNub”)列 在另一张名为“主列表”的表格中,包含所有项目的所有订单号。此列表在A列中 我需要一个函数或宏来搜索我的所有工作表(条形图主列表),并在B列中显示工作表名称 以下是我在Excel中的内容: Option Explicit Function FindMyOrderNumber(strOrder As String) As String Dim ws As Worksheet

我有一本包含多个项目的工作簿。每个项目都有自己的工作表。在每一张表中,都有订单编号(“OrderNub”)列

在另一张名为“主列表”的表格中,包含所有项目的所有订单号。此列表在A列中

我需要一个函数或宏来搜索我的所有工作表(条形图主列表),并在B列中显示工作表名称

以下是我在Excel中的内容:

Option Explicit
Function FindMyOrderNumber(strOrder As String) As String

    Dim ws As Worksheet
    Dim rng As Range

    For Each ws In Worksheets
        If ws.CodeName <> "MasterList" Then
            Set rng = Nothing
            On Error Resume Next
                FindMyOrderNumber = ws.Name
            On Error GoTo 0
            If Not rng Is Nothing Then
                FindMyOrderNumber = ws.Range("A1").Value
                Exit For
            End If
        End If
    Next

    Set rng = Nothing
    Set ws = Nothing

End Function
选项显式
函数FindMyOrderNumber(strOrder作为字符串)作为字符串
将ws设置为工作表
变暗rng As范围
对于工作表中的每个ws
如果ws.CodeName为“主列表”,则
设置rng=无
出错时继续下一步
FindMyOrderNumber=ws.Name
错误转到0
如果不是,那么rng什么都不是
FindMyOrderNumber=ws.Range(“A1”)值
退出
如果结束
如果结束
下一个
设置rng=无
设置ws=Nothing
端函数

name列位于哪里?该列位于A(1)行,标题名为OrderNub.Engineer Toast。我复制并粘贴了您的代码,但不能在excel中运行。您可以将其作为公式的一部分放在单元格中。由于您声明主列表使用A列和B列,
B2
的公式是
=FindMyOrderNumber($A2)
Engineer Toast,因此我复制并粘贴了您的宏,在我的宏列表中没有选择。1) 在每个工作表中,a列中都有一个表格,标题在A1中,下有订单号。3) 我不确定代码名是什么。我编辑了这篇文章,试图做更多的解释。这是一个函数,不是一个子例程。那就意味着你没有管理它。您可以像使用任何其他内置函数一样,将其用作单元格中公式的一部分。从你的问题来看,这似乎不是一次性的需要。如果您想要一个手动运行的版本,该版本可以在所有
a:a
中循环,并在
B:B
中返回值,那么添加起来就很容易了。我将您的代码作为模块插入,然后在MasterList的B列中运行函数,没有填充任何内容。我可能把你的射程弄乱了。如果这个“OrderNub”总是在everyworksheet的A列中,您能告诉我范围(第11行)是什么样子的吗?
Option Explicit
Function FindMyOrderNumber(strOrder As String) As String

    Dim ws As Worksheet
    Dim rng As Range

    For Each ws In Worksheets
        If ws.CodeName <> "MasterList" Then
            Set rng = Nothing
            On Error Resume Next
                Set rng = ws.Columns(1).Find(strOrder)
            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
=FindMyOrderNumber($A2)