久しぶりにVBA セルにデータを挿入。

だいぶ分かるようにはなっていました。

 

しかし、プログラミングと違ってExcel独特の概念が理解しづらく、人のコードをそのまま、使ったような状態です。

 

excel-ubara.com

ここの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を使ううえでの必須級の技術だそうです。

excel-ubara.com

 

No.8 ワークシートの最終行、最終列を取得する

 

とはいえ、自分で調整できない程度なので、

もうちょい軽く触りたいとは思っています。

 

C#の気分転換ぐらいに。

 

次に実装したい事。

・日付を関数 か何かで自動入力

・ループ処理で、新しい記入が上に来るようにする。

 

抜粋

excel-ubara.com

まずは

とにかく、最終行を取得する場合は、

まずは

Cells(Rows.Count, 1).End(xlUp).Row

または

Cells(1, 1).End(xlDown).Row


これは、定型文として丸暗記して下さい。

 

Cells(1, 1).End(xlDown).Row -1

とかにすると上に挿入されたけど、上書きされていった。

 

よくよく考えるとExcelのデフォルトの動きが自動的に下になるようになってたはずだから、上書きされるんだと思う。