久しぶりにVBA セルにデータを挿入。
だいぶ分かるようにはなっていました。
しかし、プログラミングと違ってExcel独特の概念が理解しづらく、人のコードをそのまま、使ったような状態です。
ここの1-7を参考にさせて頂きました。
自分のやりたかった機能の実装はこの部分だけでしたので。
やってること自体は
ユーザーフォームづくり
↓
ラベル
↓
テキストボックス
↓
テキストボックスから文字列取得
↓
OKボタンの処理
( lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
の処理で、セルを検索して、
.Cells(lastRow, 1) = Me.txt体重.Text
.Cells(lastRow, 2) = Me.txt日付.Text
で挿入。
に関しては
'A列の最終セルからEndプロパティでデータの最終行を取得し、
'+1をして、次にデータを入力する行の行番号を取得
RowNum = .Cells(Rows.Count, 1).End(xlUp).Row + 1
ユーザーフォーム入門 - 住所入力フォームを作成する(5) 〜 ワークシートへの転記:Excel VBA|即効テクニック|Excel VBAを学ぶならmoug
とありました。
Google先生に聞いた所
'A列の最終セルからEndプロパティでデータの最終行を取得し、 '+1をして、次にデータを入力する行の行番号を取得 - Google 検索
VBAを使ううえでの必須級の技術だそうです。
とはいえ、自分で調整できない程度なので、
もうちょい軽く触りたいとは思っています。
C#の気分転換ぐらいに。
次に実装したい事。
・日付を関数 か何かで自動入力
・ループ処理で、新しい記入が上に来るようにする。
抜粋
まずは
とにかく、最終行を取得する場合は、
まずは
Cells(Rows.Count, 1).End(xlUp).Row
または
Cells(1, 1).End(xlDown).Row
これは、定型文として丸暗記して下さい。
Cells(1, 1).End(xlDown).Row -1
とかにすると上に挿入されたけど、上書きされていった。
よくよく考えるとExcelのデフォルトの動きが自動的に下になるようになってたはずだから、上書きされるんだと思う。