/ / VBAテキストボックスからセル-Excel、Excel-VBA、VBA

セルへのVBAテキストボックス - excel、excel-vba、vba

ユーザーが3つの異なるテキストボックスにデータを入力するExcelの入力ユーザーフォームがあります。これは私のコードです

      Private Sub Process_Click()

Worksheets("1").Range("A1").Value = Date.Value
Worksheets("1").Range("B1").Value = Name.Value
Worksheets("1").Range("C1").Value = Amount.Value


End Sub

したがって、プロセスを初めて押すと、これらのセルA1、b1、およびC1へのデータ。私がやりたいことは、フォームを開いてフォームのプロセスをクリックするたびに、たとえば、次にプロセスをクリックしたときにA2、b2、c2に移動するときにそれらの値が行を下げたいことですに。

回答:

回答№1は2

これは、Barrankaの答えに似ています。

基本的な考え方は同じです。最後に入力された行を確認し、それより1行下にデータを追加します。

ここで最後に入力された行を見つけるために使用される方法は、 while ループしますが、両方をテストして自分で確認する必要があります。

Private Sub Process_Click()
Dim appendRow As Long

" add 1 to get the row after the last-populated row
appendRow = Worksheets("1").Cells(Rows.Count,1).End(XlUp).Row + 1

Worksheets("1").Range("A" & appendRow).Value = Date.Value
Worksheets("1").Range("B" & appendRow).Value = Name.Value
Worksheets("1").Range("C" & appendRow).Value = Amount.Value
End Sub

回答№2の場合は0

最初に、最後に入力されたセルを知る必要があります。これは、範囲内を簡単にナビゲートできます。 3つの列すべてにデータが入力されていると仮定すると、1つしか読み取ることができません(たとえば、 A)最後の行を取得するには:

Dim i as Integer
i = 1
while Worksheets("1").Range("A" & i).Value <> "" or Worksheets("1").Range("A" & i).Value <> 0
i = i + 1
wend

これで、最後の行が読み込まれたことがわかりました。

 Worksheets("1").Range("A" & i).Value = Date.Value
Worksheets("1").Range("B" & i).Value = Name.Value
Worksheets("1").Range("C" & i).Value = Amount.Value

それは単にそれを解決する方法であり、データセットが本当に大きくなることを意図していない場合に機能します。欠点は、非常に長いテーブルがある場合、 while 最後に読み込まれた行を追跡するには時間がかかる場合があります。

これがあなたに役立つことを願って