![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
動作環境
OS:Windows7(64Bit) Home Premium SP1
MS:Office Version2007 SP3
下記のURLを参考にして、色の設定ダイアログ画面を出力させました。
ところが、この画面、モーダレス出力をモーダル出力にさせたいのですが、
方法が分かりません。
ちなみに、Excelのvbaで、試しています。
どなたか、ご指導願います。
■色の設定ダイアログ画面(URL)
http://www.tsware.jp/tips/tips_343.htm
No.1ベストアンサー
- 回答日時:
ChooseColor APIで表示されるダイアログを、モーダル→モードレスに変更したいという意味なら、
ChooseColorにそういう選択肢は無さそうなので無理だと思います。外していたらすみません。
http://wisdom.sakura.ne.jp/system/winapi/common/ …
作成したカスタムカラーを保存するバージョンを回答した事があります。ご参考まで。
http://okwave.jp/qa/q8449398.html
この回答への補足
苦肉の策ですが、あるフォームをモーダル出力にしてから、
コントロール等で、ChooseColor画面を出力すれば、
モーダル画面の他は、Excel上、アクティブにする事が、
出来ないようです。
No.2
- 回答日時:
#1です。
無いなら自分でこしらえてみました。xl2010で試しています。Web Safe ColorをUserFormに表示して色を選択し、ActiveCellに着色します。
簡単なカレンダーフォームとして作ったものを改造したので、冗長な箇所があります。Indexを設定していますが、ここでは活用していなかったりします。フォームの幅の下限が決まってしまうのが寂しい...枠を表示しないと自由が利きますが、こんどは閉じる手段を考える必要が出てきたり、面倒なのでここまでにしておきます。
☆標準モジュール
Sub test()
UserForm1.Show vbModeless
End Sub
☆UserForm1モジュール
コントロールは何も置きません。サイズも自動で設定します。
Dim myClsIndex As Integer 'ラベルコントロールの番号
Dim labelArray() As LabelCtrl 'ラベルコントロールの配列
Const labelWidth As Single = 10
Const labelHeight As Single = 10
Private Sub UserForm_Initialize()
Dim colorArray As Variant
Dim i As Long, j As Long, k As Long
Dim strColor As String
Dim labelTop As Single, labelLeft As Single
Dim xFrame As Single, yFrame As Single
xFrame = Me.Width - Me.InsideWidth
yFrame = Me.Height - Me.InsideHeight
colorArray = Array("00", "33", "66", "99", "CC", "FF")
myClsIndex = 0
'ユーザーフォームの設定
With Me
.caption = "色選択"
.Width = labelWidth * UBound(colorArray) + xFrame
.Height = labelHeight * (UBound(colorArray) + 1) ^ 2 + yFrame
End With
'ラベルコントロールの配列生成
labelTop = 0
For i = 0 To UBound(colorArray)
For j = 0 To UBound(colorArray)
For k = 0 To UBound(colorArray)
strColor = colorArray(i) & colorArray(j) & colorArray(k)
labelLeft = labelWidth * k
Call addLabel(labelLeft, labelTop, CLng("&H" & strColor))
Next k
labelTop = labelTop + labelHeight
Next j
Next i
End Sub
'ラベルコントロール配列のクリックイベントで起動されるルーチン
Public Sub labelClicked(getColor As Long)
ActiveCell.Interior.Color = getColor
End Sub
'ラベルの追加
Private Function addLabel(labelLeft As Single, labelTop As Single, myColor As Long) As Integer
Dim myLabel As MSForms.Label
Set myLabel = Me.Controls.Add("Forms.Label.1", , False)
myClsIndex = myClsIndex + 1
With myLabel
.top = labelTop
.left = labelLeft
.Height = labelHeight
.Width = labelWidth
.BackColor = myColor
.visible = True
End With
ReDim Preserve labelArray(1 To myClsIndex)
Set labelArray(myClsIndex) = New LabelCtrl
Set labelArray(myClsIndex).parent = Me
labelArray(myClsIndex).S_SetLabel myLabel, myClsIndex
End Function
☆クラスモジュールLabelCtrl
Private WithEvents myLabel As MSForms.Label
Private myIndex As Integer
Private myParent As Object '親UserForm
Public Sub S_SetLabel(newLabel As MSForms.Label, index As Integer)
Set myLabel = newLabel
myIndex = index
End Sub
Private Sub myLabel_Click()
Call Me.parent.labelClicked(myLabel.BackColor)
End Sub
Public Property Get parent() As Object
Set parent = myParent
End Property
Public Property Set parent(newParent As Object)
Set myParent = newParent
End Property
![「vbaマクロで、色の設定ダイアログ画面に」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/a/1359307_5497ecdc74f8b/M.jpg)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) Office(Windows版,Word/Excel/PowerPoint等)にログインできません 4 2022/07/24 15:18
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- ビデオカード・サウンドカード PCに接続したイヤフォンのマイクが使えません。 3 2022/10/22 11:07
- ルーター・ネットワーク機器 echoshow8の音声をBluetoothを介してパソコンで出力するやり方を教えて下さい。 3 2023/04/03 17:09
- Excel(エクセル) エクセル VBA実行中のApplication.ScreenUpdatingについて 3 2023/07/13 21:06
- Excel(エクセル) エクセルで条件付き書式を使わずにセルの文字の色を変える方法を教えて下さい 8 2023/07/28 01:15
- Visual Basic(VBA) PowerPoint VBA で画像の鮮明度を変更する方法がわかりません 2 2023/03/24 13:34
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- オンラインゲーム Valorantの最低・推奨スペックについて質問させてください。 2 2022/09/07 17:48
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カメラスクロールするのを動画...
-
C#で角が丸いテキストボックス
-
vb.netで画面のコントロールId...
-
コントロールを移動できない
-
'ckbl' コントロールは作成され...
-
エクセル・VBA CheckBoxのオブ...
-
エクセルVBAでオプションボタン...
-
VBAのフォームでTextBoxがいっ...
-
間違えて配置してしまったコン...
-
vb.net メニューをダブルクリッ...
-
Excel-VBAでタイマー処理
-
chr関数の呼び出しで「プロ...
-
excelのリストボックスで選択し...
-
VBAのエラーについて、”実行時...
-
USB I/Oのデジタル信号をvbaで...
-
フォーカスの枠線を太くしたい
-
DataGridView、1セルに複数コ...
-
ExcelVBAでListViewが使用できない
-
C#で自分のウインド・ハンド...
-
Excel VBA 動的に作成したチェ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル・VBA CheckBoxのオブ...
-
カメラスクロールするのを動画...
-
vb.netで画面のコントロールId...
-
C#,vb.netで業務用アプリ開発と...
-
EXCELでactivexコントロールを...
-
フォーム上の現在アクティブな...
-
ExcelVBAでListViewが使用できない
-
コンボボックスの文字によるif...
-
C#で角が丸いテキストボックス
-
エクセルVBAでオプションボタン...
-
ユーザーフォームで動的(Me.Con...
-
VBAのフォームでTextBoxがいっ...
-
アクセス特有の書き方?
-
エクセル コントロールツール...
-
間違えて配置してしまったコン...
-
変数をコントロール型で使用す...
-
(VBA)スピンボタンの大量...
-
Labelコントロールの(左右)余...
-
excelのリストボックスで選択し...
-
Excel VBA で Richtextboxを使...
おすすめ情報