「山田、でもこれでは、いつも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
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
.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
でも大丈夫です。