我正在寻找Excel VBA代码,以便在使用名称填充选项卡2中的表时自动复制工作簿中的选项卡1

我正在寻找Excel VBA代码,以便在使用名称填充选项卡2中的表时自动复制工作簿中的选项卡1,excel,vba,Excel,Vba,需要VBA代码: 我在工作簿中有两个选项卡。表1(DIST“A”)是一个格式化的电子表格,表2(RFP)有一个表,表中有一列名为“Distributor”。当我在分发服务器列表下输入名称时,可能是1个或30个不同的网络名称,我希望VBA自动复制选项卡1,将复制的工作表重命名为我输入的任何名称,并将其发送到工作簿的末尾 这是我当前的代码,它复制了活动工作表,表2而不是表1(我需要的) 子副本重命名工作表() 将ws设置为工作表 Set wh=工作表(ActiveSheet.Name) Active

需要VBA代码:

我在工作簿中有两个选项卡。表1(DIST“A”)是一个格式化的电子表格,表2(RFP)有一个表,表中有一列名为“Distributor”。当我在分发服务器列表下输入名称时,可能是1个或30个不同的网络名称,我希望VBA自动复制选项卡1,将复制的工作表重命名为我输入的任何名称,并将其发送到工作簿的末尾

这是我当前的代码,它复制了活动工作表,表2而不是表1(我需要的)

子副本重命名工作表()
将ws设置为工作表
Set wh=工作表(ActiveSheet.Name)
ActiveSheet.Copy After:=工作表(Sheets.Count)
如果wh.范围(“A1”).值为“”,则
ActiveSheet.Name=wh.Range(“A1”).Value
如果结束
激活
端接头

除了BigBen提供的非常好的文档之外,您还可以查看

这一步一步的介绍应该更容易理解


基本上应该做以下几点:

  • 使用中代码中的“交叉”方法 教程/文档检查您的列表是否已更改
  • 检查添加的工作表是否已存在[可选]
  • 复制工作表并将其名称设置为Target.Value

  • 将以下代码放入“RFP”工作表的sheet对象中(请参阅我链接的教程)。 用经销商列表中的范围替换“A1:A3”范围。当您输入new distributor时,将弹出一个带有distributor名称的消息框

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Range("A1:A3")) Is Nothing Then
            Application.EnableEvents = False
    
    
                MsgBox (Target.Value)
    
    
            Application.EnableEvents = True
        End If
    End Sub
    

    现在,编写代码复制工作表并将其名称更改为Target.Value,基本上您只需将其替换为MsgBox。

    第一步:将
    Option Explicit
    添加到模块顶部。您先声明
    ws
    ,然后
    设置wh
    。下一步:查看事件。谢谢,我是VBA新手,所以我仍然不知道如何实现它。@Gunit继续阅读。有很多关于VBA和实现的文档,例如。
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Range("A1:A3")) Is Nothing Then
            Application.EnableEvents = False
    
    
                MsgBox (Target.Value)
    
    
            Application.EnableEvents = True
        End If
    End Sub