0

まず、私はVBA(またはそのことについてはVB)を使用したことがないので、それを覚えておいてください。ブックの別のシートに行をコピーしようとしています。したがって、行2の変更がsheet1で発生する場合は常に、その行をsheet2の行2にコピーする必要があります。行3がsheet1で変更されている場合、行5はsheet2で変更されている必要があります。sheet2の各行の間に空の行が必要です。この空の行の中に配置するVBAを使用して新しいテーブルを作成してみます。とにかく、Selection.Paste行でエラーが発生します。私はVBAに関する知識が非常に限られている(1時間の価値がある)ので、自分がやろうとしていることに完全に夢中になっている可能性があります。

Private Sub Worksheet_Change(ByVal Target As Range)
 'Do not worry about column headers
  If Target.Row = 1 Then Exit Sub

  'On Error GoTo ErrHandler
  Application.EnableEvents = False 'This might be necessary?

  Sheet1.Rows(Target.Row).Select
  Selection.Copy
  Sheet1.Rows(Target.Row).Copy

  If Target.Row = 2 Then
    Sheet2.Rows(Target.Row).Select
    Selection.Paste
  Else
    Sheet2.Select
    Sheet2.Rows(Target.Row + Target.Row - 1).Select
    Selection.Paste
  End If

ErrHandler:
  Application.EnableEvents = True 'This might be necessary?
End Sub

編集:に変更Selection.Pasteした後ActiveSheet.Paste、現在は機能しています。

4

1 に答える 1

2

編集:マルチエリア選択の処理を追加

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim a As Range, rw As Range
    For Each a In Selection.Areas
        For Each rw In a.Rows
            If rw.Row >= 2 Then
                rw.EntireRow.Copy Sheet2.Cells(2 + (rw.Row - 2) * 3, 1)
            End If
        Next rw
    Next a
End Sub
于 2012-07-09T19:09:07.700 に答える