複数選択が可能な チェックボックス(CheckBox)(その2)[とりあえず使えるエクセルユーザーフォーム超入門]
Lesson4 使えるようになっておきたい基本機能
もうちょっと使える表現にしてみる
その1ではチェックボックスの基本的な使い方を紹介しました。ここでは、もう少し実用的な体裁にする方法について紹介します。「マンゴーを選んだかどうか」を"True" か "False" ではなく、
”マンゴーを選びました。”
”マンゴーを選びませんでした。”
と表示してみます。ここでは、If文を使って CheckBox1.Value が "True" か "False" のどちらかを確認し、それに応じて、適切な文章を表示させる事例にて説明します。
If文については「エクセルVBAマクロ超入門」でも説明しています。
Private Sub CommandButton1_Click()
If CheckBox1.Value = "True" Then
‘ CheckBox1.Value = "True" の場合の処理
MsgBox "マンゴーを選びました。"
Else
‘ CheckBox1.Value = "True" 以外の場合の処理
MsgBox "マンゴーを選びませんでした。"
End If
End
End Sub
スポンサーリンク
さらに選択肢を増やしてみる
まずはフォーム上にチェックボックスを増やして合計4つにします。これに合わせて、選択肢も割り当てます。
Private Sub UserForm_Initialize()
CheckBox1.Caption = "マンゴーを選ぶ"
CheckBox2.Caption = "りんごを選ぶ"
CheckBox3.Caption = "梨を選ぶ"
CheckBox4.Caption = "柿を選ぶ
End Sub
コマンドボタンをクリックしたら、選んだ果物を表示させたいのですが、ここでは「●と●を選びました。」という複数表示を目指します。
先ほど紹介したMsgBox構文は一度に1種類の文章しか表示できません。選んだ果物の組み合わせを表示するには、いったん選択した情報を集めて、それを文章化し、その文章をMsgBox構文で表示するといった順に処理を進めます。
Private Sub CommandButton1_Click()
If CheckBox1.Value = "True" Then cb01 = "マンゴー"
If CheckBox2.Value = "True" Then cb02 = "りんご"
If CheckBox3.Value = "True" Then cb03 = "梨"
If CheckBox4.Value = "True" Then cb04 = "柿"
cb_text = cb01 & "と" & cb02 & "と" & cb03 & "と" & cb04 & "を選びました。"
MsgBox cb_text
End
End Sub
いったんcb01、cb02、cb03、cb04という変数に文字列を割り当てて、その文字列をつなげて一つの文章(cb_text)にし、それをmsgbox構文で表示します。
文字列の足し算は & で表記します!
おー、うまく表記されましたね。では、りんごと柿を選んでみましょう。すると、、
「と」が多い!
「と」の有無も制御する必要がありそうです。「と」をcb01~cb04の文字列に組み込むのがシンプルで速いですが、できれば最後の果物には「と」をつけたくないですね。
いろいろな工夫があると思いますが、私は次のようにコードを作り変えました。
Private Sub CommandButton1_Click()
If CheckBox1.Value = "True" Then cb01 = "マンゴーと"
If CheckBox2.Value = "True" Then cb02 = "りんごと"
If CheckBox3.Value = "True" Then cb03 = "梨と"
If CheckBox4.Value = "True" Then cb04 = "柿と"
cb_text01 = cb01 & cb02 & cb03 & cb04
cb_text01 = Left(cb_text01, Len(cb_text01) - 1) 'お尻の「と」を削除
cb_text02 = "を選びました。"
MsgBox cb_text01 & cb_text02
End
End Sub
cb_text01 = Left(cb_text01, Len(cb_text01) - 1) は文字列cb_text01の左側からLen(cb_text01) – 1 の文字数だけ抽出しろ、という命令です。Len(cb_text01) はcb_text01 の文字列の数を表しますので、その一つ減じた値、すなわち最後の「と」を除いた数だけ抽出しろ、という命令になるわけです。
いったんcb01~cb04のすべての果物に「と」をつけておいて、ひとつの文章にしておいてから、最後の「と」だけを消す、という方法ですね。
みなさんはどんな方法で対処しますか?
あとは、忘れずに、どれも選択しなかったケースも想定した処理をしておきましょう。
これ、忘れがちだけど重要!
Private Sub CommandButton1_Click()
If CheckBox1.Value = "True" Then cb01 = "マンゴーと"
If CheckBox2.Value = "True" Then cb02 = "りんごと"
If CheckBox3.Value = "True" Then cb03 = "梨と"
If CheckBox4.Value = "True" Then cb04 = "柿と"
cb_text01 = cb01 & cb02 & cb03 & cb04
If cb_text01 = "" Then
MsgBox "どれも選んでいません。"
End
End If
cb_text01 = Left(cb_text01, Len(cb_text01) - 1) 'お尻の「と」を削除
cb_text02 = "を選びました。"
MsgBox cb_text01 & cb_text02
End
End Sub
よし!これでオッケー。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
スポンサーリンク
複数選択が可能な チェックボックス(CheckBox)(その1)[とりあえず使えるエクセルユーザーフォーム超入門]
チェックボックスの配置
チェックボックス(CheckBox)は、□にレ点を入れることによって選択する機能であり、複数同時にチェックすることも可能となります。
ツールボックスで「チェックボックス」を選択し、フォーム上の始点でクリックし、終点までドラッグすることで、チェックボックスの枠組みを作成します。
初期設定1:チェックボックスの見出し
チェックボックスの見出しの設定方法には「プロパティ値(Caption)で修正」、「VBAコードで設定」といった主に2種類があります。
スポンサーリンク
プロパティ値(Caption)で修正
対象となるチェックボックスを選択した際に、画面左側にプロパティ値の一覧が確認できます。この中のCaption値がチェックボックスの見出しとなります。したがって、直接該当するテキストを修正すれば反映されます。
VBAコードで設定
VBAコードで設定する方法もあります。これもまた「3-1.ユーザーフォームの初期化(Initialize)」で紹介した方法です。具体的な方法は次の通り。この方法であれば、条件により異なる見出しを記載することにも応用できます。
Private Sub UserForm_Initialize()
CheckBox1.Caption = "マンゴーを選ぶ"
' ↑
'(オブジェクト名). Caption=”(記載したい文章)”
End Sub
初期設定2:チェックボックスの初期値
フォームを表示したときにあらかじめチェックを入れておきたい場合の具体的な方法は次の通り。
Private Sub UserForm_Initialize()
CheckBox1.Caption = "マンゴーを選ぶ"
CheckBox1.Value = "True"
' ↑
'(オブジェクト名). Value="True"(チェックあり)
' または "False"(チェックなし)
End Sub
チェックボックスの選択情報の取得
チェックボックスにチェックが入っているかどうかの情報は CheckBox1.Value が"True"か "False" で確認できます。
フォーム右下のコマンドボタンを押したときに、チェックが入っているかどうかをMsgBox関数というダイアログボックスにメッセージを表示する機能を使用して確認してみましょう。
Private Sub CommandButton1_Click() コマンドボタン1をクリックした後の処理
MsgBox CheckBox1.Value ‘ CheckBox1.Value の値を表示
End '処理終了
End Sub
処理をした際に表示される画面は下記のとおり。
マンゴーを選んだので、”True” と表示されました。
ただ、"True" か "False" と表示させるだけでは実用的ではありません。次回は、実用的な表現にする方法について紹介します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
スポンサーリンク
選択肢リストを配置する コンボボックス(ComboBox)[とりあえず使えるエクセルユーザーフォーム超入門]
Lesson4 使えるようになっておきたい基本機能
コンボボックスの配置
コンボボックス(ComboBox)を使うことで、あらかじめ設定した選択肢を選ぶことが可能となります。選択肢を設定することで、ユーザーの入力作業が簡単になることはもちろん、人によって異なる表現のバラつきをなくすことができ、その後の統計処理などに威力を発揮します。
ツールボックスで「コンボボックス」を選択し、フォーム上の始点でクリックし、そのまま終点までドラッグすることで、コンボボックスの枠組みを作成します。
スポンサーリンク
選択肢リストの反映
次に選択リストを設定します。「3-1.ユーザーフォームの初期化(Initialize)」で紹介した方法をベースに設定することができます。コンボボックスの具体的な方法は次の通り。通常選択肢は複数あるので、With文の「.AddItem "(名称)"」で設定します。
Private Sub UserForm_Initialize()
With ComboBox1 '(オブジェクトの指定)
.AddItem "焼き飯"
.AddItem "焼きそば"
.AddItem "お好み焼き"
.AddItem "たこ焼き"
End With
End Sub
そうそう。これこれ、これがやりたかった!
もう一つの方法があります。それはExcelのSheetに記載の列情報を読み込むやり方です。そのときはWith文の「.RowSource = "(指定の列)"」で設定します。
Private Sub UserForm_Initialize()
With ComboBox1 '(オブジェクトの指定)
.RowSource = "Sheet1!A1:A6"
End With
End Sub
これでコンボボックスでの選択が完了ですが、その選択した値を確認するためにはもう一つ仕込みが必要です。
コンボボックスの選択情報の取得
ユーザーフォーム上で選択が完了すると、ComboBox1.Value にその選択肢が格納されます。確認のために、Msgbox構文で表示させるコードは下記の通り。
Private Sub ComboBox1_Click() ' ComboBox1選択後に始まる処理
MsgBox ComboBox1.Value ' CheckBox1.Value の値を表示
End ' 処理終了
End Sub
コンボボックスの便利設定
自由入力をさせない(入力規制)
初期の設定だとコンボボックスに直接入力することで選択肢以外を入力することができますが、設定を変えることで選択肢以外は選べないようにすることができます。With文に「.Style = fmStyleDropDownList」を追加します。
Private Sub UserForm_Initialize()
With ComboBox1 ‘(オブジェクトの指定)
.RowSource = "Sheet1!A1:A6"
.Style = fmStyleDropDownList ‘ 選択肢以外は入力規制
End With
End Sub
フォームの表示と同時に初期値を表示
通常、フォームの初期値は空白でどれも選択されていませんが、with文の「.Value」を使用することで、フォームの表示と同時に初期値が入力されている状態にできます。Range文を使ってセルを指定してもよし、”(ダブルクオーテーション)で挟んだ文字列を入れてもよしです。「.Style」で選択肢の制限をした場合、初期値に選択肢外のものが入力できません(空白のままとなります)。
Private Sub UserForm_Initialize()
With ComboBox1 ‘(オブジェクトの指定)
.Value = Range("A1") ‘ .Value =”やきめし” なども可能
.RowSource = "Sheet1!A1:A6"
.Style = fmStyleDropDownList ‘ 選択肢以外は入力規制
End With
End Sub
よし、またできることがひとつ増えた!
1 2 3 4 5 6 7 8 9 10 11 12 13 14
スポンサーリンク
懐かしのJR中央線3部作 2015年のJR中央線・外濠付近(市ヶ谷~飯田橋周辺/東京)
新型コロナウイルスの影響でお出かけができなくなったのをきっかけに、以前撮影したもののお蔵入りになっていた動画を発掘しました。
撮影した2015年には、当たり前すぎるシーンばかりではありますが、今見るとどれも貴重。
そんなシーンを集めた3つの動画を紹介します。
スポンサーリンク
懐かしのJR飯田橋駅 旧駅舎
懐かしのJR飯田橋駅 旧駅舎・西口改札(JR飯田橋駅ホーム移設工事前/2015年撮影)
2020年春のJR飯田橋駅はホーム移転工事の終盤。旧駅舎は跡形もなく、新駅舎のフォルムが現れたところです。今はもう見ることができなくなったJR飯田橋駅の旧駅舎/西口改札の姿をとらえていた動画が少しだけありました。
気づいた時には工事が始まり、まともに旧駅舎/西口改札を撮っていなかったのですが、どこかに紛れ込んでいるはずと探しまくりました。
新見付からの望遠撮影なので、手振れがあったり、小さかったりなどしますが、雰囲気は思い出せると思います。
懐かしの中央線E351系 特急スーパーあずさ ~並走・すれ違いのある なつかしのコラボ~
懐かしの中央線E351系 特急スーパーあずさ ~並走・すれ違いのある なつかしのコラボ~
2018年春に引退して久しいE351系の特急スーパーあずさ。中央線快速、中央・総武線各駅停車と並走、すれ違いをする姿が懐かい。
懐かしの中央線E257系 特急あずさ・かいじ
中央線で めっきり見なくなったE257系の特急あずさ・かいじ。
転用改造されて特急踊り子として現役を続けているようですが、このカラーリングで中央線を走る姿は懐かしい。
スポンサーリンク
お題「#おうち時間」
30年以上ぶり!懐かしの「ぼくらの七日間戦争」
新型コロナウイルスの影響でGW明けに開館する予定だった図書館が当面閉館となりました。
まあ、しょうがない。想定の範囲内。
前回、『1Q84 (村上春樹)』が文庫本6巻中4巻で取り残された話を書きましたが、その後も読書欠乏症が続いておりました。
なんやそれ。金欠病のたぐいか。
スポンサーリンク
そこで、今回手にしたのがこれ。
懐かしいですねー。読んだのはもう30年以上前!そのときのパッケージはこれ。
1985年出版と2009年出版。24年経って表紙の雰囲気がずいぶん今風に変わったものですねー。
でも、ほとんどストーリー覚えてなかった。。。談合やら安田講堂事件やら小学生のときは全然知らないで読んでましたからねー。なんとなく雰囲気を感じながら、ワクワクドキドキして読んでいたもんです。
30年の時を経て知らぬ間に知識がついたのか、今回、超絶久しぶりに読んでみて、ほぼ初めて読むぐらいの新鮮さで読めました。
なかなか本に出てくるほどの思い切ったことをやるのは難しいですが、でもなんかいいですねー。自分たちで考えて工夫していく姿。いろいろな強みを持っている仲間たち。そして、真の強さ。
どちらかというと本に出てくる親や先生などの大人に近い年齢になったはずなのに、むしろ子どもの側に立っているようなワクワクドキドキ感! たまらないです。
むかしずいぶん流行ったので読んでいた方も多いと思います。お出かけの中々できない今、童心に帰って、おうち時間を楽しんでみませんか?
そういえば、映画も見たことあった。
宮沢りえでてるやつ。
スポンサーリンク
お題「#おうち時間」
はじめての村上春樹。流行おくれの1Q84の世界。そして、不思議な世界に取り残される。の巻
はじめての村上春樹。流行おくれの1Q84の世界。
図書館で『1Q84 BOOK1前編(村上春樹)』(文庫本)を借りてみました。
いつもは東野圭吾や池井戸潤を好んで読んでいて、村上春樹は読んだことはありません。もちろん、名前は知っていましたし、約10年前に『1Q84』が流行ったのも知っていました。
流行に乗るのが苦手、というか敢えて乗らない、という性格もあり、だいたいが流行が終わったころに一足遅れて乗るという時代遅れが染みついた人間をやっておりまして、気にはなっていましたが、手にしたことはなかったんです。
スポンサーリンク
先月、急遽時間ができたことから、図書館で本を借りようをして思い出したのが『1Q84 (村上春樹)』。数年遅れの流行に乗ってみるかー。と思って借りてみました。
初めての村上春樹
小説のレビューはネタバレにもなりますし、細かくは書きません。
書きません。ではなく、書けません。ですな。
少年時代から読書感想文が苦手だから。
2巻まで読んだところでは、不思議なストーリーが2つ平行して進んでいて、なんだかよく分からないけど、次が気になっちゃって読み進めちゃう。
3巻まで読んで、謎な世界が少し見えかけてきた。
そして、いよいよ最終巻。ドキドキ。
という具合に、途中で読み止まることはなく、次々とページを送る日々が続いたわけです。でもって、とうとう『1Q84(村上春樹)』完読!
そして、不思議な世界に取り残される。
完読しましたが、なんだか終わりが中途半端でしっくりこないし、ここから先は想像しろってことかー。でも、全然わからん!と思って悶々としてました。
あまりに悶々すぎるので、ネットでいろんな読者の解釈を見てみようと思ったら、なんと!
文庫本、あと2冊あることが判明!
上下巻というような名前の付け方ではなく、
1Q84 BOOK1 前編
1Q84 BOOK1 後編
1Q84 BOOK2 前編
1Q84 BOOK2 後編
なんて名前の付け方だから、
に気づかなかった。全4巻と勝手に思い込んでいました。
そうだよなー。あと2冊あるよなー。ここで終わって、ほうほうって納得できる人がいるのであれば、それはもう村上春樹やもんなー。
というわけで、残り2冊に読み進みたいところではありますが、新型コロナウイルスに伴う緊急事態宣言を受けて、図書館もお休み。
悶々とした日々は続きます。
くだらない戯言にお付き合いくださり、ありがとうございました。
たしかに、6巻セットで売っている。
(2020.6.27追記)
新型コロナウイルスによる緊急事態宣言が解除され、図書館が復活したので早速調達して完読!
うん。しっくりきた!
スポンサーリンク
満開の桜、季節外れの大雪、行き交う鉄道の共演。51年ぶりの景色。(JR市ヶ谷駅付近[市ヶ谷見付~新見付])
満開の桜に春を感じたのが昨日。半袖でもいいぐらいの暖かさだったのが一転。一気に寒くなりました。
東京で桜が満開後に積雪したのは1969年以来51年ぶりだそうです。
いやー、降りましたねー。雪。
かなり吹雪いていた時間帯もありました。
スポンサーリンク
買い物に出たついでに遠回りしながら、満開の桜と季節外れの大雪と市ヶ谷外濠を行き交う鉄道の共演を楽しんできました。
外出自粛やから、宴会はあかんで。
市ヶ谷外濠を走る鉄道と大雪
市ヶ谷外濠を走る鉄道は、JR中央線快速、JR中央・総武線各駅停車。
複々線を並走したり、すれ違ったり、追いかけたり。時々、E353系などの特急車両が走ります。
中央・総武線各駅停車 E231系500番台
ホンモノの吹雪。桜吹雪ではない。
中央線快速 E233系0番台
中央線特急 E353系
春の花々と大雪
菜の花と中央線
地面にはうっすら積雪がありましたが、花の上には積雪はしませんでした。
51年ぶりの景色を動画にまとめました
エア花見にどうぞ。
満開の桜×季節外れの大雪×行き交う鉄道。51年ぶりの景色。(JR市ヶ谷駅付近[市ヶ谷見付~新見付])
桜吹雪はこちらになります。2019年平成最後の桜。
スポンサーリンク