エクセルVBAのユーザーフォーム上のコマンドボタンに「フォントの色」の機能を搭載したいのですが、具体的にどういうマクロを書けばいいのかわからずに困っています。
CommandBars.FindControl(ID:=401).Execute
以下のような行をコマンドボタンに登録してみたのですが、実行するとコマンドメニュー上の「フォントの色」ボタンの下に、色の選択肢がポップアップされてしまいます。ユーザーフォーム上のボタンのしたに、色選択のポップアップを表示したいのですが、どなたか方法をご教示いただけますと幸いです。
No.2ベストアンサー
- 回答日時:
モジュール冒頭に追加。
Option Explicit
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMillsecounds As Long)
Private Sub CommandButton1_Click()の後半を変更。
:
With Application.CommandBars("Font Color")
.Position = msoBarFloating
.Left = L * DPI / PPI
.Top = T * DPI / PPI
.Visible = True
While .Visible
Sleep 1
DoEvents
Wend
End With
Me.CommandButton1.BackColor = ActiveCell.Font.Color
End Sub
とやるとポップアップを閉じたタイミングで反映します。
...あまり深く考えてないです。&そんなに検証してないのでうまくいかなかったら工夫してみてください。
No.1
- 回答日時:
Private Sub CommandButton1_Click()
Const DPI As Long = 96 'Dot per inch
Const PPI As Long = 72 'Point per inch
Dim L As Single
Dim T As Single
With Me
L = .Left + (.Width - .InsideWidth) / 2
T = .Top + .Height - .InsideHeight
With .CommandButton1
L = L + .Left
T = T + .Top + .Height
End With
End With
With Application.CommandBars("Font Color")
.Position = msoBarFloating
.Left = L * DPI / PPI
.Top = T * DPI / PPI
.Visible = True
End With
End Sub
概ねこんな感じでCommandButton1下にポップアップさせます。
DPIは固定してますが、環境によるのでWinAPIのGetDeviceCaps関数を使って取得するようにしたほうが良いかもしれません。
>end-u様
ご回答ありがとうございます。
上記の方法でイメージどおりです。
一点追加でご質問させてください。
現在、CommandButton1の色を便宜上、黒で塗っているのですが、CommandButton1を直近に選ばれた色(たとえば緑)で塗ることはできるのでしょうか?
趣旨は、よりエクセルのコマンドバーに近づけたいというものです。
【イメージしている動作】
CommandButton1を押すとボタンの色(例えば緑)を適用。
↓
CommandButton1の横に新たに設ける↓ボタンを押すと上でご教示いただいたマクロが走り、例えば(赤)を選んだ場合にはフォントが赤色になり、ポップアップを閉じた後にはCommandButton1の色が赤色になる。
考え方の道筋をご教示いただけますと幸甚です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- Visual Basic(VBA) エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします 2 2023/05/03 17:35
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA オプションボタ...
-
EXCEL VBAのユーザーフォームに...
-
エクセルVBA ユーザーフォーム...
-
AccessでExcelシートを印刷
-
アクセスで「モジュールがあり...
-
ExcelVBAでセルをクリックして...
-
標準モジュールだとエラーにな...
-
Accessでaccdeへ変換で機能しない
-
Accessでエラーメッセージの表...
-
access2000でカレンダーコント...
-
コマンドボタンに色を付けるこ...
-
USBメモリを丸ごと仮想イメージ...
-
JW-CADのAutoモードの解除はで...
-
Autocad LT 引き出し線の上に文...
-
Access レポート印刷するときに...
-
passwordが入れられません・・・・
-
データベースのINT型項目にNULL...
-
レコードを保存するコード ア...
-
YahooのIDがロックされてしまい...
-
アクセスでテキストボックスの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA オプションボタ...
-
EXCEL VBAのユーザーフォームに...
-
ExcelVBAでセルをクリックして...
-
アクセスで「モジュールがあり...
-
コマンドプロンプト使用時に「'...
-
ACCESS フォームでの、データ...
-
標準モジュールだとエラーにな...
-
Accessでaccdeへ変換で機能しない
-
Notesでアンケートをとりたい
-
JW-CADのAutoモードの解除はで...
-
エクセルVBAからアクセスフ...
-
Accessでエラーメッセージの表...
-
Autocad LT 引き出し線の上に文...
-
ACCESS カンマをスペースに置...
-
ExcelVBAで指定外のUserFormを...
-
ユーザーフォームのスクロール...
-
access の 閉じるボタンを無効...
-
ACCESS フォームで、ボタンの...
-
USBメモリを丸ごと仮想イメージ...
-
エクセルVBA ユーザーフォーム...
おすすめ情報