如何根据单元格数据将一行数据从一个工作表复制到另一个工作表

时间:2014-02-10 20:30:18

标签: excel vba excel-vba project-management

我正在使用excel作为项目管理工具。现在我有一个包含一系列下拉菜单的大表,供用户选择谁负责项目,截止日期等。

我希望能够将整行(所有项目数据)复制到每个用户的个人页面。

说“Fred”创建一个项目并将其分配给母版页上的“Tom”,我希望Tom的工作表能够自动填充项目详细信息,所以不要滚动列表找到自己的名字,他可以点击他的选项卡位于主列表的底部,并查看他的所有项目。

我已经阅读了几个有点相似的问题,但尚未发现任何可行的问题。

作为参考,名称全部在F列中,目前有12个名称可供用户选择以分配项目;因此,母版页选项卡旁边的底部还有12个空白页/标签页。

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

此宏可能适合您 - 您需要为过滤器输入正确的列号...

必须将其放在“工作簿”代码中(不是模块 - 否则事件处理将无效)。

每次更换工作表时都会运行 - 并将最新的信息复制到项目负责人的选项卡中。如果您有“其他”工作表,您不希望这样做,您必须在代码当前测试“Master”的同一行中捕获这些工作表的名称。

为适应您的具体情况需要进行更改 - 我相信您可以处理它。

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim prjLeader As String
Dim wholeRange As Range

prjLeader = Sh.Name
If prjLeader = "Master" Then Exit Sub  ' whatever the name of the master sheet is...

On Error GoTo outtahere

Application.EnableEvents = False
Application.ScreenUpdating = False
Sh.UsedRange.Clear                     ' remove "old" information

ActiveWorkbook.Sheets("Master").Activate
Set wholeRange = ActiveSheet.UsedRange

wholeRange.AutoFilter Field:=6, Criteria1:=prjLeader  ' use the field where proj leader name is (F = 6)
wholeRange.Copy                                       ' copy all filtered data

Sh.Activate                                           ' and paste it in project leader's sheet
Range("A1").PasteSpecial

outtahere:                                 ' handle errors - back to sheet, turn events back on
Sh.Activate
Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub