[ HOME ] [ BACK ] [ NEXT ]

犬でもわかるExcelVBA講座

§9-2 ボタンをクリックするとセルの色が変わるようにする。(Excel5.0 Excel.95)

今回は、ユーザーとの対話を考えてみましょう。
たとえば、前々回のセルの色を変えるコード・・
Range("A3").Interior.ColorIndex = 3
これだとセルA3だけしか、赤に変更することができません。
ユーザーが選択したセルを赤に変更するにはどうすればいいのでしょう??
自動記録を見てみましょう・・
'
' Record1 マクロ
' マクロ記録日 : 2001/9/xx ユーザー名 : れいぞー
'
'
Sub Record1()
   Range("A3").Select
    With Selection.Interior
      .ColorIndex = 3
      .Pattern = xlSolid
   End With
End Sub

セルA3を選択したあとを見てください。
Selection』というのが書いてあります。
ヘルプを見てみましょう。
セルを選択しているときは、Range オブジェクトが返されます。何も選択していないときは Nothing が返されます。
とのこと・・・
ということは、Range("A3").Selectを記入しなければ、
ユーザーが選択したセル(マクロを実行する直前に選択されているセル)に対して
処理が行われることになりますね。
試しに、別のセルを選択して『Range("A3").Select 』を消したコードを実行してみましょう。
'
' Record1 マクロ
' マクロ記録日 : 2001/9/xx ユーザー名 : れいぞー
'
'
Sub ColorRed()
    With Selection.Interior
      .ColorIndex = 3
      .Pattern = xlSolid
   End With
End Sub

想像したとうり、選択したセルが、赤に塗りつぶされました。
ついでにプロシージャ名も変更します。
『Sub Record1()』 を 『Sub ColorRed()』に変更してください。

これだけでも、だいぶ 『プログラムっぽく』 なりました。
それでは、さらに 『プログラムっぽく』 してみましょう。
セルを選択してからいちいち、Alt+F8を押して実行・・では面倒くさいしかっこ悪いので、
シート上にボタンを貼り付けて、そのボタンを押すと
選択されているセルの色を赤に変更するようにしてみましょう。

表示⇒ツールバーで、フォームにチェックを入れてOKを押すと、ツールバーが現れます。
その中の、コマンドボタンをクリックしてください。
(アイコンの上にマウスポインタをおくいて1秒くらいすると名前が出てきます。)
シート上で左上から右下に対角線状にドラッグすると、ボタンが貼りついて、マクロの登録
ダイアログボックスが現れるので、さっき記録して変更したマクロを選択してOKを押します。

これだけです。
では、セルを選択して、ボタンを押してみましょう。
どうですか?選択範囲が赤くなりましたか?なったら成功です!!

今回は、ボタンにマクロを登録しましたが、同じような方法で図形にも登録できるので、簡単に説明します。
表示⇒ツールバーで、図形描画にチェックを入れてOKを押すと、ツールバーが現れます。
四角形を選択して、シートに貼り付けたらその四角形を右クリックしてマクロの登録をクリックすると
マクロの登録ダイアログボックスが現れるので、マクロを選択してOKを押します。


では、色を元に戻すボタンを作ってそのボタンを押すとセルの色がなくなるコードを
自分で作ってみてください。正解は、こちらです。(上の講座をみればわかるはず・・)

■■■■■■■■■■■■ まとめ ■■■■■■■■■■■■■

 
1 Selectionプロパティーはセルを選択しているときは、Range オブジェクトを返す。
2 ボタンや図形にマクロを登録できる。そのオブジェクトをクリックすると登録されたマクロが実行される。

今回は、ボタンのクリックにより選択範囲のセルの色を変更する方法を説明しました。
赤色ばっかりじゃなく、色も選択できるようになるともっと使い勝手がよくなりそうです。
次回は、色も選択できるようにすることによって
変数の使い方を説明したいと思います。


■このページはリンクフリーです。どんどんはってください。特に連絡する必要もありません。
■ご連絡いただければ、こちらからもリンクします。出来れば下のバナーを使ってください。
■ご意見・ご要望はこちらからお願いします。

       

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

答え

Sub ColorNone()
    With Selection.Interior
        .ColorIndex = xlNone
      .Pattern = xlSolid
   End With
End Sub

 .ColorIndex xlNone にするだけです。
しかし、「色なし」が「xlNone」だとどうやって調べればいいのでしょうか?・・・

自動記録すればすぐにわかります。

<<戻る