带有下拉选择的vb复制线

时间:2012-09-24 16:01:38

标签: excel vba excel-vba

我正在使用Excel 2007.我有9列:

  1. A栏是计数器(+1)
  2. B栏到E栏是手动数据输入
  3. F列是父级验证
  4. G列是F
  5. 的子验证
  6. 当列F选择布局和
  7. 时,列H是列G的Vlookup
  8. 当列F选择路由时,列J是列G的Vlookup。
  9. 我创建了一个分配给按钮的宏,该按钮复制您所在的行(最后一行)并将其向下插入1行并清除B列到E的内容。

    我正在寻找一种方法在复制期间将列F F parent重置为3个选项的Not_Started :( Not_Started,Layout,Routing)。

    以下是当前的宏。

    Sub Copy_1_Line()
        Application.EnableEvents = False
        Rows(ActiveCell.Row).Select
        Selection.Copy
        Rows(ActiveCell.Row + 1).Select
        Selection.Insert Shift:=xlDown
        ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
        ActiveCell.ClearContents
        ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
        ActiveCell.ClearContents
        ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
        ActiveCell.ClearContents
        ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
        ActiveCell.ClearContents
        ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
        Application.EnableEvents = True
        Application.CutCopyMode = False
    End Sub
    

1 个答案:

答案 0 :(得分:1)

选择会降低您的代码速度,删除它们会加快代码速度并使其更易于维护。

如果我理解正确,您需要活动细胞系,列F显示未开始。如果您希望新行具有该行,请更改行

Cells(ActiveCell.Row, "F") = "Not_Started"

Cells(ActiveCell.Row+1, "F") = "Not_Started"

这是我的建议:

Sub Copy_1_Line()
Application.EnableEvents = False

Rows(ActiveCell.Row).Copy Rows(ActiveCell.Row + 1)
Cells(ActiveCell.Row + 1, 2).Resize(1, 4).ClearContents
Cells(ActiveCell.Row, "F") = "Not_Started"

Application.EnableEvents = True
Application.CutCopyMode = False
End Sub