あきらめる。このマクロが機能しない理由を理解するために4時間を費やしました。For
指定されたソース範囲を取得し、ループを使用して循環し、値を別の列にコピーする必要があります。
指定された宛先セルから開始して、
- 値を入力してください
- 挿入を使用して新しい行を作成します(その列に挿入するだけでなく、行全体。既存の行セット内にデータを収めたい)
- 宛先列の終点を指定するマーカーをオーバーライドしないでください。その下に保持する必要のあるデータがあります。
理由がわからない
- プロシージャの1つのインスタンスでは、値を入力しますが、次の行を挿入するときにデータを消去します。
- 2番目の例では、行をスキップして列の終わりマーカーを消去します
私は問題に対する巧妙でエレガントな解決策を探しているのではないことに注意してください。vbaパラダイムを自分自身に教えるために、物事を本当に基本的なものに保ちたいと思っています。基本を理解するのが上手になったので、いくつかの高度なトリックを試してみます。
TIA
Sub Macro1()
Dim firstRow As Range, lastRow As Range
Dim source As Range, destination As Range
Dim readCell As Range
Set firstRow = Range("F2")
Set lastRow = Range("F20")
Set destination = Range("A21")
Set source = Range(firstRow.Address(False, False) & ":" & lastRow.Address(False, False))
For Each readCell In source
destination.Select
destination.Value = readCell.Value
If (readCell.Address(False, False) = lastRow.Offset(1, 0)) Then
Exit For
Else
'destination.Select
End If
'MsgBox (destination.Value)
destination.EntireRow.Insert Shift:=xlUp
Set destination = destination.Offset(1, 0)
Next
End Sub