[[20090407110829]] 『スポイトのような機能』(みかん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『スポイトのような機能』(みかん)
 いつも勉強させていただいております。

 今回は、「色をスポイトしてスポイトした色を他のセルに付ける」というようなマクロ
 が作れないかどうか聞きに来ました。
 今現在Personal.xlsで下記のようなマクロを使い、疑似ショートカットキーで色を付けています。
 ====
 Sub Auto_Open()
 Application.OnKey "%{q}", "APaint"
 Application.OnKey "%{z}", "BPaint"
 Application.OnKey "%{x}", "CPaint"
 Application.OnKey "%{c}", "DePaint"

 End Sub
 '
 Sub DePaint()'脱色
    Selection.Interior.ColorIndex = xlNone
 End Sub

 Sub APaint()'暖色
    Selection.Interior.ColorIndex = 44
 End Sub

 Sub BPaint()'寒色
    Selection.Interior.ColorIndex = 34
 End Sub

 Sub CPaint()'中間色
    Selection.Interior.ColorIndex = 4
 End Sub

 ====
 しかし、色の使い分けが仕事が増えるに比例して増えてしまい、3色では足りなくなってしまいました。
 そこで、「選択したセルの色を取り込んで、ショートカットキーAlt+Qで取り込んだ色で塗りつぶしたい」と考えています。
 よろしくお願いいたします。

 マクロは分かりませんが、置換のオプションで既存のセルの色を抽出して置き換えることができます。
 この操作を記録してみれば、ヒントになりませんか?
 (wisemac21)


 Personal.xls の標準モジュールに下記を
 '--------------------------------------
 '--- 選択した色を保存するための変数を宣言
 Public selectColor As Long

 '--- 関数をキーに登録する関数
 Sub setFunction()
     Application.OnKey "%{g}", "getColor"
     Application.OnKey "%{s}", "setColor"
 End Sub

 Sub getColor() '色の取得
    selectColor = Selection.Interior.ColorIndex
 End Sub

 Sub setColor() '色の設定
    Selection.Interior.ColorIndex = selectColor
 End Sub
 '--------------------------------------

 Personal.xls のThisworkbookモジュールに下記を
 '--------------------------------------
 '--- EXCEL 起動時に関数をキーに割り当て
 Private Sub Workbook_Open()
    setFunction
 End Sub
 '--------------------------------------

 でどうでしょうか。
 (Mook)


 wisemac21様
 私の求めていた解は得ることができませんでしたが、置換で色まで指定できることを知りませんでした
 とても勉強になりました。
 ありがとうございます。

 Mook様
 私の思っていた通りの操作ができました!
 ありがとうございます。
 できましたら
 >Public selectColor As Long
 で何をしているのかと、

 > Personal.xls のThisworkbookモジュールに下記を
 >'--------------------------------------
 >Private Sub Workbook_Open()
 >   setFunction
 >End Sub
 ここの部分で、Thisworkbookに入れる意味と、setFunctionの意味を教えていただけたらと思います。

 よろしくお願いいたします。
 (みかん)

 そんな大したことはしていませんが、回答のコードに注釈を入れました。
 こちらで試した2007ではキーアサインする関数は標準モジュールにないとうまく
 動かないので実体と登録処理を標準モジュールに置き、EXCELを起動したときに
 登録処理をするよう、Thisworkbook モジュールに置きました。

 Auto_Open() と Workbook_Open() はどちらも起動時に実行するもので、どちらを
 使っても同じかと思いますが、私は好みで(^^;;) Workbook イベントを使用して
 います。
 (Mook)


 Mook様
 ご丁寧にありがとうございます。
 Autoopenの使い方もよくわかってなくて、コピーしてきたものをそのまま標準モジュールに
 貼り付けているような状態でしたので、これを機にもう少しイベントについて勉強しなおしたいと思います。
 ありがとうございました。
 (みかん)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.