これで楽に!?VBA活用こんにちは、Ryoです。VBAで対話型プログラムとして処理したいケースも多々あるかと思いますが、その中で使用頻度が高いと思われるメッセージボックスの「はい」(Y)「いいえ」(N)を表示し、クリックしたボタンに応じて処理を分岐する方法について書いてみたいと思います。Sample」と表示したボタンを作っています。このボタンを押すと以下のメッセージボックスが表示されます。今回はサンプルとして相当昔に数式で作った工程能力算出表(両側規格:CPK/片側規格:CPU)のシート選択を問い合わせるものです。ここで「はい(Y)」を選択すると、以下のメッセージボックスが表示され、OKを押すとシートが表示されます。最初のメッセージボックス問合せに対し「いいえ(N)」選択した場合は以下のメッセージボックスとなり、OKを押すことで片側規格のシートが表示されます。Subこのように記述しますが、メッセージボックスを表示する為にはMsgBox関数を使います。構文としては、以下になります。helpfile,context])この中でpromptはメッセージとして表示する文字列になります。(半角で1024文字まで)サンプルではMsgBox(“評価対象は「両側規格」ですか?”までですね。次のButtonはボタンの種類を指定しますが、省略した場合はOKボタンのみを表示するvbOKOnlyになります。キャンセル」ボタンを表示このボタン指定の際にアイコンの種類も合わせて指定することが出来ます。vbInformation,とすることで「はい」「いいえ」ボタンと合わせて情報メッセージアイコンを表示させています。次のtitleは指定することでメッセージボックス上のタイトルバーに文字列を表示出来ます。省略も可能ですが、今回サンプルでは”評価方法確認”をtitleとして指定しています。helpfile,contextは今回省略していますので、解説は割愛します。個人的には使用頻度もあまり高くなく、省略することも多い部分ですね。◆クリックしたボタンで処理を分岐するメッセージボックスはクリックされたボタンに応じた値を返します。今回サンプルで使用している「はい」は「vbYes」、「いいえ」は「vbNo」となります。Thenこのように記述しています。戻り値としては「vbYes」が「6」、「vbNo」が「7」となっているので、数値を指定して条件分岐してもOKです。ThenこのようにvbYesの部分が「6」になります。後は条件分岐に従ってメッセージボックスの表示と対応したシートを表示させているのみですので、この辺りは特に問題ないかと思います。本題とは関係ありませんが、今回サンプルに使用している工程能力算出表は表内白抜き部分に評価したい数値を入れれば工程能力が計算されるもので、確か10年ぐらい前に新入社員教育用に作ったものだった気がします。今時需要は無いかもしれませんが、ダウンロード出来るようにリンクを貼っておきますので、用途がありそうでしたら、ご参考までに。(ちなみに本記事のVBAサンプルは含みません)工程能力試算3.まとめメッセージボックスを使って対話型とするのは使い勝手を向上させる上で、とても有用なので利用頻度も高いと思います。今回は「はい」「いいえ」に特化して書いていますが、ボタン種類にありますように他にもたくさんありますので、用途に応じて使用していくことで柔軟性の高いプログラムになりますから、機会あればぜひご検討くださいませ。以上、メッセージボックスボタンの処理分岐を行う(Y/N)についてでした!今回の記事が何かの参考になれば幸いです。【VBA】ブック保存した後の変更有無を確認する私もよく陥るのですが、うっかりアラート表示を強制的に無し状態にして変更したブックを閉じてしまい、そこまでの処理やコードなどが水泡に帰して呆然とする。なると立ち直るまでに時間がかかりますから、未然に防ぐ為にブック(ファイル)を保存した後に変更されたか、されていないかを確認する処理について書いてみたいと思います。記事を読む【VBA】数値の表示形式を取得し別セルへ設定するVBAで処理する際にデータを配列で取り込み、別のセルなどにデータを書き込む際に数値の表示形式(例えば0.00)は書き込み先の表示形式に従う形になりますから意図した表示にはならないこともあります。今回は表示形式(書式)も取得しておけばデータが入力されている状態を再現出来ますので、その内容について書いてみたいと思います。記事を読む【VBA】セル内文字列の一部に色を付けるExcelシート内で表示する文字列で強調したい部分は色を付けたりすることもあるかと思います。Excel操作の場合はセルを編集モードにして対象の文字を部分的にドラッグして選択し、そこで右クリック⇒書式設定で行ったりしますが、今回はこの操作をVBAで行う場合について書いてみたいと思います。記事を読むVBAで自動的に指定範囲をAutoFillする方法Excel-VBAでデータを別ファイルに書込みしたりしていると、気が付けば余裕を持って作ったはずの様式の行数が不足してた!ということがありますよね。その時にAutoFill機能を使って手動で下にずずーっと伸ばしたりしても良いのですが、どうせVBA使うなら不足を察知して指定範囲を自動的に追加させてしまいましょう。記事を読む【VBA】PLCとのシリアル通信で制御文字を可視化する以前の記事「VBAでEasyCommを使用した三菱MELSEC-FXとのシリアル通信」でVBAとPLC(シーケンサー)の通信について触れていますが、送受信の完了確認を行う上で必要となる制御文字の可視化についてはあまり書いていませんでしたので、今回はその部分のサンプルコードを踏まえて解説したいと思います。記事を読む【VBA】セル操作(選択/色/クリア/コピー/値を代入など)VBAと言えば何は無くともセル操作が必ず発生しますので、文字色を変えたい/塗りたい/クリアしたい/位置を選択したい/コピーしたい/値を入れたい。やりたいこととして出てくるのではないでしょうか。今回はそのセル操作に対して、主に使用頻度が高いと思われる基本的な内容を例を交えてご紹介したいと思います。記事を読む【VBA】セルへコメントの挿入/コメントの取得方法Excelで使うコメント機能は便利なので、何かと使用する機会も多いと思います。VBAを使ってコメントを挿入したり、内容を取得することも可能なので、記録として残したいデータ等をコメントとして挿入したり、場合によっては多用されたコメントから内容を取得してセルへ表示したり出来ますので、今回はその内容についてのご紹介です。記事を読む【VBA】文字列の長さ/指定文字(一部)を取得するVBAで処理する中で文字列に対する処理を行うことも多いですが、場合によっては文字の数を取得してループ処理につなげることで、特定文字を抽出したりすることも出来ます。この文字列の長さを取得するにはLen関数/Mid関数を使いますので、今回はその内容について書いていこうと思います。記事を読む【VBA】セル範囲の名前を削除するExcelの機能に名前定義がありますが、これは複数/単一のセル範囲に名前を設定することで参照しやすくなるものなので利用することも多い反面、削除したいことも多いのではないかと思います。今回はその名前の削除やブック内全ての名前を対象に削除する方法などを書いていきます。記事を読む【VBA】印刷倍率/用紙サイズ/印刷の向きを設定するExcelVBAで集計やデータ収集などを実行した後、結果をプリントアウトしたいこともあると思いますが、その際に印刷様式や用途によって倍率を変更したり、サイズや印刷の向きを設定する必要が出てきます。そんな時に手動でページや印刷設定をしなくてもVBAで処理できますので、今回はその内容について書いてみたいと思います。※当サイトはロリポップ!のハイスピードプランです。はじめまして!Ryoと申します。中小企業製造メーカー勤務で主に生産技術業務に勤しむ一方、社内PC管理やVBAで業務効率化を図る日々を送っていますので、これまでの経験や実践してきた内容をここで発信していきたいと考えています。困った時の一助になれるようなブログ作りを目指します。「自恃ろぐ」はAmazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。