コンボボックスに値を読み込ませる方法ですが、基本はVBA講座2-10でご理解頂けたかと思います。
今回はより汎用性を高めるために、ちょっと書き方を変えて色々な場面で使いやすくします。
それでは早速いきましょう。
スポンサーリンク
採用区分の値をワークシートから読み込ませてみよう
コンボボックス単位と同じ方法で、コンボボックス採用区分のコードを続けて書いてみました(赤く囲った部分です)。
それでは順番に解説していきます。
1行目の変数の宣言
は一緒ですね。
2行目
変えたのは17を3に。この意味はわかりますね?
上の画像を見て下さい。単位の方はB列2行目のTから17行目のUまでを追加しました。
今回はA列2行目の○と3行目の×を追加すればいいのでこうなります。
3行目
cboTaniをcboKubunに変えます。そしてCells(i,2)をCells(i,1)に変えます。
これも単位はB列(2列目)、採用区分はA列(1列目)だから変える必要があります。
4行目
これは同じですね。
5行目
cboTaniをcboKubunに変えただけです。ではF5を押して実行して下さい。
上の画像のようにエラーが発生するはずです。その理由を説明しますね。
変数宣言が重複するとエラーが出る
~
End Sub
の間では、変数宣言は1回でいいという事です。Dim i As Integerが重複していますね。
これは「さっき宣言したんだから2回言わなくていいよ」という意味です。
それではOKを押して、cboKubunの方の「Dim I As Integer」は削除しましょう。
そしてもう一度F5を押して実行すると…
エラーが発生せず、しっかり採用区分のコンボボックスに○と×が追加されました。
スポンサーリンク
データが入力された最終行を取得する方法~応用編
それでは汎用性を高めたコードを解説します。上の画面を見て下さい。さっきとちょっと違いますね。
LastRow = Worksheets(“基本マスタ”).Range(“A65536”).End(xlUp).Row
この2行が追加になっています。
そして
が
に変わっています。「LastRow」これがメチャクチャ重要です。
それでは解説していきましょう。
超重要!Range(“A65536”).End(xlUp).Row
まず1行目はいいですね。
「変数LastRowを整数と宣言する」。今回は変数はわかりやすくするためにLastRowとしました。意味は文字通り最後の行です。
変数iと変数LastRowは別の数字を入れて同時に処理しますので、変数は2つ必要になります。
2行目がちょっとややこしいですね。
=の左側は「変数LastRowは」これはいいですね。
=の右側ですが、ここは一つ一つ丁寧にいきましょう。
「ワークシート基本マスタの」
「A65536セルの」。セルの行は65536が最大となります。つまり「A列で一番下のセルの」という意味です。
「上に向かって」
「行」
「.」を「の」と読むと今回は「上に向かっての行」となり意味不明です。今回は「上に向かってぶつかった行」と読み取って下さい。
つまりデータが入力された最終行に相当します。
まとめると「ワークシート基本マスタのA65536セルから上に向かってぶつかった行」という事になります。
ここではどれにあたりますか?そう、「3」になりますよね。一番下の行からずーっと上に向かっていきぶつかった行。
こちらの方が色々と応用が効きますのでぜひ覚えて下さいね。
例えば最初の方は単位に後からデータを1個追加した場合、17を18に修正しなければなりません。
データを追加する度にコードを書き直す必要があります。
しかしこちらの方法ではデータをいくら追加しようがこのままでOKです。どちらがいいかは一目瞭然ですよね。
それでは、同じようにコンボボックス単位の方も書き換えましょう。
これは上にもっていきます。変数の宣言は最初に行うのが基本です。
そしてcboTaniの方はB列にデータがありますのでRange(“A65536)ではなく、
とします。あとは上の画像を参考にしてください。
では今回はこれで終了とします。お疲れ様でした。
次回はデータを登録する場所についてお話します。