0

Excel 2007 を使用しています。9 つの列があります。

  1. 列 A はカウンター (+1)
  2. 列 B から E は手動データ入力です
  3. 列 F は親の検証です
  4. 列 G は F の子検証です
  5. 列 F がレイアウトを選択し、列 H が列 G の Vlookup であり、
  6. 列 F で Routing を選択した場合、列 J は列 G の Vlookup です。

現在の行 (最後の行) をコピーして 1 行下に挿入し、B 列から E 列の内容をクリアするボタンに割り当てられたマクロを作成しました。

コピー中に列 F の親を 3 つの選択肢 (Not_Started、Layout、Routing) の Not_Started にリセットする方法を探しています。

以下は現在のマクロです。

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
4

1 に答える 1

1

選択するとコードが遅くなり、削除するとコードが高速になり、保守が容易になります。

私の理解が正しければ、アクティブな細胞株、列 F に Not Started を表示する必要があります。新しい行にそれを入れたい場合は、行を変更します

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

于 2012-09-24T16:17:10.633 に答える