TextBoxのデータをsheetに転記する方法

ロゴ



The following two tabs change content below.
アバター

taka

あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪

TextBoxのデータをsheetに転記する方法

【TextBoxのデータをsheetに転記する方法】

先日、ExcelVBAの勉強を始めたばかりの同僚に聞かれて説明したのですが、まだ本ブログで紹介をしてい無かったので今回ブログに書こうと思いました。

 

ExcelVBAで初めてユーザーフォームでデータを追加する時にぶつかる一つの壁になると思いますが説明を見れば割と理解しやすいコードになっていますのでこの記事が少しでも役に立てれば光栄です。

 

用意するユーザーフォーム

TextBoxのデータをシートに転記する方法という事でユーザーフォームを使用します。今回は下記のようなフォームを用意します。

※Labelの【氏名】と【住所】は特に必須ではありません。

ユーザーフォームについてはこちら

ユーザーフォームについて1ユーザーフォームはExcelVBAの機能として標準設置されています。ユーザーフォームを使えばExcelで作成したと思えないプログラムができます。私が作成したExcelCRMもこのユーザーフォームを使用して作成しています。今日はユーザーフォームについての説明を書いていきます。ユーザーフォームとはユーザーフォーム(User Form)とはVBAで自由に設計することができるダイヤルボックスです、そのフォームを使って登録作業するなり、計算するなど、使い方は自由です。ユーザーフォームを使用する事によって操作性...
ユーザーフォームについて2【コントロールについて】ユーザーフォームのコントロールについて、VBAのユーザーフォームでは様々なコントロールが用意されています。コントロールというのはユーザーフォームを作成するための部品のような物で文字を入力するならテキストボックス、データを表示するならリストボックスなど。様々なコントロールが用意されています。ですがVBAを始めたばかりの方は名前で言われても何がどのようなものなのか全く分からないと思います。ですので今回はデフォルトで使用できるコントロールの中でもさらに使用...

データを追加するコード

今回のデータを追加するコードですが、今回はコマンドボタンで登録をするという方法を取ります。

今回使用するコードはこちらになります。

Private Sub CommandButton1_Click()

With Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp)

.Offset(1, 0) = TextBox1.Value
.Offset(1, 1) = TextBox2.Value

End With


End Sub

これは本当に最低限データを追加するためだけのコードです。※エラーチェックなどの機能はありません。

 

コードの解説

 

ではコードの解説を始めます。

今回の流れは

  1. Withを使う
  2. データがある最終行を取得する
  3. データを追加する

この3ステップを踏んでいきます。

1.Withを使う

 

まずコードの簡略化をするために【Withステートメント】を使用します。

With

Withステートメントは簡単に説明すると宣言しておいて繰り返すことを簡略することです。

鈴木.歩く
鈴木.走る
鈴木.ジャンプ

という命令を

鈴木は【With】
歩く
走る
ジャンプ
した。【End With】

のようにするイメージになります。

Withステートメントについてはこちら

オブジェクトの命令をまとめる【Withステートメント】オブジェクトの命令をまとめる事ができる【Withステートメント】、オブジェクトの命令をまとめると言われてもいまいちピンと来ないかもしれないので説明させていただきます。Withステートメントの使い方例えばですが自分を自己紹介するときはどのように説明しますか?まずVBAの文法で自己紹介をするとした場合私は身長は170㎝です。私は体重は60キロです。私は出身地は東京都です。と初めに【私は】と言ってオブジェクトを設定して【です】で締めて次の説明にいかなければいけません...

2.データがある最終行を取得する

 

データを追加するにはデータの最終行を取得する必要があります、そのコードがこちら。

With Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp)

 

これは【sheet1のA列を下から見ていってデータがある所】で止まるという意味のコードです。

そしてWithでこのコードを宣言しておくことでWithの範囲内ではこのコードは今後不要になります。

 

データの最終行の取得についてはこちら

データのある最終行を取得する方法 データのある最終行を取得する方法もしVBAでデータを登録していくシステムを作りたいと思った場合、データがある最終行を取得してその下にデータを登録していくというプログラムが必要になってきます。実際にこのシートで試していきましょう。最終行を取得するコードではさっそく最終行を取得するコードをご紹介します。Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp)※このコードはこれからVBAを使う人にとっては暗記必須ですので必ず覚えてください。解説cells(Rows.count,1)...

 

3.データを追加する

上記のままでは最終行を取得しても、そこにデータを追加するのでは最終行でずっとデータを上書きをし続けるだけになってしまいます。データがある行の下に追加していかないといけないのです。

データの最終行の下を取得するのがOffsetプロパティです。

OffSetプロパティについてはこちら

Withで最終行取得まで省略しているので下記のコードだけでOKです。

.Offset(1, 0) = TextBox1.Value
.Offset(1, 1) = TextBox2.Value
End With

 

このように記述することによって【sheet1のA列を下から見ていってデータがある所の一個下【Offset(1, 0)】のデータはTextBox1のデータ】というコードが完成します。

赤文字がWithのコードです。

まとめ

 

今回のデータの追加のコードはデータを追加するコードの中でよく紹介されているコードです、ExcelVBAを始めたばかりの人は必ずこのコードを通っていくと思います。そして長い期間使用するコードでもありますので是非覚えてExcelVBAをさらに勉強していってください。

※なるべく解りやすく書いたつもりですが解りにくい所がありましたら指摘があれば訂正します。

下にサンプルファイルを用意してありますのでご利用ください。

フォロー・チャンネル登録お願いします

VBA以外についてのブログはこちら↓

https://yb-log.com/

■Twitterフォロー

■YouTubeチャンネル登録

ファイルやコードの利用、WEBサイトの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

Sponsored Link

 

WordPressでブログを始めるなら

WordPress簡単インストール&安心の安定性

レンタルサーバー Xserver

ロゴ

2 件のコメント

  • Private Sub CommandButton1_Click()

    With Worksheets(“Sheet1”).Cells(Rows.Count, 1).End(xlUp)

    .Offset(1, 0) = TextBox1.Value
    .Offset(1, 1) = TextBox2.Value

    End With

    End Sub       右側に記録していくにはどうしたらいいですか。

    • コメントありがとうございます。
      ご返信が遅くなってしまい申し訳ございません。
      右側に項目を増やすという認識でよろしいでしょうか?
      そうであれば
      Private Sub CommandButton1_Click()

      With Worksheets(“Sheet1”).Cells(Rows.Count, 1).End(xlUp)

      .Offset(1, 0) = TextBox1.Value
      .Offset(1, 1) = TextBox2.Value
      .Offset(1, 2) = TextBox3.Value’項目追加分
      End With

      End Sub    

      のようにOffsetの右側の数字を増やしていくとセルの横方向に指定を変更することが出来ます!

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です