「山田、でもこれでは、いつも2行目が書き換えられるばかりでデータにならないじゃないか?」

「そうだな、データが何行目まで入力されているか知る方法がある。

試しに、一行

MsgBox Sheets("取引先").Range("A" & Rows.Count).End(xlUp).Row

と追加して実行してみてくれ。

2行目までデータがあるから 2 と表示さるはずだ。」

 

この命令文を詳しく分析してみます。

まずは、取引先のシートの A3セル(空白のセル)を選択して

Ctrl + ↓(下矢印) を押してみます。

シートの一番下の行へ移動します。

エクセルのシートで最終の行番号 A1048576 へ移動します。

この 1048576 が Rows.Count の値です。

続いて

Ctrl + ↑(上矢印) を押してみます。

データが入力されいる最終の行へ移動します。

これが End(xlUp) の動作

Sheets("取引先").Range("A" & Rows.Count).End(xlUp).Row とは

取引先のシートの A1048576 から上へ移動して、データが入っている最終行

(空白でなくなったセル)の Row(行番号)を取得せよ

と命令しているのです。

 

ここまで理解出来たら

Sub ボタン1_Click()
With Sheets("取引先")
 GYOU = .Range("A" & Rows.Count).End(xlUp).Row + 1
 .Range("A" & GYOU).Value = Range("D7").Value
 .Range("B" & GYOU).Value = Range("D8").Value
 .Range("C" & GYOU).Value = Range("D9").Value
 .Range("D" & iGYOU.Value = Range("D10").Value
 .Range("E" & GYOU).Value = Range("D11").Value
End With
End Sub
と修正して
ボタンをクリックすると
取引先シートの下方向に
内容が追加されていく事を
確認してください。
A列にデータが二行目で入力されていれば
GYOU = .Range("A" & Rows.Count).End(xlUp).Row + 1 は 3
Range("A" & GYOU).Value は Range("A3" ).Value   と云う事
Range("A" & Rows.Count)は Range("A1048576") でも構わないのですが
 1048576を覚えるのが嫌なので Rows.Count をよく使います。
わかってしまえば、何とも簡単な方法だった事に気が付く沖田君でした。
GYOU は変数です。名前は自由で構いません。
i とか Lastgyou など好みで変えていただいて結構です。
変数については、後ほど説明します。
 
もちろん
 GYOU = .Range("A1").End(xlDown).Row + 1
でも大丈夫です。