将行组转移到其他行组中

时间:2018-06-22 15:35:18

标签: excel vba excel-vba

我正在使用Excel中的项目管理模板(我知道Microsoft Project存在,但是公司不需要Project的所有功能)。基本上,工作表的格式如下

  1. 项目1的标题
    任务1
    任务2等。
  2. 项目2的标题
    任务1
    任务2等。

当然,其他列提供了诸如完成百分比,开始和结束日期之类的详细信息,而其余列则具有条件格式,突出显示了项目进度。

我正在尝试添加一个宏,该宏使用户可以上下移动项目行及其子任务行,从而对项目进行优先级排序。例如,如果第二个项目现在应该是第一个项目,则用户可以单击一个按钮,该按钮将使单元格向上或向下移动所需的数量。我看到了另一个可以解决的问题:move range of rows down in vba提供的编码如下:

Sub MoveRowsDown()
Dim NumRows As Long
Dim TargetRow As Long
Dim ws As Excel.Worksheet

NumRows = 7 'change as necessary
TargetRow = 33 'change as necessary
Set ws = ActiveSheet ' change as necessary

ws.Range("A1").Resize(NumRows).EntireRow.Cut
ws.Range("A" & TargetRow + NumRows).EntireRow.Insert shift:=xlDown
End Sub

这几乎对我有用,除了我需要将NumRows和TargetRow设置为变量,这些变量根据每个项目及其子任务所属的行数而改变。项目1可能总计4行(其中一个项目标题包含3个子任务),而项目2可能总计6行。因此,变量将根据我要向下移动Project 1还是向上移动Project 2来改变。

我试图找到一种将命名范围添加到每个项目及其子任务的方法,然后尝试使用这些范围以某种方式确定NumRows和TargetRow的适当值,但这就是我要得到的卡住。赞赏可以提供的任何建议或技巧。

0 个答案:

没有答案