如何使用VBA更改数据的源单元格?

时间:2019-09-18 15:11:34

标签: excel vba

工作表“ ABC-01”上的单元格值是从同一工作簿中“员工”工作表上的单元格“ B2”中提取的。 使用VBA,我希望将以编程方式创建的新工作表的“ B2”单元格引用更改为“ X”-其中“ X”是在创建过程中选择的行(如果可以的话)。


我有一本工作簿,用于记录员工的工作时间。 在“员工”工作表的A列中,包含唯一的员工编号,在B,C,D等列中,包含其姓名,地址,电话等。“员工”工作表用作源数据。

每个员工在工作簿中都有一个单独的工作表(约160名员工),该工作表将作为“出勤卡”,以记录工作时间。该工作表将根据其唯一的员工编号来命名。

为了减少错误并尽可能地实现自动化,我希望执行以下操作:

  1. 在“员工”工作表上,在A列中选择一个包含唯一员工编号的单元格
  2. 运行宏/ VBA代码以复制“模板”工作表(其中包含考勤卡模板),并使用在运行宏时选择的唯一员工编号对其进行命名(因此,将创建新的考勤卡工作表用于一个员工)。
  3. 在考勤卡标题中具有数据,显示正确员工的详细信息(从“员工”工作表中拉出)。

到目前为止我所拥有的:

我有第一部分和第二部分工作。 这是我在网上找到的代码-

Public Sub CopyTemplateAndRename()

    Dim newName As String
    On Error Resume Next
    newName = InputBox("Enter the name for the copied worksheet", "Copy worksheet", ActiveCell.Value)
    If newName <> "" Then
        Worksheets("Template").Copy Before:=Worksheets("Template")
        On Error Resume Next
        ActiveSheet.Name = newName
    End If

End Sub

这似乎很好,并且允许我为员工创建新的工作表(从模板复制),并将新工作表重命名为“ ABC-01”(或在工作表中选择的唯一员工编号)员工工作表)


但是,问题出在第3部分。

创建考勤卡模板时,显示员工姓名,地址等的单元格将从“员工”工作表上的第一位员工中拉出,因为这是用于测试的内容。

例如,考勤卡工作表上“ John Appleseed”的单元格D4带有=Employees!B2来显示他的名字。

但这对其他员工不利。在为另一位员工创建新工作表时,我需要更改源单元格。

因此,在“雇员”工作表上的160名雇员的列表中,如果我选择单元格A23,其中包含雇员'John Doe'的唯一雇员编号“ DOE-01” ..我需要将单元格D4更改为{创建新的John Doe的考勤卡工作表中的{1}}。

这怎么办?我很高兴继续使用VBA(我认为这是要走的路),但是我是VBA的初学者,可能需要一些帮助。 感谢您的帮助。

0 个答案:

没有答案