我正在使用excel作为项目管理工具。现在我有一个包含一系列下拉菜单的大表,供用户选择谁负责项目,截止日期等。
我希望能够将整行(所有项目数据)复制到每个用户的个人页面。
说“Fred”创建一个项目并将其分配给母版页上的“Tom”,我希望Tom的工作表能够自动填充项目详细信息,所以不要滚动列表找到自己的名字,他可以点击他的选项卡位于主列表的底部,并查看他的所有项目。
我已经阅读了几个有点相似的问题,但尚未发现任何可行的问题。
作为参考,名称全部在F列中,目前有12个名称可供用户选择以分配项目;因此,母版页选项卡旁边的底部还有12个空白页/标签页。
感谢您提供的任何帮助!
答案 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