【VBA】MsgBox関数を使ってみよう(2)
前回の(1)ではMsgBox関数を使って文字列の表示とOKボタンのみがメッセージボックスとして表示する方法について書かせて頂きましたが、今回はそんなMsgBox関数に色々くっつけてもう少し味気のあるものにしてみたいと思います。
oyajinokakurega.hatenablog.com
(前回のメッセージボックス)
(今回作るのはこんな感じでアイコンやら改行やらします)
メッセージボックスの枠が違うのはExcelのver違いなのでお気になさらず。
(2つ端末使っているので…)
ではいってみよう。
まずは中身を見てみよう
まず先程の例で使ったメッセージボックスの中身(VBA)を見てみましょう。
Sub test()
MsgBox "今回はこんな感じ!" & vbCrLf & "随分見栄えが変わります", vbYesNoCancel + vbInformation
End Sub
前回の「MsgBox "表示させたい文字列"」よりも随分長くなったように感じるかと思います。
僕もそう思います。
パッと見て「&」とか文字化けかよとか思いますもん。
けれども1つ1つを見ていくと大したことないので続けますね。
「&」ってなんぞや
早速文字化けかと思われがちな「&」についてですが、これは実は演算子。
カッコつけて言うと文字列連結演算子。
簡単に言うと文字列を連結するときに使う演算子。
例えば
A="1173" B="3373"
A&Bは11733373となります。A+Bも同じです。
vbCrLfは何なんだ?
これも文字化けかと思いますよね。大文字と小文字が入り混じってオシャレさんぶってる匂いも微かに感じる。
このオシャレさんは改行コード。
オシャレでもなんでもなかった。
vbはオマケということで、CrLfは「キャリッジリターン・ラインフィード」の略とか言われているようです。タイプライター時代の名残でしょうか。
MsgBox "今回はこんな感じ!" & vbCrLf & "随分見栄えが変わります"
訳すと
メッセージボックス「今回はこんな感じ!(連結)(改行)(連結)随分見栄えが変わります」
といったところでしょうか。
OK以外のボタンを付けたい
有無を言わせない雰囲気が醸し出される「OK」オンリー。
選択の余地が欲しいものです。
冒頭の例では「はい」「いいえ」「キャンセル」といった3つの選択肢をご用意。
欲張りました。
他にはどんなボタンがあるかというと…
・vbOKOnly
→「OK」ボタンのみ
・vbOKCancel
→「OK」と「キャンセル」ボタン
・vbAbortRetryIgnore
→「中止」「再試行」「無視」ボタン
・vbYseNoCancel
→「はい」「いいえ」「キャンセル」ボタン(今回のやつ)
・vbYesNo
→「はい」「いいえ」ボタン
・vbRetryCancel
→「再試行」と「キャンセル」ボタン
この英語達を定数というのだけど、実は値というもの存在して上から「0」「1」「2」「3」「4」「5」と割り振られているんですが、値に関してはあまりオススメしないので覚えておかなくても良いかと思います。
オシャレにアイコンでも付けとく?
オシャレかどうかは置いといて、アイコンがあると表示されているメッセージが何なのか分かり易くなることは間違いないです。
vbInformationの他に何があるのかというと…
・vbCritical
→「警告」です。赤丸に×みたいな。
・vbQuestion
→「?」です。
・vbExclamation
→「!」です。
・vbInformation
→「i」です。(今回のやつ)
こちらも英語を定数といい、やっぱり上から値があって「16」「32」「48」「64」となっています。16の2倍、3倍、4倍…て、これもオススメはしないので頭の片隅くらいで良いとは思います。
ですがせっかくなので例を書き残しておこうかと思います。
(例1)冒頭のやつ
MsgBox "今回はこんな感じ!" & vbCrLf & "随分見栄えが変わります", vbYesNoCancel + vbInformation
(例2)値を使ってみる その1
MsgBox "今回はこんな感じ!" & vbCrLf & "随分見栄えが変わります", 3 + 64
(例3)値を使ってみる その2
MsgBox "今回はこんな感じ!" & vbCrLf & "随分見栄えが変わります", 67
例1~3のどれでも結果は同じなのでお試しあれ。
値(例2、3)を用いた書き方をオススメしない理由についてですが単純に読みにくいからです。カッコイイ言い方をするなら可読性が低下する…とか?
要は保守するのは人間なので読みにくいのはどうなのよ…というだけです。
いきなり「67」とか言われても困っちゃいますよね。
何と何を足したんだ?って。
なので定数で書いておく方が良いかと思うわけです。
まとめ
パッと見ると文字化け小難しいことを書いているようですが分解して見るとただ組み合わさっているだけなことが分かると思います。
MsgBox "今回はこんな感じ!" & vbCrLf & "随分見栄えが変わります", vbYesNoCancel + vbInformation
「今回はこんな感じ!(改行)随分見栄えが変わります(ボタンは「はい」「いいえ」「キャンセル」)(アイコンはお知らせ系なので「i」にしよう)」
定数や値という言葉に混乱しないよう、とりあえず形で覚えてしまうのも手かと思います。
【VBA】MsgBox関数を使ってみよう(1)
モノ作りで嬉しいのは自分が作成したものが動いた瞬間だと思います。
VBAでも自分が作成したものが動いたらその気になるかと。
そういう訳で今回はMsgBox関数を使ってメッセージボックスを作ってみましょう。
目次
メッセージボックスって?
ズバリこういうのです。
エラーメッセージや確認として普段お世話になっているやつです。
これを自分で作ってみます。
細かい話は抜きにしてまずは作っていきましょう
Alt + F11でVBEを開きます。
開いたら標準モジュールを挿入してあげましょう。
左上にある「プロジェクト」にて右クリックをして「挿入」「標準モジュール」で完了です。
いよいよ書き始めます。
試しに「Sub Test()」と入力しEnterを押してみましょう。
間違いがなければ自動で「End Sub」と入力されます。
VBAでは「Sub~End Sub」の「~」部分に色々(コード)を書いていきます。
では早速メッセージボックスを作ってみましょう。
MsgBox関数
関数と聞くと数学嫌いな僕は身構えてしまうのですが、数学全く関係ないので力を抜いて下さい。
先程作った「Sub~End Sub」の「~」部分に「MsgBox "メッセージボックス完成"」と入力します。
Sub Test()
MsgBox "メッセージボックス完成"
End Sub
大人の事情(見やすいから)により、「MsgBox」を入力する前にTabキーでスペースを作ってあげると良いです。
MsgBoxは「msgbox」と入力しても間違いがなければ「MsgBox」としてくれます。
これで完成。
作ったVBAを実行してみよう
「実行」から動かすこともできますが、面倒なので作成中なども含め動作確認は頻繁に行うので「F5」を押して実行できることを覚えておくと便利かもしれません。
すると"メッセージボックス完成"と出てきます。
お疲れ様でした。
まとめ
MsgBox関数はVBAの定番の関数なのですが、見ての通りとっても簡単。
Msg(Message)Boxと読んで字のごとくなのも良いですし、書き方もとてもシンプル。
今回はメッセージの表示とOKボタンのみでしたが、色々くっつけることが出来るので興味のある方は「MsgBox関数を使ってみよう(2)」も読んでみて下さい。
【転職】MIIDAS(ミーダス)に登録してみた
DODAを眺めていたらMIIDASのPR広告が目に入り、なんだか気になったのでそのまま登録してみました。
昨晩登録したばかりですが新しいタイプの転職サイトであるように感じたのと色々思うことがあったので記事にしてみようかと思います。
目次
トレーダーみたいなホーム画面
オファーの想定年収が表示されています。
トレーダーみたいな表示で何だかドキドキします。何のトレードもしたことありませんが。
下が450万というのを見ると現在の年収よりも低いのでガッカリしますが700万くらいの想定があるというのはその企業を受ける受けないとは別に元気をもらえます。
企業の動きが見える
昨晩登録したばかりなので多いのか少ないのかは分かりませんが企業に検索された回数105回となっております。
その他アプローチのレベルが表示されているのですがオファーは21件、職務経歴書のリクエストが1件…などとなっております。
件数の多い少ないは置いておいて、企業がどれだけ自分のことを見ているのかが可視化されているのはとても良いと感じます。
MIIDASは自分にマッチした企業のみ表示される仕組みになっており、応募に関しても「面接確約オファーのみ」という特徴を持っているとのことなんですが、とりあえず21件の企業さんは僕と会ってくれると言ってくれているということでしょうか。
こちとら入力率18%というほとんど情報を公開していない状態で何をもってしてオファー出してんだと疑りまくりなんですが。
それでも自分にオファーを出してくれるということには関心があるのでオファーのページを見てみることに。
…1件もマッチしてません。
もうガッカリです。僕なんてミジンコ以下の価値です。
期待してスミマセンでした。
ただ「希望条件に近いオファー」を表示することもできるようなので早速開いてみる。
…………
………
……
…
目を伏せました。
手当たり次第オファー出しているような企業はさぞ黒いんだろうなぁと思っていたけど危ない匂いしかしませんでした。
ブラック企業をブラックリストへ
MIIDASでは企業情報や求人情報が満足いくレベルで入手出来ないのでDODAにて企業名を入れて検索してみる。
すると絶対に応募しないだろうなというようなページが表示されまして…
試しに4、5社試してみたものの同じような印象を受けました。
求人情報というより地雷探知機のような働きをしてくれています。
まとめ
昨日の今日の話なので今後どうなるかは分かりません。
必要項目の入力率が上がればまともなオファーがくるのかもしれませんし、そもそも僕自身に市場価値がなく「お前がいける企業はこれだ」と言われているのかもしれません。
企業の動きが見え面白くはありますが、企業の情報も見にくい印象を受けました。
転職が終わるまで登録解除をするつもりはありませんが、少なくともMIIDASから応募することはなさそうです。
スマホアプリもあるのでトレーダー気分を味わいたい人は落としてみるといいですよ。
【VBA】VBAの勉強方法
これから新しいことにチャレンジしたいけど勉強方法がよく分からないということは往々にしてあること。
ということでVBAの勉強方法について紹介したいと思います。。
目次
書籍の購入<WEBサイト
書店で「誰でも分かる○○○」みたいな書籍が山ほどありますが、これから勉強を始めるのであればWEBページからのスタートで良いかと思います。
理由は1つ。
入門編は書籍でもWEBページでも大体一緒だから。
出版業界さんに怒られそうだけど、書店にある入門書を片手にググってみると良いですよ。
WEBサイトで何となく理解したら書籍を購入
書籍を購入自体がNGというわけではないです。
ただ、書籍をいきなり購入しても専門用語が飛び交い心が折られてしまったり、買って満足気付けば本棚で埃かぶってる…なんてことになったら勿体無いです。
それなら美味しいもの食べた方が良いです。
WEBサイトで基本的なことを勉強した後であれば入門書からではなく応用やVBAを用いてやりたいより専門的な書籍を購入できるかもしれません。やったね。
勉強方法について
プロシージャやオブジェクト、モジュールやら何やらと用語や画面の見方は別途覚えるとして、VBAの書き方はどうやって覚えるのが良いか。
一番手っ取り早いのは自分が作成したマクロを覗いてみることです。
例えば「A1に"a"を入力する」というマクロを作ります。
中を覗いてみると
Sub makuro()
'
' makuro Macro
'
'
Range("A1").Select
ActiveCell.FormulaR1C1 = "a"
Range("B1").Select
End Sub
となっています。
記録するにどういう操作をしたのかを思い返しながら見ていくと分かりやすいです。
Sub makuro() → マクロの名前「makuro」(なぜローマ字にしたのだろうか)
Range("A1").Select → A1をSelect(選択)
ActiveCell.FormulaR1C1 = "a" → アクティブセルに"a"と入力
Range("B1").Select → B1をSelect(選択)(Enter押したからかなぁ)
と読み進めていくことが出来ます。
Rangeってなんだ?
FormulaR1C1ってどうやって使うんだ?
…となると思います。したらばググります。
「FormulaR1C1とは」とググれば懇切丁寧に教えてくれるサイトがワサワサ出てきます。
調べた結果、FormulaR1C1がセルに数式を入力、または入力されている数式を取得するプロパティであることが分かると思います。
すると今度は「プロパティってなんだよ」となる訳ですが、そうなればまたググる。
するとVBAでいうプロパティっていうのはオブジェクトの属性のことを指していることが分かります。
今度は「属性ってなんだよ」「オブジェクトの情報のことなのか」「オブジェクトの情報にはどんな種類があるんだ?」
…と次々に分からない用語が飛び出すと思います。
用語の説明を読んでいるのにその説明に用いられている用語が分からずまた調べるという作業を繰り返していくこととなります。
繰り返しているとSubで始まりEnd Subで終わっていることに気付いたりとか。
VBAに限った話でなく独学で学んでいく際にはよくある話かと。
まとめ
書籍を購入して分からないところがあれば書籍内の索引で解決できれば良いのですが、望んでいる解説を得られないこともあるかと思います。
結局書籍で分からないのでググって調べて…ということであれば、最初からWEBサイトで学び始めた方が良いかと。
そしてひたすら手を動かします。少なくとも僕みたいなヘッポコには読むだけでは難しかったです。
読んで理解したつもりでも実際に操作してみると上手く動かなかったりして、それが何でなのかまた調べていく…
要は、英語を話せるようになりたい人が参考書読んでるだけで話せるようになるか!ってことです。
VBAはPCとの会話。プログラミング"言語"っていうくらいですから。
買って満足なノウハウコレクターにならないためにもまずは自分でマクロを作り、分からないところをWEBサイトで学んでいくといった手を動かしていく方法がオススメだと思います。
【転職】期間を見誤った…思いのほか選考に時間がかかる件
在職中だと転職をしたい時期ってあると思うんですが、選考が思うような日程で進められず悶々とする日々を送っております。
「現職場に辞める旨を伝えたいタイミング」
「退職願を出す際には転職先の内定はもらっていたい」
などなどあるとは思うのですが、僕個人的に盛大にやらかした感が漂い始めているので整理も兼ねて記事にしようと思います。
※グチグチしてるだけで腹の足しにもならない記事です。
◆書類選考に2週間!?
「順次ご連絡を差し上げます」
「2週間程お時間を頂きます」
誰もが知っている大企業さんならよくある話かと思う。
けどね、そんな高望みな転職をしようとしていないのですよ。
むしろ初めて名前を知った企業が大半なのです。
過去3度転職しているのですが書類選考にこんなに時間がかかったものかと首を傾げつつ、書類選考が通ることを前提に一次二次と逆算すると予定していた時期に間に合わせるのがかなり困難なことに気付いた訳です。
1週間くらいかなぁ…なんて思っていて、何なら日曜に応募したら休み明けの月曜にレスあったりするんじゃないかなぁ…とか蜂蜜思考だった一昨日の僕を正座させて1時間くらい説教してやりたい。
◆匂わせてしまった退職の気配
何の前振りもなくいきなり辞める旨を伝えたらビックリしちゃうだろうから、それとなく匂わせつつ先日直属の上司にも「身の振り方考えようか悩んでるんですよね」的なことを会話に織り交ぜたりして、順調に下地を作っているつもりでした。
でも書類選考に2週間…
さてどうしましょう。
やべぇ…と思ってたら社長から伝言が回ってきまして
「これまでの仕事について、これからの仕事について」
「今後当社でやっていきたいこと」
etc…
そんなような内容を僕にヒアリングをするようにみたいなことを役員が上司に話しているところに鉢合わせまして。ドラマチック。
幸い僕本人が聞いていたことはバレていないようですが、知ってしまった当人はいつヒアリングが開始されるか怯える羽目に。
◆上手く回避すべきか正直な胸のうちを明かすか
ヒアリング時は喜びそうなことを回答して退職願提出時までのらりくらりやっていこうか…
それとも辞める意志を持っていて既に転職活動を開始していることを伝えようか…
どちらも面倒なことになりそうなのだけど、個人的に頂くもの(賞与)は頂いて辞めたい腹づもり。
それを考えると後者は橋の渡り方を間違えると「今すぐFired」となりかねないのが弊社。
…て、流石に言い過ぎかもしれないけど貰うべきものが貰えなくなる、もしくは減額されることが充分に有り得る。
となれば、やはりここは後者を選ぶべきか。
◆退職願を提出してからどれくらいで辞められるのか
法的には14日前の申告で大丈夫。
ただし円満退社ということを気にしないのであれば…ですが。
もうね、3回も転職しているとそのへんは心得がございまして。
ちょっとベテランの雰囲気すら醸し出したりも出来そうで。
退職してからも源泉徴収を入手しなければいけなかったりとミッションが発生するのです。
喧嘩別れした相手に電話でお願いするのはなかなか図太い神経が必要なのです。
ましてそれが「いつまでに欲しい」とかいうおまけ付きの依頼ともなると考えただけで気が重くなる。
それを思うと就業規則などに則って退職まで持ち込むのがベストなのだけど、今度は内定先の企業へ入社日を待ってもらうための調整が必要で…
円滑に円満に進めるためには事前に辞める空気を作っておきたいところ。
やはり前者を選択すべきなのか…
◆焦ってテキトーなところに入るのはやめよう
今の所属は昇給(6月)と賞与(7月)で面談があり、勝手に思い描いていたのは、昇給面談で不満を漏らし、賞与面談で辞める宣言という流れだったのですがどうにも賞与面談までに希望しているところから内定を貰うのは難しい気配。
直ぐにでも内定が欲しいところではあるのですが、目が眩んで「その場で内定をお伝えします」「月内転職可能」に応募してしまうのは色々と目的を見失いがち。
現状より良くないところから内定もらっても意味ないですもんね。
とはいえ、とりあえず数打ちたくなりろくに企業研究もせず「応募」ボタンをポチポチ押してしまいたくなっているので自制できるかどうか…
◆まとめ
7月の面談に退職を申告するから今転職先決めてもなぁ…なんて甘いことを思っていた僕が全て悪い。
内定を貰ったなら転職先の企業にも「いつ辞めて」「いつ入社する」のかを伝えなきゃいけないわけで、それを明確にするには辞める旨を伝えなければ知り得ないわけで…
ボーナスを貰ってから辞めることを諦めれば良かったんだろうけど、残り1ヶ月を切っていてそれもなんだか悔しい。
あちらを立てればこちらが立たずな状況だな…と思ってたけど、別にボーナス面談で切り出さなきゃいけないという簡単なことに今気付いてなんだったんだろう、この数日間悩んでいたのは。