テーマ:シートを検索して着色するマクロ(その2)
◆リクエスト紹介
今回は、前回のシリーズ「文字列を検索するマクロ」に関連していただいた
下記のリクエストをご紹介しています。
投稿者:YSさん
>今回の文字列検索マクロ面白いです。
>続きで、シート全体に検索をして、
>対象になったセルの全てに着色が
>したいのですが、可能ですか。
YSさん、リクエストありがとうございます。
◆今日の講座
前回は、まずこのリクエストのポイントとなる「検索結果に色を付ける」とい
うところの途中までいきました。今回はその続きです。
さて、前回の最後に下記のような(ごく簡単な?!)問題を出しました。
Q.ではこのマクロを「検索されたデータのセルを赤く塗りつぶす」
というように修正するには、どうしたらよいでしょうか?
黄色を赤に変えるだけなので簡単ですよね?!
(「赤って何番??」ですって・・・)
1)
では、今日はまずその答え合わせからです。
――――――――――――――――――――――――――――+
1."gogo96.xls"を開きます。(セキュリティ確認画面が表示された
場合には、[マクロを有効にする]を選んでください。)
2.いつものように「マクロの記録」を開始します。
[ツール(T)] → [マクロ(M)] → [●新しいマクロの記録(R)...]
→ マクロの記録画面が出るのでそのまま[OK]をクリック。
3.次に、以下の操作でセルに色をつけます。
[書式(O)] → [セル(E)...] で「セルの書式設定」画面を開き、
[パターン]タブで、セルの網掛けの色を赤色(左から1列目の上から
3番目の色)をクリックし、下の[OK]ボタンをクリックします。
(この操作は、コマンドバーの[塗りつぶしの色]を使ってやっても
構いません。)
4.最後に、[ツール(T)] → [マクロ(M)] → [■記録終了(R)]とやって、
マクロの記録を終了させます。
――――――――――――――――――――――――――――+
2)
次に、いま記録したプログラムの中身を確認します。
――――――――――――――――――――――――――――+
1.マクロプログラムの画面を表示します。
[ツール(T)] → [マクロ(M)] → [Visual Basic Editor(V)]
2.この画面の左上半分の[-標準モジュール]下の一番下に[Module3]が
あると思いますので、その[Module3]をダブルクリックします。
――――――――――――――――――――――――――――+
++++++++++++++++++++++++++++―
Sub Macro3()
'
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
End Sub
++++++++++++++++++++++++++++―
これで、赤が何番か?ということは分かりましたよね。
(先ほどの色つけの操作方法によっては、若干上記プログラムと違いのある場
合もありますが、ここでは一切気にする必要はありません。要は、「赤は3番
だ」ということが分かればよいだけです。)
この方法で、まずは着色したい色の番号を調べて、あとはたった1箇所プログ
ラムを直せばよいだけです。
ついでなので、その直す1箇所とは、前回着色した黄色は6番でしたので、
プログラム中のどこかの 6 を 3 に直すだけ。というのが、前回の問題の答え
です。
ということで、検索されたデータのセルを自分が好きな色に塗りつぶすための
マクロが、この方法で作れるようになったことと思いますので、ここから今日
の本題に入ります。
3)
はじめに、いまのプログラムを1回実行してみます。
――――――――――――――――――――――――――――+
1.エクセルの画面に戻って、シート[Sheet6]を開いてください。
2.では、さっそく実行します。
[ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が出るので
そのまま(「Macro1」が選択された状態で)[実行]をクリック。
3.すると、入力窓のあるポップアップ画面が表示されたと思いますので、
その入力窓に以下の日本語(3文字)
ノート
と入力してください。
4.そうしたら、このポップアップ画面にある[OK]ボタンをクリックします。
――――――――――――――――――――――――――――+
すると、新たにノートのセルが黄色く塗りつぶされていればOKです。
でも、ここでちょっと問題なのは、前回検索したペンも塗りつぶされたままに
なっている点です。そうです、検索する度に前回塗りつぶされた色は消してや
らなければなりません。
4)
では、それを踏まえてプログラムをちょっといじっていきます。
――――――――――――――――――――――――――――+
1.まずは、「マクロの記録」を開始します。
[ツール(T)] → [マクロ(M)] → [●新しいマクロの記録(R)...]
→ マクロの記録画面が出るのでそのまま[OK]をクリック。
2.次に、通常のExcelの操作にて、B列~E列の4列を選択状態にしてください。
(表の上部のアルファベットの列名のBの部分("ボールペン"の上)を
左ボタンを押したまま、マウスをEまでもっていって、左ボタンを離す。)
3.次に、以下の操作でセルの塗りつぶし色を消します。
[書式(O)] → [セル(E)...] で「セルの書式設定」画面を開き、
[パターン]タブで、セルの網掛けの色の[色なし]をクリックし、
下の[OK]ボタンをクリックします。
(この操作は、コマンドバーの[塗りつぶしの色]の[塗りつぶしなし]
とやっても構いません。)
4.最後に、[ツール(T)] → [マクロ(M)] → [■記録終了(R)]とやって、
マクロの記録を終了させます。
――――――――――――――――――――――――――――+
5)
次に、いま記録したプログラムの中身を確認します。
――――――――――――――――――――――――――――+
1.Windows画面下方のタスクバーでプログラムの画面を表示します。
2.この画面の左上半分の[-標準モジュール]下の一番下にある
[Module3]をダブルクリックします。
――――――――――――――――――――――――――――+
++++++++++++++++++++++++++++―
Sub Macro4()
'
Columns("B:E").Select
Selection.Interior.ColorIndex = xlNone
End Sub
++++++++++++++++++++++++++++―
セルの塗りつぶされた色を消すには、このようなたった2行のプログラムを
組み込めばよいことが分かります。
6)
では次に、これを基のプログラムに組み込みます。
――――――――――――――――――――――――――――+
1.まず、今度は(画面の左上半分の[-標準モジュール]すぐ下の)
[Module1]をダブルクリックしてください。
2.そうしたら、右側に表示されたMacro1()のプログラムの先頭の
b = InputBox("検索したい商品名を入力してください。")
という行の上に、下記の1行を追加してください。
Call Macro4
――――――――――――――――――――――――――――+
修正した後のプログラムはつぎの様になります。
++++++++++++++++++++++++++++―
Sub Macro1()
'
Call Macro4
b = InputBox("検索したい商品名を入力してください。")
n = Cells(Rows.Count, "B").End(xlUp).Row
For i = 1 To n
・
・
・
++++++++++++++++++++++++++++―
これで、実行前に前回塗りつぶされたセルの色をクリアーしてくれる
プログラムとなりました。
7)
それでは、確認のため実行してみましょう。
――――――――――――――――――――――――――――+
1.エクセルの画面に戻って、シート[Sheet6]を開いた状態で、
2.では、さっそく実行します。
[ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が出るので
そのまま(「Macro1」が選択された状態で)[実行]をクリック。
3.すると、入力窓のあるポップアップ画面が表示されたと思いますので、
その入力窓に以下の日本語(2文字)
ペン
と入力して、その下の[OK]ボタンをクリックします。
5.続けてもう一度実行します。
[ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が出るので
そのまま(「Macro1」が選択された状態で)[実行]をクリック。
6.再び表示されたポップアップ画面の入力窓に、今度は以下の日本語(3文字)
ノート
と入力して、その下の[OK]ボタンをクリックします。
――――――――――――――――――――――――――――+
これで、何度検索しても大丈夫な(前の検索結果は残っていない)マクロとな
ったことが確認できました。
今回はこれで終了です。
今日作ったマクロプログラムは次回もこの続きでまた使いますので、大切に
保管しておいてください。(ファイル名 "gogo97.xls" )
◆リクエスト紹介
今回は、前回のシリーズ「文字列を検索するマクロ」に関連していただいた
下記のリクエストをご紹介しています。
投稿者:YSさん
>今回の文字列検索マクロ面白いです。
>続きで、シート全体に検索をして、
>対象になったセルの全てに着色が
>したいのですが、可能ですか。
YSさん、リクエストありがとうございます。
◆今日の講座
前回は、まずこのリクエストのポイントとなる「検索結果に色を付ける」とい
うところの途中までいきました。今回はその続きです。
さて、前回の最後に下記のような(ごく簡単な?!)問題を出しました。
Q.ではこのマクロを「検索されたデータのセルを赤く塗りつぶす」
というように修正するには、どうしたらよいでしょうか?
黄色を赤に変えるだけなので簡単ですよね?!
(「赤って何番??」ですって・・・)
1)
では、今日はまずその答え合わせからです。
――――――――――――――――――――――――――――+
1."gogo96.xls"を開きます。(セキュリティ確認画面が表示された
場合には、[マクロを有効にする]を選んでください。)
2.いつものように「マクロの記録」を開始します。
[ツール(T)] → [マクロ(M)] → [●新しいマクロの記録(R)...]
→ マクロの記録画面が出るのでそのまま[OK]をクリック。
3.次に、以下の操作でセルに色をつけます。
[書式(O)] → [セル(E)...] で「セルの書式設定」画面を開き、
[パターン]タブで、セルの網掛けの色を赤色(左から1列目の上から
3番目の色)をクリックし、下の[OK]ボタンをクリックします。
(この操作は、コマンドバーの[塗りつぶしの色]を使ってやっても
構いません。)
4.最後に、[ツール(T)] → [マクロ(M)] → [■記録終了(R)]とやって、
マクロの記録を終了させます。
――――――――――――――――――――――――――――+
2)
次に、いま記録したプログラムの中身を確認します。
――――――――――――――――――――――――――――+
1.マクロプログラムの画面を表示します。
[ツール(T)] → [マクロ(M)] → [Visual Basic Editor(V)]
2.この画面の左上半分の[-標準モジュール]下の一番下に[Module3]が
あると思いますので、その[Module3]をダブルクリックします。
――――――――――――――――――――――――――――+
++++++++++++++++++++++++++++―
Sub Macro3()
'
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
End Sub
++++++++++++++++++++++++++++―
これで、赤が何番か?ということは分かりましたよね。
(先ほどの色つけの操作方法によっては、若干上記プログラムと違いのある場
合もありますが、ここでは一切気にする必要はありません。要は、「赤は3番
だ」ということが分かればよいだけです。)
この方法で、まずは着色したい色の番号を調べて、あとはたった1箇所プログ
ラムを直せばよいだけです。
ついでなので、その直す1箇所とは、前回着色した黄色は6番でしたので、
プログラム中のどこかの 6 を 3 に直すだけ。というのが、前回の問題の答え
です。
ということで、検索されたデータのセルを自分が好きな色に塗りつぶすための
マクロが、この方法で作れるようになったことと思いますので、ここから今日
の本題に入ります。
3)
はじめに、いまのプログラムを1回実行してみます。
――――――――――――――――――――――――――――+
1.エクセルの画面に戻って、シート[Sheet6]を開いてください。
2.では、さっそく実行します。
[ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が出るので
そのまま(「Macro1」が選択された状態で)[実行]をクリック。
3.すると、入力窓のあるポップアップ画面が表示されたと思いますので、
その入力窓に以下の日本語(3文字)
ノート
と入力してください。
4.そうしたら、このポップアップ画面にある[OK]ボタンをクリックします。
――――――――――――――――――――――――――――+
すると、新たにノートのセルが黄色く塗りつぶされていればOKです。
でも、ここでちょっと問題なのは、前回検索したペンも塗りつぶされたままに
なっている点です。そうです、検索する度に前回塗りつぶされた色は消してや
らなければなりません。
4)
では、それを踏まえてプログラムをちょっといじっていきます。
――――――――――――――――――――――――――――+
1.まずは、「マクロの記録」を開始します。
[ツール(T)] → [マクロ(M)] → [●新しいマクロの記録(R)...]
→ マクロの記録画面が出るのでそのまま[OK]をクリック。
2.次に、通常のExcelの操作にて、B列~E列の4列を選択状態にしてください。
(表の上部のアルファベットの列名のBの部分("ボールペン"の上)を
左ボタンを押したまま、マウスをEまでもっていって、左ボタンを離す。)
3.次に、以下の操作でセルの塗りつぶし色を消します。
[書式(O)] → [セル(E)...] で「セルの書式設定」画面を開き、
[パターン]タブで、セルの網掛けの色の[色なし]をクリックし、
下の[OK]ボタンをクリックします。
(この操作は、コマンドバーの[塗りつぶしの色]の[塗りつぶしなし]
とやっても構いません。)
4.最後に、[ツール(T)] → [マクロ(M)] → [■記録終了(R)]とやって、
マクロの記録を終了させます。
――――――――――――――――――――――――――――+
5)
次に、いま記録したプログラムの中身を確認します。
――――――――――――――――――――――――――――+
1.Windows画面下方のタスクバーでプログラムの画面を表示します。
2.この画面の左上半分の[-標準モジュール]下の一番下にある
[Module3]をダブルクリックします。
――――――――――――――――――――――――――――+
++++++++++++++++++++++++++++―
Sub Macro4()
'
Columns("B:E").Select
Selection.Interior.ColorIndex = xlNone
End Sub
++++++++++++++++++++++++++++―
セルの塗りつぶされた色を消すには、このようなたった2行のプログラムを
組み込めばよいことが分かります。
6)
では次に、これを基のプログラムに組み込みます。
――――――――――――――――――――――――――――+
1.まず、今度は(画面の左上半分の[-標準モジュール]すぐ下の)
[Module1]をダブルクリックしてください。
2.そうしたら、右側に表示されたMacro1()のプログラムの先頭の
b = InputBox("検索したい商品名を入力してください。")
という行の上に、下記の1行を追加してください。
Call Macro4
――――――――――――――――――――――――――――+
修正した後のプログラムはつぎの様になります。
++++++++++++++++++++++++++++―
Sub Macro1()
'
Call Macro4
b = InputBox("検索したい商品名を入力してください。")
n = Cells(Rows.Count, "B").End(xlUp).Row
For i = 1 To n
・
・
・
++++++++++++++++++++++++++++―
これで、実行前に前回塗りつぶされたセルの色をクリアーしてくれる
プログラムとなりました。
7)
それでは、確認のため実行してみましょう。
――――――――――――――――――――――――――――+
1.エクセルの画面に戻って、シート[Sheet6]を開いた状態で、
2.では、さっそく実行します。
[ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が出るので
そのまま(「Macro1」が選択された状態で)[実行]をクリック。
3.すると、入力窓のあるポップアップ画面が表示されたと思いますので、
その入力窓に以下の日本語(2文字)
ペン
と入力して、その下の[OK]ボタンをクリックします。
5.続けてもう一度実行します。
[ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が出るので
そのまま(「Macro1」が選択された状態で)[実行]をクリック。
6.再び表示されたポップアップ画面の入力窓に、今度は以下の日本語(3文字)
ノート
と入力して、その下の[OK]ボタンをクリックします。
――――――――――――――――――――――――――――+
これで、何度検索しても大丈夫な(前の検索結果は残っていない)マクロとな
ったことが確認できました。
今回はこれで終了です。
今日作ったマクロプログラムは次回もこの続きでまた使いますので、大切に
保管しておいてください。(ファイル名 "gogo97.xls" )