ご存じの方がいらしたらご教示お願いします。
http://oshiete1.goo.ne.jp/qa3061670.html
を拝見して疑問に思ったことですが、塗りつぶし色のカラーパレットに表示するToolTipの「色名」はVBAで取得可能でしょうか
色だけであれば
ActiveWorkbook.Colors(n) nは0~56
で取得できます。でもパレットの各色にマウスをポイントしたときにポップアップする「色名」はどんなコレクションで取得できるのでしょうか。
またカラーパレットで前回選択した色は「選択された状態」になっていますが、パレットの「この色が選択されている」ということを取得するプロパティもあるのでしょうか。
この質問は「現在選択されている色」は色名(文字列)としてなら
Application.CommandBars("Drawing").Controls(n).TooltipText
( n は ID=1691 のコントロールのIndex番号 )
で取得できるので、各パレットの「色名」を取得できれば、現在選択されているColorも取得できると考えての質問です
No.2ベストアンサー
- 回答日時:
こんにちは。
おもしろそうだったので、色名からカラーインデックス変換までを関数
化してみましたが....
たぶん、カラーパレットの Click イベントをフックするのは無理では
ないかと思います。
' // 現在カラーパレットで選択されている色のカラーインデックスを返す
Public Function GetColorIndexFromPallet() As Long
' // ※ セル着色用パレット分しか対応してませんが、一応カスタマイズ
' // ※ されたパレットでも大丈夫なようです
Dim sText As String
Dim vBuf As Variant
Dim i As Long
' // Excel ディフォルトパレット
Const COLOR_NAME As String = "自動," _
& "黒,茶,オリーブ,濃い緑,濃い青緑,濃い青,インディゴ,80% 灰色," _
& "濃い赤,オレンジ,濃い黄,緑,青緑,青,ブルーグレー,50% 灰色," _
& "赤,薄いオレンジ,ライム,シーグリーン,アクア,薄い青,紫,40% 灰色," _
& "ピンク,ゴールド,黄,明るい緑,水色,スカイブルー,プラム,25% 灰色," _
& "ローズ,ベージュ,薄い黄,薄い緑,薄い水色,ペールブルー,ラベンダー,白"
Const COLOR_IDEX As String = "-4142," _
& "1,53,52,51,49,11,55,56," _
& "9,46,12,10,14,5,47,16," _
& "3,45,43,50,42,41,13,48," _
& "7,44,6,4,8,33,54,15," _
& "38,40,36,35,34,37,39,2"
AppActivate (Application.Caption)
With Application.CommandBars.Add(Temporary:=True)
sText = .Controls.Add(ID:=1691).TooltipText
sText = Mid$(sText, InStr(sText, "(") + 1)
sText = Left$(sText, Len(sText) - 1)
.Delete
End With
' // ToolTipText からカラーインデックスを取得する
vNam = Split(COLOR_NAME, ",")
vIdx = Split(COLOR_IDEX, ",")
For i = 0 To UBound(vNam)
If sText = CStr(vNam(i)) Then
GetColorIndexFromPallet = CLng(vIdx(i))
Exit For
End If
Next i
End Function
わざわざマクロを書いていただき、ありがとうございます
やはり色名→ColorIndexの変換は、自分でテーブルもしくは配列を準備しないとならないのですね。もしカラーパレットのコレクションがあればより簡単に取得できるかと考えたのですが…
納得できました。回答ありがとうございました。
No.1
- 回答日時:
こんばんは。
いつも読ませていただいております。
>塗りつぶし色のカラーパレットに表示するToolTipの「色名」はVBAで取得可能でしょうか
この前、この話は出ていたと思いますが、現在のは、ツールアイコン(ControlGrid) の中の選択に関してで、「塗りつぶし」の中に関してのみです。
最初の開いている状態での、マクロの登録した時の第一回目だけ、このマクロはデフォルトなのか、塗りつぶしなのか、区別がつかないことがあるだけですが、後は大丈夫だと思います。(理由は、Static 変数で、InstanceIdを確保していないからです。最初、デフォルトの色と塗りつぶしなしとは分からないからです。InstanceID自体は、何も意味がありませんが、マクロの第一回目を取得するためです。)
Sub getColorName()
Dim myColor As String
Const DEFCOLOR As String = "黄"
Static oldID As Long
With Application.CommandBars("Formatting").FindControl(, 1691)
oldID = .Controls("配色(&C)").InstanceId
myColor = .Controls("配色(&C)").TooltipText
If myColor Like "配色*" And oldID > 0 Then
myColor = "色つぶしなし"
ElseIf myColor Like "配色*" Then
myColor = DEFCOLOR
End If
MsgBox myColor
End With
End Sub
前回、実は、この ControlGrid には、新たに、RaiseEventでイベントを付けようとしたのですが、それに失敗して、最初の思惑とはだいぶ規模の小さな解決になってしまいました。(^^;
いつも勉強させていただいております
先日の質問も拝見していましたが「Global変数で前回の塗りつぶし色を記憶しておく」方法を紹介されており、ボタンから色を取得する方法については参考程度に書かれていたので、自分なりに考えてみた次第です
今回教えていただいたことを手がかりに深堀りしてみます
ご回答ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
推しミネラルウォーターはありますか?
推しミネラルウォーターがあったら教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
荷捌作業効率をあげるためのエ...
-
アクリル絵の具の落とし方
-
エクセル2007カラーパレッ...
-
教えてください。 直径43センチ...
-
イラレわかる方お願いします!
-
縦に重ねた物の数え方を知りたい
-
Excelで勝手に色が変わる?
-
エクセルである行以下全部を削...
-
Photoshop で8bit /チャンネル ...
-
白飛びした(明るい)写真をiPhon...
-
EXCEL VBAで全選択範囲の解除
-
visual studio でインデントを...
-
VBAでファイルを開くときにファ...
-
「無」と「未」の使い方
-
Excel VBA あるセルでENTERを押...
-
ipadのpagesでMS明朝を使う方法...
-
Wordでドロップダウンリスト連動
-
Excel 行列が選択出来ない
-
gimpで色交換できません。
-
Jw-cadの範囲指定で文字が選択...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクリル絵の具の落とし方
-
イラレわかる方お願いします!
-
縦に重ねた物の数え方を知りたい
-
荷捌作業効率をあげるためのエ...
-
excel2010でカラーパレットを出...
-
文字パレットの表示
-
ATOK2017 のATOKパレットのON/OFF
-
アプリアイコンの色の変え方が...
-
mac カラーパレットを保存したい
-
一太郎の文字パレットが表示さ...
-
エクセル2007カラーパレッ...
-
教えてください。 直径43センチ...
-
スーパーのチラシなどで使われ...
-
カラーチャート(カラーパレット...
-
フォークリフト操作
-
木製パレットをベッドにすると...
-
Excel2003のカラーパレットをEx...
-
EXCEL VBAのユーザーフォームの...
-
油彩のパレットの色
-
Word2007の、フォントの色
おすすめ情報