
ご存じの方がいらしたらご教示お願いします。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) Excel アクティブセルのみ条件付き書式の色を他の色にしたい。 4 2022/06/11 22:19
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- Excel(エクセル) VBA : スクレイピングできない 4 2023/05/12 22:26
- 数学 仕事で使う算数の計算が難しいです 2 2023/02/01 22:26
- Excel(エクセル) 「Excelのオプション」の「ユーザーインターフェイスのオプション」の設定値をVBAで取得したい 1 2022/07/31 23:49
- HTML・CSS アドバイスを下さい。 1 2022/10/08 01:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一太郎の文字パレットが表示さ...
-
Mac OS10.5.1で記号が打てない...
-
縦に重ねた物の数え方を知りたい
-
アクリル絵の具の落とし方
-
カラーパレットの色名はVBAで取...
-
木製パレットを探しています。...
-
excel2010でカラーパレットを出...
-
荷捌作業効率をあげるためのエ...
-
アプリアイコンの色の変え方が...
-
エクセルである行以下全部を削...
-
Photoshop で8bit /チャンネル ...
-
gimpで色交換できません。
-
「これが」「これで」いいです...
-
Wordでドロップダウンリスト連動
-
「無」と「未」の使い方
-
PDFを開くとデフォルトで閲覧モ...
-
visual studio でインデントを...
-
Google Earth Pro(グーグルア...
-
Jw-cadの範囲指定で文字が選択...
-
Illustratorでボーダーのパター...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
荷捌作業効率をあげるためのエ...
-
アクリル絵の具の落とし方
-
excel2010でカラーパレットを出...
-
イラレわかる方お願いします!
-
縦に重ねた物の数え方を知りたい
-
一太郎の文字パレットが表示さ...
-
文字パレットの表示
-
カラーパレットの色名はVBAで取...
-
エクセルでシートによって選択...
-
デュアルモニターのメリット/...
-
adobeのソフトで、フォントがで...
-
EXCEL VBAのユーザーフォームの...
-
Excelのセルの色
-
木製パレットをベッドにすると...
-
アプリアイコンの色の変え方が...
-
木は松と杉ではどちらがつよい...
-
プラスチックの枕木を探しています
-
木製パレットを探しています。...
-
画像背景の透明化って?
-
ふくれなちゃんが動画で紹介し...
おすすめ情報