2017-06-22 19 views
-1

セルA1とA3にはデータがあります。セルA2に新しいデータを挿入すると、A2とA3の間に新しい行が挿入されるので、A3は常に下部に残ります(A4などに移動されます)。 私はどこにでも見えましたが、私が見つけたのは、挿入物の必要性が異なることでした。前もって感謝します。データ間に新しい行を挿入する

+0

あなたはコードが必要な場合は、手動でそれを行う一方で、マクロの記録をしてみてください。それはあなたにいくつかのコードを提供します。 – braX

+1

これまでVBAコードを表示しています。 –

+1

最初に最後に使用された行番号を見つけます。ネット上で何千もの例があります。列Aにデータを追加する必要がある場合は、最後に使用された行番号に新しい行を挿入します。これにより、最後の行が次の行番号にプッシュされ、最後に使用された行番号だったが最後に使用された行の次の行に新しいデータを入れることができます。 –

答えて

0

おかげで誰も、私はいくつかの小さな変更でそれをやった:

Dim LastRow As Long 
    With ActiveSheet 
     LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
    End With 
    ActiveSheet.Range("A" & LastRow).Select 
    Selection.Offset(1, 0).EntireRow.Insert 
End Sub 
1

これはかなり一般的な問題であり、ループによって解決されます。

あなたは例えば、あなたのループ機能のステップを指定する必要があります。:

For i = 100 to 2 Step -1 

'Code... soemthign like If Cells(i,1).Value>0 Then Rows(i).EntireRow.Insert End If 

Next i 

これは下降ラインの問題を取り除く逆の順番になります。

また、最後の行を動的にすることもできます(コードを見つけるために残しておきますが、通常はGoogleの高速検索で表示されます)。 Forステートメントは、次のようになります。

Dim LR as Long 
LR = 'dynamic code 
For i = LR to 1 Step -1 
'Code 
Next i 
1

あなたの意見を読んでみると、あなたはworng ball parkではないことがわかります。おそらく最後に使用された行を見つけるための十数の方法があります。ここにカップルがあります:

LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
LastRow = ActiveSheet.Cells(1048576, 1).End(xlUp).row 
LastRow = ActiveSheet.Columns("A").Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).Row 

ここでは、このタスクを実行するコードを示します。

Sub tester1() 
Dim LastRow As Long 

    With ActiveSheet 
     LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
    End With 

    ActiveSheet.Range("A" & LastRow).Select 
    Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove 
    ActiveSheet.Range("A" & LastRow).Value = "Done!" 

End Sub 
関連する問題