2017-04-26 10 views
0

私のユーザーフォームは、フォームに新しい日付を入力するたびに同じ行を上書きし続けます.iデータを行( "A6")などに挿入したい等々。私はシートに日付を書くために使用しているコードです。私のユーザーフォームを次の行にデータを挿入する方法

Private Sub Commandok_Click() 
Dim RowCount As Long 

RowCount = Worksheets("Sheet3").Range("A1").Offset(5).CurrentRegion.Rows.Count 
' Write data to worksheet 
    With Worksheets("Sheet3").Range("A1") 
    .Offset(RowCount, 0).Value = Me.task_done.Value 
    .Offset(RowCount, 1).Value = Me.task_name.Value 
    .Offset(RowCount, 2).Value = DateValue(Me.task_date.Value) 
    .Offset(RowCount, 5).Value = Me.task_note.Value 
    .Offset(RowCount, 6).Value = Me.task_additional.Value 
End With 

End Sub 

Current screenshot

+0

セルA6を含む領域はどの行から始まりますか? – YowE3K

答えて

1

編集:

単に最後の行を取得するためにこれを使用する:あなたのスクリーンショットから判断

RowCount = Worksheets("Sheet3").Range("A" & Worksheets("Sheet3").Rows.Count).End(xlUp).Row 
+0

それは動作していない、それはあなたの調整でも同じセルに書き込みを続けます。 –

+0

@ ObedLorisson - セルA6を含む領域はどの行から始まりますか?わからない場合は、「?Worksheets( "Sheet3")。Range( "A1")。Offset(5).CurrentRegion.Addressをイミディエイトウィンドウに入力し、表示される範囲を教えてください。 – YowE3K

+0

@ ObedLorissonまた、現在の領域の下に新しい行を書きたいのですか、または列 "A"の最初の空白を含む行に置き換えたいだけですか? – YowE3K

0

(というよりも、あなたの電流によって示唆されているものをでコード)、私はあなたが望むと思います:

Private Sub Commandok_Click() 
    Dim NewRow As Long 

    With Worksheets("Sheet3") 
     NewRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 
     ' Write data to worksheet 
     .Cells(NewRow, "A").Value = Me.task_done.Value 
     .Cells(NewRow, "B").Value = Me.task_name.Value 
     .Cells(NewRow, "C").Value = DateValue(Me.task_date.Value) 
     .Cells(NewRow, "F").Value = Me.task_note.Value 
     .Cells(NewRow, "G").Value = Me.task_additional.Value 
    End With 
End Sub 

あなたCurrentRegionが行1で起動しないと、それは非常に長いを拡張するようなあなたの特定のケースでは、CurrentRegionが見える場合それはあなたを混乱されますので、それはどこに書き込むように動作するようにCurrentRegion.Rows.Countを使用して、通常は悪い考えですあなたのRowCountが多分大きな数字だったので、シートを下にしてください。

関連する問題