ktMsgBoxAddin

【 ktMsgBox とは 】

ktMsgBox は、VBA 標準搭載の MsgBox 関数を遥かに越えるインターフェースツールです。

ktMsgBox ＆ ktMsgBoxEX ( ktMsgBoxAddin Ver 3.40 ) 関数は、 kt関数アドイン Ver 5.00 にも
収録されています。

MsgBox 関数は、最もよく使われる ユーザーインターフェース ツール ですが､
  • 表示位置を指定できない
  • カラー表示できない
等､不満に思った事はありませんか？

MsgBox 関数を代替する 『 ktMsgBox 関数 』 を使えば､そんな不満は綺麗サッパリ と解消します。
  • 入力フィールド（TextBox 等）の直ぐ近くに ポップアップ させる
  • 背景色/文字色/フォント を変える
  • １行ごとに文字色/フォント を変える
  • チャイム を鳴らして､オペレーター へ注意を喚起する
『 ktMsgBox 関数 』 では､こんな事は朝飯前です。
使い方は 「MsgBox 」 に倣っているので簡単に使えますし､今までのプログラムを修正するのも簡単です。

[ AddinBox Home ] [ ktMsgBox MainPage ]
K.Tsunoda(AddinBox) Mail:addinbox@h4.dion.ne.jp CopyRight(C) 2001 Allrights Reserved.


【 特　徴 】

Ver3.40 は OS/Excel ( x64 ) をサポートしています。
1. インターフェースはＶＢＡ関数の [ MsgBox ] を踏襲しているので､プログラム内での
関数名”MsgBox を ”ktMsgBox” に変えるだけで､そのまま利用できます。
2. MsgBox のインターフェースに合わせた『ktMsgBox 』 と､その機能拡張版である
『ktMsgBoxEX 』 の２種類を用意しました（『ktMsgBoxEX 』 は [ MsgBox ] とは
インターフェースが根本的に異なります）。
3. MsgBox と同じ様に 「コントロールパネル/画面のプロパティ」 設定値を変えると､
ktMsgBox での既定フォントにも反映されます。
4. MsgBox では不可能だった､下記の設定がパラメータ指定により可能です。
a) | 表示位置の指定 Ver 3.30 で追加された ktCell2Position 関数を併用する事により、 指定のセルの上に表示させる事が可能になりました 。
b) | 文字色および背景色の指定
c) | 使用フォントの指定(MS ゴシック,MS 明朝 etc ）
d) | フォントサイズの指定
e) | 行単位でのフォント/文字色の指定 ‥‥‥ [ ktMsgBoxEX ]
（日本語バージョン）
（英語バージョン）
5. | 「チャイム機能」 により 『お呼び出し』 機能として利用できます。
6. アイコンおよび､Wave音をユーザーで用意したものに変更できます。
a) | 例えば 「会社ロゴ」 などを表示する。
b) | 「エラーがあります」 「処理が終わりました」 といった音声をWaveファイル化して､ktMsgBox関数に利用すれば､音声ガイダンス付きのメッセージボックスとする。
c) | MsgBox標準の４種の他に､オリジナルアイコン１３種が [ vbCritical ] 等のように パラメータ指定で利用できます。
7. | ボタン表記(はい､中止 等) を､”英語”表示(YES , ABORT 等) に変える事もできます。
8. [ OK ] [ Cancel ] など既定のボタン以外に､自由にボタンキャプションを指定できる
ユーザー定義ボタン（Max４個）を用意しました。これにより､
[ 全てはい ] [ 全ていいえ ] [ はい ] [ いいえ ]
というようなボタンセットを使う事もできます。
9. 入力欄を設ける事も出来るので､[ InputBox 関数 ] の代替にもなります。InputBox 関数
では出来なかった以下の機能を持っています。
a) | 入力欄の幅を､入力文字数に適した幅で指定できます。
b) | 数値と日付の属性指定が可能です。
c) | 日本語指定にすれば､自動的に入力欄でのＩＭＥはＯＮになります。
d) | パスワード用に､入力文字を"*"で表示する機能もあります。
ktMsgBox/ktMsgBoxEXでの､メッセージのフォント編集と合わせれば､ユーザーに優しい入力インターフェースとする事が出来ます。
10. 背景に画像を指定することができます。この場合に限り､画像がちゃんと表示されるように
ウィンドウサイズを指定することができます。
11. | 一定時間表示してから､自動的に閉じるという事もできます。
12. ＨＰアドレス（http:// ..... )やメールアドレス（mailto: ..... ）をHyperLinkとして表示させる
事もできます。
13. ktMsgBox/ktMsgBoxEX のパラメーターは､その機能故に､数も多く､またバリエーションも
豊富な為､その コーディング には手間が掛かるかもしれません。
しかし､ 付属の体験ブックには､ktMsgBox ウィザード という ツール が入っています。
デモンストレーションした内容を､そのままソースコードに展開する機能があり
ますので､引数の規則に煩わされる事はありません。


【 動 作 環 境 】

-- 開発環境 --
Windows10 , Excel 2003SP3/2007SP3/2010SP2/2016

-- 動作環境 --
Windows 98SE 以降 64bit 可
Excel 2000 以降 64bit 可

【 利 用 方 法 】

ktMsgBox を利用するには、先ず、アドイン登録を行ないます。

次に、[ ktMsgBox 関数/ktMsgBoxEX 関数 ] を利用するブックで [ ktMsgBoxAddin ] への参照設定を
付けます（アドイン登録抜きで、参照設定のみでも可）。

  1. 配布ファイルを解凍すると、以下のファイルが展開されます。
    1. ktMsgBox_ReadMe.txt
    2. ktMsgBoxAddin.xla (アドインブック)
    3. ktMsgBox_Help.chm （本ファイル)
    4. ktMsgBox体験.xls (デモ用ブック､単体で動作します)
    5. AddinBox.gif (デモブックのオープニングメッセージ用背景画像)

    ※ ネット から ダウンロード した ファイル は、ＯＳ により セキュリティ ブロック されています。
    解凍した上記の各ファイル も セキュリティブロック されています。
    インストールの前に、ファイル の プロパティダイアログ にて 【ブロックの解除】 を行なって下さい。

  2. [ ktMsgBoxAddin.xla ] をアドインフォルダ に保存します。
    その他のファイルは任意のフォルダに保存してください。

    ※ [ AddinBox.gif & ktMsgBox_Help.chm ] は [ ktMsgBox体験.xls ] と同じフォルダに保存して下さい。

  3. 新規ブックを開き､アドイン登録を行ないます。
    -- Excel2000 ～ Excel2003 --
    1. [ ツール ] メニューの [ アドイン ] をクリックします。
    2. [ 有効なアドイン ] ボックスで、[ ktMsgBoxAddin ] の横のチェック ボックスをオンにして、[ OK ] をクリックします。
    -- Excel2007 以降 --
    1. [ Office ボタン / File タブ ] をクリックし、[ Excel のオプション ] をクリックします。
    2. [ アドイン ] カテゴリをクリックします。
    3. [ 管理 ] ボックスの一覧の [ Excel アドイン ] をクリックし、[ 設定 ] をクリックします。
    4. [ 有効なアドイン ] ボックスで、[ ktMsgBoxAddin ] の横のチェック ボックスをオンにして、[ OK ] をクリックします。

  4. [ ktMsgBox 関数 / ktMsgBoxEX 関数 ] を利用する ブック を開く。

  5. ＶＢＥ 画面から､[ ツール→参照設定 ] を選択する。

  6. 参照設定ダイアログ から[ ktMsgBoxAddin ] にチェックを付けます。

以上で、VBA コードから利用できるようになります。

-- 引数はウィザードツールで設定できます --
体験ブック には、ウィザードツールが付属しています。
対話的に実際の表示結果を確認しながら各種引数オプションを設定できます。
設定結果は、ktMsgBox の VBAコードとしてコピーされますので、そのまま VBE の
モジュールウィンドウに貼り付けてプログラムを作成できます。


【 アドイン フォルダ 】

「アドインフォルダ」 には
( 1 ) OFFICE システム アドインフォルダ ( Library フォルダ )
( 2 ) ユーザー アドインフォルダ ( Addins フォルダ )
の ２ つがあります。 どちらかの フォルダ に アドインブック を保存すると、『 アドイン 登録 ダイアログ 』
の一覧に載ります（シート関数 として利用する アドイン は Library フォルダ に保存する必要があります）。

ktMsgBoxAddin は ＶＢＡで利用するアドインですので、どちらの フォルダ に保存しても構いません。

  1. OFFICE システム アドインフォルダ ( Library フォルダ )
    1. Excel.exe の直下に位置し、エクセル の 「分析 ツールアドイン」 が インストール されている
      フォルダ です。下記の マクロ で パス を確認できます。
      MsgBox Application.LibraryPath

    2. Windows Vist 以降では、UAC ( ユーザーアカウント制御 ) の管理下にあるフォルダですので、
      保存の際には管理者 ユーザーで UAC を解除 した上で行なう必要があります。

      [ ユーザー アカウント 制御 とは ]
      http://windows.microsoft.com/ja-jp/windows/what-is-user-account-control#1TC=windows-7

      参考 : ＠ＩＴ Tips / Windowsのユーザー・アカウント制御 （UAC） を一時的に無効にする
      http://www.atmarkit.co.jp/fwin2k/win2ktips/859disuac/disuac.html

    3. OS が異なっても共通の場所となりますが、Excel の バージョン ごとに フォルダ が分かれます。
      -- Excel 2003 --
      C:\Program Files\Microsoft Office\Office11\Library

      -- Excel 2007 --
      C:\Program Files\Microsoft Office\Office12\Library

      -- Excel 2010 --
      C:\Program Files\Microsoft Office\Office14\Library

      -- Excel 2013/2016 --
      Excel 2013 では、インストール方法によって パス が異なります。
      [ Windows インストーラーでインストール ]
      C:\Program Files\Microsoft Office\Office15\Library
      [ プリインストール版 , Click-To-Run ]
      C:\Program Files\Microsoft Office 15\Root\Office15\Library

      補：Excel2016では "Office15" の部分が "Office16" になります。

    4. -- Windows ( 64bit ) での注意事項 --
      Excel が 32bit/64bit の違いでも パス が異なりますので注意が必要です。
      32bit 版 Excel : C:\Program Files (x86)\....
      64bit 版 Excel : C:\Program Files\....

      細かく分かれますが、最初に書いたように下記のマクロで確認できます。
      MsgBox Application.LibraryPath

    5. セル上で利用できる 「シート関数」 を提供している アドインでは、この フォルダ に保存する必要があります。

  2. ユーザー アドインフォルダ ( Addins フォルダ )
    1. 保存ダイアログでファイル の 種類を [ アドイン ( *.xla or *.xlam ) ] とした場合に、既定の保存先として選択されるフォルダです。
      下記のマクロでパスを確認できます。
      MsgBox Application.UserLibraryPath

    2. Windows Vista 以降でも UAC 管理下からは外れているフォルダですが、『隠しフォルダ』属性ですので、エクスプローラーのフォルダオプションで 「全てのファイルとフォルダを表示する」 にチェックを入れておく必要があります。

    3. マルチインストールの場合でも、Excel の各バージョンで共通の場所となりますが、OS によって場所が異なり、ユーザーごとに分かれます。
      -- Windows XP --
      C:\Documents and Settings\USER NAME\Application Data\Microsoft\AddIns

      --Windows Vista 以降 --
      C:\Users\USER NAME\AppData\Roaming\Microsoft\Addins


[ ktMsgBox ] 関数

位置指定/カラー指定等が出来る､MsgBox 関数の代替関数です。

付属の体験ブック にある 「ktMsgBox Wizard」 を
使えば､細かい構文/規則を全て覚えなくても､簡単
にコードを作り出せます。

[ 構文 ] [ 返却値 ] [ パラメータ内容 ] [ 解説 ] [ 使用例 ]

【 構 文 】

ktMsgBox | ( Prompt, [Buttons], [Title], [Top], [Left],
 | [PromptColor], [BackColor], [Chime], [WaveFile], [IconFile],
 | [FontName], [FontSize], [WaitSecond], [InputType], [UserDefBtn],
 | [BackImage], [ImageWidth], [ImageHeight], [ChimeColor],
 | [HyperLink1], [HyperLink2], [HyperLink3] )

返却値 | -- | Variant ( Integer/String/Boolean ) 型
Prompt | -- | String 型
Buttons | -- | Long 型 (省略可)
Title | -- | String 型 (省略可)
---以降は[ktMsgBox]独自インターフェース---
Top | -- | Variant ( Integer / Empty ) 型 (省略可)
Left | -- | Variant ( Integer / Empty ) 型 (省略可)
PromptColor | -- | Long 型 (省略可, 省略値= -1 → vbWindowText 扱い)
BackColor | -- | Long 型 (省略可, 省略値= -1 → vbButtonFace 扱い)
Chime | -- | Boolean 型 (省略可, 省略時：False )
WaveFile | -- | String 型 (省略可)
IconFile | -- | String 型 (省略可)
Font Name | -- | String 型 (省略可)
FontSize | -- | Integer 型 (省略可)
WaitSecond | -- | Integer 型 (省略可)
InputType | -- | String 型 (省略可)
UserDefBtn | -- | String 型 (省略可)
BackImage | -- | String 型 (省略可)
ImageWidth | -- | Integer 型 (省略可)
ImageHeight | -- | Integer 型 (省略可)
ChimeColor | -- | Long 型 (省略可，省略値= -1 → [ 茶色 ] 扱い)
HyperLink1 - HyperLink3 | -- | String 型 (省略可)

※ＶＢＡ専用関数です※

【 返却値 (ktMsgBox) 】

クリックしたボタンの番号が返ります。値は「MsgBox 」の場合と同じです。
vbOK | 1 | [ OK ]
vbCancel | 2 | [ キャンセル ]
vbAbort | 3 | [ 中止 ]
vbRetry | 4 | [ 再試行 ]
vbIgnore | 5 | [ 無視 ]
vbYes | 6 | [ はい ]
vbNo | 7 | [ いいえ ]
ユーザー定義ボタンを利用した場合は､左側から順に「第１ボタン」～「第４ボタン」と呼ばれ､ それに対応して下記の値が返ります（カッコ内はアドイン内で用意してある定数名です）。
第１ボタン | 9 | ( kt_MsgBox_UserBtn1 )
第２ボタン | 10 | ( kt_MsgBox_UserBtn2 )
第３ボタン | 11 | ( kt_MsgBox_UserBtn3 )
第４ボタン | 12 | ( kt_MsgBox_UserBtn4 )
Wait機能を利用した場合は､常に[vbOK(1)]が返ります。
InputBox機能を利用した場合は､下記の内容が返ります。
キャンセルボタンをクリック
Variant変数で受け取った場合は､Boolean型の [ False ] String変数で受け取った場合は､String型の"False"
テキスト入力後にエンターキーもしくはＯＫボタンをクリック
入力したテキストが文字列として返ります。 数値/日付指定であっても､返るのは､入力したそのままの文字列です。
※セルに記述した場合には [ #VALUE! ] が返ります。

【 パラメータ 内容 (ktMsgBox) 】

※ Prompt/Buttons/Title の指定内容は [ MsgBox 関数 ] と同じです。

既定のフォントとは､コントロールパネル/画面のプロパティ/デザインで指定されている
[ メッセージボックス ] のフォントのことです。
文字色 ： システムカラー定数 [ vbWindowText ]で取得できます
背景色 ： システムカラー定数 [ vbButtonFace ]で取得できます

[ ktMsgBox ] にはフォントの[太字]指定はありません。太字指定が必要な場合は [ ktMsgBoxEX ]
を使って下さい。

Prompt
表示するメッセージを指定します。
複数行にする場合は､[ vbCrLf ] で区切ってください。
メッセージの量に応じてフォームの大きさは自動調整されます。

既定では『画面のプロパティ』で設定されているフォントで表示されます。
Buttons
表示されるボタンの種類と個数/使用するアイコンのスタイル/標準ボタンを
下記定数の「和」で指定します。ktMsgBox で有効な定数は下記になります。
--- ボタンの種類 ---
 | vbOKOnly ( 0 )
 | vbOKCancel ( 1 )
 | vbAbortRetryIgnore ( 2 )
 | vbYesNoCancel ( 3 )
 | vbYesNo ( 4 )
 | vbRetryCancel ( 5 )
--- アイコンの種類 ---
 | vbCritical ( 16 )
 | vbQuestion ( 32 )
 | vbExclamation ( 48 )
 | vbInformation ( 64 )
<< ktMsgBoxAddin オリジナルアイコン >>
 | kt_MsgBox_MelodyIcon ( 80 )
 | kt_MsgBox_LimitIcon ( 96 )
 | kt_MsgBox_ErrIcon ( 112 )
 | kt_MsgBox_PencilIcon ( 4194320 )
 | kt_MsgBox_KeyIcon ( 4194336 )
 | kt_MsgBox_TrashIcon ( 4194352 )
 | kt_MsgBox_PinIcon ( 4194368 )
 | kt_MsgBox_ClipIcon ( 4194384 )
 | kt_MsgBox_MemoIcon ( 4194400 )
 | kt_MsgBox_CalendarIcon ( 4194416 )
 | kt_MsgBox_SandglassIcon ( 8388624 )
 | kt_MsgBox_CoffeeIcon ( 8388640 )
 | kt_MsgBox_AlarmClockIcon ( 8388656 )

--- 標準ボタン ---
 | vbDefaultButton1 ( 0 )
 | vbDefaultButton2 ( 256 )
 | vbDefaultButton3 ( 512 )
 | vbDefaultButton4 ( 768 )

省略時は「ゼロ」扱いになりますので
[ vbOKOnly + vbDefaultButton1 ] （アイコン無し）
と解釈されます。

※ユーザー定義ボタンを指定すると､[ ボタンの種類 ] 指定は無効になります。

※ InputBox機能を指定すると､ [ ボタンの種類][標準ボタン ] で指定した内容に
係わらず [ vbOKCancel + vbDefaultButton1 ] 扱いとなります。

※ Wait機能を指定すると､ボタンは一切表示されませんので､[ ボタンの種類 ]
および [ 標準ボタン ] の指定は無効になります。

※日本語版 限定機能
[ Buttons ] 指定で､2048を足し込むと､ボタンの表記が英語バージョンに
なります。2048は､アドイン内で [ kt_MsgBox_English ] の名前で定数
定義してあります。下記のように使ってください。
vbOKCancel + vbInformation + kt_MsgBox_English
Title
ここに指定した文字列がキャプション部分に表示されます。
省略時は[ ktMsgBox ] が表示されます。
Top and Left
メッセージボックス を画面の､どの位置に表示するかを指定する パラメータ です。
UserForm の プロパティ （Left / Top )で指定する値です。

一方 もしくは 両方を省略すると 『オーナーフォーム中央』 に表示します。

または、一方 もしくは 両方に Empty 値 を指定した場合も、省略 と 同じ扱いで
『 オーナーフォーム中央 』 に表示します。 ( Ver 3.30 ～ )

「あるセルの付近に表示する」 という場合には、ktCell2Position 関数 を使って、セルの
座標を変換した値を指定してください （使用例を参照）。

(注) もし誤って画面からはみ出し､クリック出来ないような位置を指定してしまった
場合は､[ スペースキー ] を押して下さい。
デフォルトボタンの設定(未指定時は [ vbDefaultButton1 (0) ] と解釈されます)
が効いていますので､それでktMsgBoxフォームを閉じる事ができます。
PromptColor
メッセージの文字色を指定します。
カラー定数 / RGB関数 / 16進 などで指定します。
ktWebColor2Num 関数を通す事で「色名」による指定もできます。
例) PromptColor:=ktWebColor2Num("AquaMarine")

省略解釈値は [ -1 ] で､ [ vbWindowText ]で表示されます。
BackColor
フォームの背景色を指定します。
カラー定数 / RGB関数 / 16進 などで指定します。
ktWebColor2Num 関数を通す事で「色名」による指定もできます。
例) BackColor:=ktWebColor2Num("AquaMarine")

省略解釈値は [ -1 ] で､ [ vbButtonFace ] で表示されます。
Chime
音を連続再生してチャイムにする場合は [ True ] を指定します。
[ WavFile ] を省略
アイコンの有無に係わらず [ システム音 / 新着メールの通知 ] で再生
[ WavFile ] を指定
指定した [ wav ] ファイルで再生
WaveFile
独自の音を鳴らしたい場合は､Waveファイルを 『ドライブからのフルパス』で指定します。
省略すると､下記のシステム音で再生します。
アイコン無し | システム音 : 一般の警告音
アイコン有り |
vbCritical | システム音 : システムエラー
vbQuestion | システム音 : メッセージ(問い合わせ)
vbExclamation | システム音 : メッセージ(警告)
vbInformation | システム音 : メッセージ(情報)
上記以外 | システム音 : メッセージ(情報)
IconFile
独自のアイコンを表示したい場合は､その画像ファイル(ico,gif,bmp,wmf)を
『ドライブからのフルパス』で指定します。表示サイズは [ 36×36ピクセル ] です。
尚､IconFile を指定した場合は[vbCritical]等のアイコン指定は無視されます。
FontName
既定のフォントから変更する場合に指定します。
指定できるのは下記の１０種の記号(大文字/小文字OK)､
もしくはインストールされている「フォント名」を直接指定します。
"UIG" | : MS UI Gothic |
"MSG" | : ＭＳ ゴシック |
"MSPG" | : ＭＳ Ｐゴシック |
"MSM" | : ＭＳ 明朝 |
"MSPM" | : ＭＳ Ｐ明朝 |
"ARI" | : Arial | （英語フォント）
"CENT" | : Century | （英語フォント）
"COUR" | : Courier New | （英語フォント）
"ROMAN" | : Times New Roman | （英語フォント）
"TAHOMA" | : Tahoma | （英語フォント）
（英語版では､[MS UI Gothic ～ MS P明朝]の日本語フォントは不可です）

上記の記号以外/インストールされていない 「フォント名」 を指定した場合は､
既定のフォントになります。
FontSize
既定のフォントサイズから変更する場合に指定します。
指定できるのは [ 9, 10, 11, 12, 14, 16, 18, 20 ] の８種です。
他の数値を指定すると既定のフォントサイズになります。
WaitSecond
ボタンクリックによる応答待ちではなく､指定した時間で自動的に閉じるようにする
場合に､その秒数を指定します。指定できるのは「５～６０秒」です。

Wait中は､ウィンドウ上部に現在時刻がリアルタイムで表示されます。
尚､この指定を行なった場合は､[ Buttons ] でのボタン指定､および[ InputType ]
[ UserDefBtn ] [ HyperLink ] は全て無効になり､メッセージボックス上にボタンは
表示されません。

※ユーザーの不安解消の為に 「xx秒で自動的に閉じます」 というガイダンス
メッセージを引数 [ Prompt ] の中に含める事をお薦めします。
InputType
InputBox機能を利用する場合に
a) 入力値の属性 ："N"(数値), "D"(日付), "S"(文字列),
"J"(文字列, IMEオン），"P"(パスワード)
b) 入力欄の幅 ："１"～"８"　（１０文字幅～８０文字幅）
c) デフォルト値 ：任意の文字列（不要の場合は省略）
を､「属性､幅､デフォルト値」の順で､ひとつの文字列として指定します。
幅とデフォルト値の間にはセミコロンを挟みます。
例）文字列､３０文字幅､デフォルト"abc"
"S3;abc"
日付､２０文字幅､デフォルト本日日付
"D2;" & Format(Date, "yyyy/mm/dd")

数値(N)/日付(D)の場合には､入力内容の妥当性チェックが入ります。
"J" を指定した場合は､ktMsgBox/ktMsgBoxEX 表示の際にIMEオンになります。

"P"を指定した場合､タイプした文字は"*"で表示されます。
また､デフォルト値を指定すると､その内容との一致判定を行ないます
（デフォルト値自体は表示されません）。

InputBox機能を指定すると､[ボタンの種類][標準ボタン]で指定した内容に
係わらず [ vbOKCancel + vbDefaultButton1 ] 扱いとなります。

※ Excel のInutBoxメソッドによる [ Type:=8 ] セル範囲入力の機能はありません。
UserDefBtn
ボタンキャプションを自由に設定したい場合に指定します。
（ボタン幅は固定ですので､表示できる文字数には限りがあります）

この指定をすると､[Buttons : ボタンの種類]指定は無効になります。

第１ボタン～第４ボタンまで指定でき､各々にアクセスキーを持たせることも可能です。
定義フォーマットは下記になります。
Cap1[;Key1][,Cap2[;key2][,Cap3[;key3][,Cap4[;key4]]]]
Cap（ボタンキャプション）　Key（アクセスキー）
アクセスキーは「数字もしくはアルファベット」の１文字です。
日本語のボタンキャプションで､アクセスキーを持たせる場合はキャプション内に
「アクセスキーをカッコで括った」文字列を含めるようにしてください。

例）　"全てはい(A);A,全ていいえ(B);B,はい(Y);Y,いいえ(N);N"
BackImage
メッセージボックスの背景に画像を使う場合に､その画像ファイルのフルパスを
指定します。指定できるのは[ jpg ,gif ,bmp ,wmf ]です。
メッセージウィンドウの左上を基点に配置されます（タイリング配置などの機能は
ありません）。
ImageWidth / ImageHeight
[BackImage]を指定した場合のみ有効です。
通常はメッセージ量/アイコンとボタンの有無に応じて､ウィンドウサイズが自動的
に決まりますが､[ BackImage ] 指定時には､背景画像の端が切れないように､この
パラメータでウィンドウサイズを直接指定することが出来ます。
幅/高さの一方のみの指定でもＯＫです。省略した方は自動フィットモードになり
ます。

尚､指定した値が､自動フィットサイズより小さい場合には､自動フィットサイズが有
効になります。画像より大きい値を指定すると､ウィンドウ背景が覗き見えてしまい
ますので､画像より若干小さい値を指定して下さい。
ChimeColor
Chime機能またはWait機能使用時に表示されるウィンドウ上部のメッセージカラー
を変更する場合に指定します。省略すると､「茶色」で表示されます。
ktWebColor2Num 関数を通す事で「色名」による指定もできます。
例) ChimeColor:=ktWebColor2Num("AquaMarine")
HyperLink1 - HyperLink3
HPのＵＲＬまたはメールアドレスを指定すると､青文字＆下線のリンク表示にな
ります（既定のフォントおよびサイズで表示されます）。
マウスアイコンは指アイコンになり､クリックすると､ブラウザまたはメーラーが起動
します。

HPのＵＲＬの場合は､[ http: ] から指定して下さい。
メールアドレスの場合は､[ mailto: ] の後に空白を空けることなくメールアドレスを
続けて記述してください。

※ PromptColor/BackColor/ChimeColorを16進で [ &H8000 ～ &HFFFF ] と指定すると､Integer型
の認識で負数になってしまいますので､末尾に型宣言子 [ & ] を付してLong型にして
ください [ &H8000& ～ &HFFFF& ] 。

【 解 説 (ktMsgBox) 】

よく 「MsgBox 関数で表示位置を指定したい」 という質問を見掛けますが､ＶＢＡで提供している
「MsgBox 関数」 には表示位置パラメータがありません。

この 『ktMsgBox 関数』 は 「MsgBox 関数」 と全く同じ使い方で､且つ位置指定が出来るようにする
為に開発しました。加えて､文字色/背景色/音/アイコンもカスタマイズ可能としました。

尚､『ktMsgBox 関数』 で既定で利用しているWave音は 「MsgBox 関数」 と同じく、
下記の システム音（コントロールパネル/サウンド) 下記を使っています。

アイコン無し | システム音 : 一般の警告音
アイコン有り |
vbCritical | システム音 : システムエラー
vbQuestion | システム音 : メッセージ(問い合わせ)
vbExclamation | システム音 : メッセージ(警告)
vbInformation | システム音 : メッセージ(情報)
上記以外 | システム音 : メッセージ(情報)
チャイム機能での既定音 | システム音 : 新着メールの通知

文字色/背景色/音がカスタマイズ可能ですので､メッセージの意味合いに応じて使い分けて
下さい(エラー入力時には [ 赤文字 ] ､異常発生時には [ 赤系の背景 ] 等)。

背景色には【淡色系】を指定した方が良いですが､実際に 「どんな色で､どんな値」 を指定すれば
良いのかを決めるには､「ktMsgBox体験.xls」 のデモフォーム からパレットフォーム が利用できます
ので､それを使って､ビジュアルに色を決めつつ､そのＲＧＢを取得してください。
アイコンも自由に変更できますので､例えば「会社ロゴ」 などを表示する事も可能です。

(補) [ vbCritical/vbQuestion/vbExclamation/vbInformation ] で表示されるアイコンは全て改めて
自作した画像を使っています。

「エラーがあります」といった音声をWaveファイル化すれば､音声ガイダンス付きのメッセージボックス
とする事も可能です。

【 使 用 例 (ktMsgBox) 】

ktMsgBox "処理が終わりました"

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Dim Resp As Integer
Resp = ktMsgBox("処理が終わりました。" & vbCrLf & "続けますか？", vbOKCancel)
If (Resp = vbNo) Then
Exit Sub
End If

- - - - - - - - - - - - - - - - - - - - - - - - - - -
『 表示位置を指定 』
-- 固定位置 --
ktMsgBox "入力エラーです", vbOkOnly + vbInformation, "日付入力",100, 200

-- UserForm の位置/入力項目の位置に合わせて調整 --
ktMsgBox "入力エラーです", _
vbOkOnly + vbInformation, "日付入力", _
(Me.Top + 20), (Me.Left + 50)

ktMsgBox "入力エラーです", _
vbOkOnly + vbInformation, "日付入力", _
(Me.Top + TextBox1.Top - 10), (Me.Left + TextBox1.Left + 50)

-- F5 セル の 付近に表示する ( ktCell2Position を利用 ) -- (Ver 3.30 から利用可能)
Dim vntPos As Variant
Dim vntTop As Variant
Dim vntLeft As Variant
vntPos = ktCell2Position(ActiveSheet.Range("F5"))
If IsError(vntPos) Then
'F5 セル が 表示範囲外 ⇒ Top/Left を省略
vntTop = Empty
vntLeft = Empty
Else
vntTop = vntPos(0) + 5
vntLeft = vntPos(1) + 5
End If
ktMsgBox "入力エラーです", vbOkOnly + vbInformation, "日付入力", _
Top:=vntTop, Left:=vntLeft

(注) もし誤って画面からはみ出し､クリック出来ないような位置を指定してしまった場合は､
[ スペースキー ] を押して下さい。
デフォルトボタン の設定 (未指定時は [ vbDefaultButton1 (0) ] と解釈されます)が
効いていますので､それで ktMsgBox フォーム を閉じる事ができます。

- - - - - - - - - - - - - - - - - - - - - - - - - - -
『 入力エラーを赤文字で強調 』
ktMsgBox "入力エラーです", vbOkOnly + vbInformation, "日付入力",,, vbRed

- - - - - - - - - - - - - - - - - - - - - - - - - - -
『 背景色を [ 薄灰色 ] にする 』
ktMsgBox "処理が終わりました", vbOkOnly + vbInformation, "月次処理",,,, &HE0E0E0

- - - - - - - - - - - - - - - - - - - - - - - - - - -
『 チャイム で長時間処理の終了をアナウンス 』
ktMsgBox "処理が終わりました" & vbCrLf & "早く席にお戻りください", _
vbOkOnly + vbInformation, "月次処理", _
PromptColor:=vbBlue, Chime:=True

- - - - - - - - - - - - - - - - - - - - - - - - - - -
『 背景色 ( 薄赤 ) を変えて異常を通知 ( チャイム付き ) 』
ktMsgBox "入力データが異常です" & vbCrLf & "処理を中断します", _
vbOkOnly + vbExclamation, "月次処理", _
BackColor:=&HC0C0FF, Chime:=True

- - - - - - - - - - - - - - - - - - - - - - - - - - -
『 通常の音を [ メール着信音 ] にする 』
ktMsgBox "処理が終わりました", WaveFile:="C:\Windows\Media\Notify.wav"

- - - - - - - - - - - - - - - - - - - - - - - - - - -
『 アイコンを変える 』
ktMsgBox "処理が終わりました", IconFile:="C:\Windows\WinUpd.ico"

(補) 画像は [ ico , gif , bmp ] で、表示サイズは [ 36×36 ピクセル ] です。

- - - - - - - - - - - - - - - - - - - - - - - - - - -
『 文字の フォント を変える ( MS P明朝 / 14p ) 』
ktMsgBox "入力データが異常です" & vbCrLf & "処理を中断します", _
vbOkOnly + vbExclamation, "月次処理", _
FontName:="MSPM", FontSize:=14

- - - - - - - - - - - - - - - - - - - - - - - - - - -
『 ユーザー定義ボタン 』
ktMsgBox ".....................", _
UserDefBtn:="全てはい(A);A,全ていいえ(B);B,はい(Y);Y,いいえ(N);N"

- - - - - - - - - - - - - - - - - - - - - - - - - - -
『 InputBox 機能を使う 』
Dim dtmMyDate As Date
Dim rc As String
rc = ktMsgBox ("日付を入力して下さい", _
InputType:="D2;" & Format(Date, "yyyy/m/d") )
If (rc <> "False") Then
dtmMyDate = CDate(rc)
End If

受け取る内容は､入力したままの文字列です。
シリアル値として扱う場合には､CDate 関数による属性変換が必要です。
尚､エラーチェック 機能が有りますので､この例の場合には受け取った文字列は
「日付として認識できる文字列」 である事は保証されています。

- - - - - - - - - - - - - - - - - - - - - - - - - - -
『 背景に画像を使う 』 『 一定時間表示したら自動的に閉じる 』
ktMsgBox "おはようございます。" & vbCrLf & "今日も一日頑張りましょう。" & _
vbCrLf & vbCrLf & "(３０秒で自動的に閉じます）", _
WaitSecond:=30,
BackImage:="C:\My Documents\ ........ \good_morning.gif", _
ImageWidth:=200, ImageHeight:=150

- - - - - - - - - - - - - - - - - - - - - - - - - - -
『 ハイパーリンク メッセージ 』
ktMsgBox "xxxxxx Ver1.00" & vbCrLf & vbCrLf, _
HyperLink1:="http://www. ........ /index.htm", _
HyperLink2:="mailto:xxxx@........"


[ ktMsgBoxEX ] 関数

位置指定/カラー指定等が出来る､MsgBox 関数の代替関数です。

付属の体験ブック にある 「ktMsgBox Wizard」 を
使えば､細かい構文/規則を全て覚えなくても､簡単
にコードを作り出せます。

[ 構文 ] [ 返却値 ] [ パラメータ内容 ] [ 解説 ] [ 使用例 ]

【 構 文 】

ktMsgBoxEX | ( Prompt, [Buttons], [Title], [Top], [Left],
 | [BackColor], [Chime], [WaveFile], [IconFile],
 | [WaitSecond], [InputType], [UserDefBtn],
 | [BackImage], [ImageWidth], [ImageHeight], [ChimeColor],
 | [HyperLink1], [HyperLink2], [HyperLink3] )

返却値 | -- | Variant ( Integer / String / Boolean ) 型
Prompt | -- | kt_MsgBoxPromptType 型(ユーザー定義型です)
Buttons | -- | Long 型 (省略可)
Title | -- | String 型 (省略可)
---以降は[ktMsgBoxEX]独自インターフェース---
Top | -- | Variant ( Integer / Empty ) 型 (省略可)
Left | -- | Variant ( Integer / Empty ) 型 (省略可)
BackColor | -- | Long 型 (省略可, 省略値= -1 → vbButtonFace 扱い))
Chime | -- | Boolean 型 (省略可, 省略時：False )
WaveFile | -- | String 型 (省略可)
IconFile | -- | String 型 (省略可)
WaitSecond | -- | Integer 型 (省略可)
InputType | -- | String 型 (省略可)
UserDefBtn | -- | String 型 (省略可)
BackImage | -- | String 型 (省略可)
ImageWidth | -- | Integer 型 (省略可)
ImageHeight | -- | Integer 型 (省略可)
ChimeColor | -- | Long 型 (省略可，省略値= -1 → [ 茶色 ] 扱い)
HyperLink1 - HyperLink3 | -- | String 型 (省略可)

※引数[Prompt]は､利用者側で下記のような『変数定義』が必要です
Dim Prompt As kt_MsgBoxPromptType

ユーザー定義型 [ kt_MsgBoxPromptType ] は､ [ ktMsgBoxAddin.xla ] 内で下記の
ように定義されています（参照設定すれば利用できます）。
Public Type kt_MsgBoxPromptType
Message (1 To 10) As String
FName (1 To 10) As String
FSize (1 To 10) As Integer
FColor (1 To 10) As Long
FBold　(1 To 10) As Boolean
End Type

※このユーザー定義型を初期化するには､下記のように初期化用サブルーチン [ ktMsgBoxPromptTypeInit ]
を通します。このサブルーチンも [ ktMsgBoxAddin.xla ] 内にありますので､参照設定すれば利用できます。
Dim Prompt As kt_MsgBoxPromptType
Call ktMsgBoxPromptTypeInit ( Prompt )

※ＶＢＡ専用関数です※

【 返却値 (ktMsgBoxEX) 】

[ ktMsgBox ] を参照

【 パラメータ 内容 (ktMsgBoxEX) 】

[ Prompt ] 以外の解説は[ ktMsgBox ] を参照

Prompt
定義方法は前記の説明を参照。

１０グループまで指定できます。
各グループ単位でフォント(フォント名,サイズ,文字色,太字)を指定できます。

[ ktMsgBoxPromptTypeInit ] による初期値のままにすれば､既定のフォントになります。
( Message )
クリア値は空文字("")です
Message 内では､改行コード(vbCrLf)も有効です。
[ Message (?) ] で空文字("")が出てきた所で終了します。

行間を空けたい場合には､半角(or全角)スペースを入れたグループを用意するか､
改行コードを利用して下さい。
( FName )
クリア値は空文字("")です。
既定のフォントから変更する場合に指定します。
指定できるのは下記の１０種の記号(大文字/小文字OK)､
もしくはインストールされている「フォント名」を直接指定します。。
"UIG" | : MS UI Gothic |
"MSG" | : ＭＳ ゴシック |
"MSPG" | : ＭＳ Ｐゴシック |
"MSM" | : ＭＳ 明朝 |
"MSPM" | : ＭＳ Ｐ明朝 |
"ARI" | : Arial | （英語フォント）
"CENT" | : Century | （英語フォント）
"COUR" | : Courier New | （英語フォント）
"ROMAN" | : Times New Roman | （英語フォント）
"TAHOMA" | : Tahoma | （英語フォント）
（英語版では､[ MS UI Gothic ～ MS P明朝 ] の 日本語フォントは不可です）
上記の記号以外/インストールされていない「フォント名」を指定した場合は､
既定のフォントになります。
( FSize )
クリア値は [ -1 ] です。
既定のフォントサイズから変更する場合に指定します。
指定できるのは [ 9, 10, 11, 12, 14, 16, 18, 20 ] の８種です。
他の数値を指定すると既定のフォントサイズになります。
( FColor )
クリア値は [ -1 ] です。
カラー定数/RGB関数/16進 などで指定します。
ktWebColor2Num　関数を通す事で「色名」による指定もできます。
例) Prompt(1).FColor = ktWebColor2Num("AquaMarine")

省略解釈値は [ -1 ] で､[ vbWindowText ] で表示されます。
( FBold )
クリア値は [ False ] です。
太字にする場合には [ True ] を設定します。
尚､フォントによっては､フォントサイズを大きくすると自動的に太字になるものもあります。

※ Prompt.FColor/BackColor/ChimeColor を16進で [ &H8000 ～ &HFFFF ] と指定すると､Integer型
の認識で負数になってしまいますので､末尾に型宣言子 [ & ] を付してLong型にして
ください [ &H8000& ～ &HFFFF& ] 。

【 使 用 例 (ktMsgBoxEX) 】

Dim Prompt As kt_MsgBoxPromptType
Call ktMsgBoxPromptTypeInit(Prompt )
With Prompt
  .Message(1) = "※  エラーが発生しました  ※"
  .FSize(1) = 14
  .FName(1) = "MSM"
  .FColor(1) = vbRed
  .Message(2) = "エラー発生事由～～" & vbCrLf & "‥‥‥" & vbCrLf & "‥‥‥"
  .FSize(2) = 10
  .FColor(2) = vbBlue
  .Message(3) = "詳細情報1:～～～" & vbCrLf & _
                "詳細情報2:～～～" & vbCrLf & _
                "詳細情報3:～～～"
  .FSize(3) = 9
  .FColor(3) = vbBlack
End With
ktMsgBoxEX Prompt, vbOkOnly + vbExclamation, "月次処理", Chime:=True


[ ktMsgBoxPromptTypeInit ] サブルーチン

ktMsgBoxEX 関数 の [ Prompt ] 引数を初期化するサブルーチンです。

【 構 文 】

ktMsgBoxPromptTypeInit | ( Prompt )
Prompt | -- | kt_MsgBoxPromptType 型 ( ByRef )

【 パラメータ 内容 】

[ Prompt ] ( ByRef )
 | kt_MsgBoxPromptType 型の変数を指定します。 その変数内の各要素の内容が、所定の初期値で設定されます。 kt_MsgBoxPromptType は ktMsgBoxAddin.xla 内で定義されているユーザー定義型です。

【 解 説 】

ktMsgBoxEX 関数 を参照して下さい。

【 使 用 例 】

Dim Prompt As kt_MsgBoxPromptType

Call ktMsgBoxPromptTypeInit(Prompt)

With Prompt
.Message(1) = "※ エラーが発生しました ※"
.FSize(1) = 14
.FName(1) = "MSM"
.FColor(1) = vbRed

.Message(2) = "エラー発生事由～～" & vbCrLf & "‥‥‥"
& vbCrLf & "‥‥‥"
.FSize(2) = 10
.FColor(2) = vbBlue

.Message(3) = "詳細情報1:～～～" & vbCrLf & _
"詳細情報2:～～～"
& vbCrLf & _
"詳細情報3:～～～"
.FSize(3) = 9
.FColor(3) = vbBlack
End With

ktMsgBoxEX Prompt, vbOkOnly + vbExclamation, "月次処理", Chime:=True


[ ktWebColor2Num ] 関数

HTMLで指定する 『色名』 を RGB 数値に変換する関数です。

【 構 文 】

ktWebColor2Num | ( WebColor, [ Kind ] )
返却値 | -- | Variant ( Long / String ) 型
WebColor | -- | String 型
Kind | -- | String 型 (省略可, 省略時: "D" )

【 返却値 】

「色名」 に対応する ＲＧＢ の値を返します。
Kind = "D" …… 数値 で返します。
Kind = "H" …… １６ 進文字列 （ "&HBBGGRR" の ８ 文字固定 ） で返します。
Kind = "W" …… １６ 進文字列 （ "#RRGGBB" の ７ 文字固定 ） で返します。

色名 が 正しくない場合は －１ もしくは 空文字( "" ) が返ります。

【 パラメータ 内容 】

[ WebColor ]
 | HTML で扱う 「色名」 を指定します 色名 の 一覧は こちら を参照してください。 色名は 大文字 / 小文字 どちらでも構いません。
[ Kind ]
 | 色の値の形式を指定します。 "D" または 省略 …… 数値 で返します。 "H" …… １６ 進文字列 （ "&HBBGGRR" の ８ 文字固定 ） で返します。 "W" …… １６ 進文字列 （ "#RRGGBB" の ７ 文字固定 ） で返します。

【 解 説 】

この関数は､ktMsgBox / ktMsgBoxEX　で文字色/背景色などを指定する際に
「色名」で指定できるようにする為に設けたものです。
ktMsgBox / ktMsgBoxEX]以外でも､各種 [ Color プロパティ ] を ＶＢＡ から指定する場合に
使う事もできます。


[ ktCell2Position ] 関数

UserForm を 「あるセルの上に表示」 という場合に、その セルの スクリーン座標 を UserForm で指定する
値に変換する関数です。 ( Ver 3.30 ～ )

【 構 文 】

ktCell2Position | ( Target, [ PaneIdx ] )
返却値 | -- | Variant ( Array 関数 ) 型
Target | -- | Range 型
PaneIdx | -- | Integer 型 ( 省略可, 省略時： ０ )

【 返却値 】

Target の セル座標（セル枠の左上） を UserForm の Top/Left 値に変換し、 Array(Top, Left) の
配列として返します。
要素：０ が Top , 要素：１ が Left になります。 Top/Left は Long 型です。

Target の セル が ウィンドウ 表示範囲外 の場合は [ #VALUE! ] が返ります。

『 ウィンドウ 枠の固定/分割 』 を行なっている場合、エクセルバージョン によって動作が異なります。
・ ～ Excel 2003
第 １ Pane （４分割 ならば 左上 , 上下分割 ならば 上部 , 左右分割 ならば 左側） の セル のみが
指定できます。
他 （第 ２～４ Pane ） の 領域のセルを指定すると [ #VALUE! ] が返ります。

・ Excel 2007 ～
第 １～４ Pane の 全ての領域の セル が指定できます。

ワークシート 関数 として セル に記述すると [ #VALUE! ] が返ります （ＶＢＡ専用関数です）。

【 パラメータ 内容 】

[ Target ]
 | UserForm を表示したい セル の Range オブジェクト を指定します。 セル範囲を指定した場合は先頭セル （左上セル） が対象になります。 Target の セル が ウィンドウ 表示範囲外 の場合は [ #VALUE! ] が返ります。
[ PaneIdx ]
 | ０ / 省略 : 分割なし or 対象領域 ( Pane ) の自動検出 １ ： 左上 (４分割) or 左側 (左右分割) or 上側 (上下分割) の 領域 ２ ： 右上 (４分割) or 右側 (左右分割) or 下側 (上下分割) 〃 ３ ： 左下 (４分割) の領域 ４ ： 右下 (４分割) 〃 -- ウィンドウ枠の固定/分割 を行なっていない -- 省略 （または ０ ） してください。 指定しても無視します。 -- ウィンドウ枠の固定 -- 省略 （または ０ ） してください。 指定しても無視します。 対象領域 は Target から自動検出します。 ※ ～Excel 2003 では、対象領域 が ２ ～ ４ の場合には [ #VALUE! ] が返ります。 -- ウィンドウ枠の分割 -- 省略（または ０ ） の場合は、アクティブ領域 を 対象領域 とします。 １ ～ ４ を指定すると、指定の領域が 対象領域 となります。 分割枠の数以上の値を指定すると [ #VALUE! ] が返ります。 ※ ～Excel 2003 では、対象領域 が ２ ～ ４ の場合には [ #VALUE! ] が返ります。

【 解 説 】

セル の スクリーン座標 ( Top , Left ) と、UserForm の表示位置 ( Top , Left ) は、各々が使用する座標の
単位が異なる為に、セル の スクリーン座標 を、そのまま UserForm に使用する事はできません。

ktCell2Position 関数は、セル の スクリーン座標 ( Top , Left ) を UserForm の表示位置の座標 ( Top , Left )
に変換します。

【 使 用 例 】

-- ダブルクリック した セル の位置に UserForm を表示します --

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim vntPos As Variant

vntPos = ktCell2Position(Target)
If IsError(vntPos) Then
MsgBox "Error"
Cancel = True
Exit Sub
End If

Load UserForm1
With UserForm1
.StartUpPosition = 0
.Top = vntPos(0)
.Left = vntPos(1)
.Label1.Caption = Target.Address(False, False) & vbCrLf & vbCrLf & _
"CellTop = " & Target.Top & vbCrLf & vbCrLf & _
"CellLeft= " & Target.Left & vbCrLf & vbCrLf & _
"Top = " & .Top & vbCrLf & vbCrLf & _
"Left= " & .Left
.Show
End With
Cancel = True
End Sub

-- ktMsgBox での 利用 ( F5 セル の位置に表示) --

Dim vntPos As Variant
Dim vntTop As Variant
Dim vntLeft As Variant

vntPos = ktCell2Position(ActiveSheet.Range("F5"))
If IsError(vntPos) Then
'F5 セル が 表示範囲外 ⇒ Top/Left を省略
vntTop = Empty
vntLeft = Empty
Else
vntTop = vntPos(0) + 5
vntLeft = vntPos(1) + 5
End If

ktMsgBox "xxxxxxxx", vbOkOnly + vbInformation, _
Top:=vntTop, Left:=vntLeft
End If


[ ktPaletteColorEX ] サブルーチン

ktMsgBox Wizard で 利用している パレットフォーム を マクロ から利用する為のサブルーチンです。

【 構 文 】

Call ktPaletteColorEX | ( PaletteEXData, [ PaletteEXBook ] )
PaletteEXData | -- | kt_PaletteEXType 型 ( ユーザー定義型 ) ( ByRef )
PaletteEXBook | -- | String 型 (省略可, 省略時: "Active" )
ユーザー定義型 [ kt_PaletteEXType ] は､ [ ktMsgBoxAddin.xla ] 内で下記のように定義されています。 （参照設定すれば利用できます）
Public Type kt_PaletteEXType
 | ClipBoard As Boolean | カラー選択時の クリップボード への コピー有無
 | SelectRGB As Boolean | RGB 選択画面の展開有無
 | Flg As String | Call 時 ： 空文字("") , "Init" , "Book" , "UnLoad"
 |  | Return 時 ： "Get" , "Cancel"
 | ColorIndex As Integer | 1 ～ 56 ，RGB 画面展開時は [ 99 ] 固定
 | ColorLong As Long | 0 ～ 16777215
 | ColorHex As String | BBGGRR 形式 ( 6桁固定 )
 | ColorB As Integer | 0 ～ 255
 | ColorG As Integer | 0 ～ 255
 | ColorR As Integer | 0 ～ 255
End Type

【 パラメータ 内容 】

[ PalleteEXData ] ( ByRef )
 | PalleteEXData は､利用者側で下記のような 『 変数定義 』 が必要です Dim PalletEXData As kt_PaletteEXType
 | ( ClipBoard )
 | カラー決定時に､その カラーの １６進文字列 [ &HBBGGRR ] を クリップボード に コピー するか どうかを指定します。 True ： コピーする False ： コピーしない
 | ( SelectRGB )
 | ＲＧＢ 画面の展開可否を指定します。 セル に指定するカラーを取得する場合は False にして パレットカラー 以外の選択を不可に してください。 True ： ＲＧＢ 指定可 False ： パレットカラーのみ可
 | ( Flg )
 | ユーザー が カラー を選択したのか､キャンセル したのか、という情報が返る項目です。 "Get" ： カラーを選択 "Cancel" ： キャンセル 初回Call 時には､この項目に "Init" を設定してください。 「カラーパレットＥＸ」 は Ｈｉｄｅ モード で フォーム を閉じますので､呼び元の マクロ が 終了する直前には､この項目に "UnLoad" を設定して Call してください（使用例参照）。 それ以外の時では､返ってきた"Get"/"Cancel" のままで Call して構いません。 わざわざ 空文字( "" ) に クリア する必要はありません。 カラーパレット を取り込む ブック を途中で切り換える場合は "Book" を設定してから Call します。
 | ( Color ～ )
 | カラーを選択した場合は､色の値 「パレット番号 , 数値 , １６進文字列 , ＲＧＢ各色の数値 」 が 各々の項目に返ります。キャンセルした場合は各々「ゼロ or 空文字( "" )」 が返ります。 尚､ ColorHex は BBGGRR の６ 文字です。 先頭に "&H" は付いていませんので､必要な場合はマクロ側で付加してください。 RGB 画面展開時の [ ColorIndex ] の値は 99 固定です。
[ PaletteEXBook ]
 | パレットブック を取得する ブック名 を指定します。 ここに指定するブックは､オープンされている必要があります。 もし､オープンされていないブックを 指定した場合は [ｋｔMsgBoxAddin.xla ] が適用されます（標準パレット）。 ActiveWorkbook の パレット を利用する場合は "Active" と指定します。 ActiveWorkbook 以外の パレット を利用する場合は､その ブック名を指定します。 ("Book1.xls" など）

【 解 説 】

この サブルーチン を使うと ktMsgBox Wizard で使用している カラーパレットフォーム を マクロ から
利用する事ができます。
フォーム の操作方法は カラーパレットフォーム の項を参照して下さい。

【 使 用 例 】

---- UserForm での利用例 ----

Private ColorData As kt_PaletteEXType '宣言セクションで定義

Private Sub UserForm_Initialize()
ColorData.ClipBoard = False ' 16進文字のクリップボードコピー無し
ColorData.SelectRGB = True ' RGB画面の展開有り
ColorData.Flg = "Init"
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If (ColorData.Flg <> "Init") Then
'一度でも呼び出されていたら[Load]状態のままなので最後に[UnLoad]する
ColorData.Flg = "UnLoad"
Call ktPaletteColorEX(ColorData, ThisWorkbook.Name)
End If
End Sub

Private Sub Label1_Click()
Call ktPaletteColorEX(ColorData, ThisWorkbook.Name)
'[色]を選択(Get)した場合のみ設定する
If (ColorData.Flg = "Get") Then
Label1.BackColor = ColorData.ColorLong
End If
End Sub

---- シート上のコマンドボタンでセル背景色変更の例 ----

※ セル には パレット の５６色しか使えないので ＲＧＢ展開 はしない

'---------------[標準モジュール]-----------------------
Public ColorData As kt_PaletteEXType

'---------------[ThisWorkbook モジュール]--------------
Private Sub Workbook_Open()
ColorData.ClipBoard = False ' 16進文字のクリップボードコピー無し
ColorData.SelectRGB = False ' RGB画面の展開無し
ColorData.Flg = "Init"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If (ColorData.Flg <> "Init") Then
'一度でも呼び出されていたら[Load]状態のままなので最後に[UnLoad]する
ColorData.Flg = "UnLoad"
Call ktPaletteColorEX(ColorData, ThisWorkbook.Name)

'別名保存後に元ブックを保存する時に､既にUnLoad済のところへ
'再びUnLoad指示を出さないようにする為の配慮
ColorData.Flg = "Init"
End If
End Sub

'--------------[シートモジュール]---------------------
Private Sub CommandButton1_Click()
Call ktPaletteColorEX(ColorData, ThisWorkbook.Name)

'[色]を選択(Get)した場合のみ設定する
If (ColorData.Flg = "Get") Then
ActiveCell.Interior.Color = ColorData.ColorLong
End If
End Sub

---- 『色見本 Ver 2.1』のデモマクロ ----

Public Sub ktPaletteEXDemo()
Dim ColorData As kt_PaletteEXType
Dim MsgResp As Integer
ColorData.ClipBoard = True ' 16進文字のクリップボードコピー有り
ColorData.SelectRGB = True ' RGB画面の展開有り
ColorData.Flg = "Init"

Palette1:
Call ktPaletteColorEX(ColorData, ThisWorkbook.Name)
If (ColorData.Flg = "Cancel") Then
MsgResp = MsgBox("【カラーパレットＥＸ　デモ】" & vbCrLf _
& "キャンセルされました" & vbCrLf _
& "繰り返しますか？", vbYesNo + vbInformation)
Else
MsgResp = MsgBox("【カラーパレットＥＸ　デモ】" & vbCrLf _
& "受け取ったカラー情報は下記の通りです" & vbCrLf & vbCrLf _
& "（No） = " & ColorData.ColorIndex & vbCrLf _
& "16進 = 0x" & ColorData.ColorHex & "(BBGGRR)" & vbCrLf _
& "10進 = " & Format(ColorData.ColorLong, "#,##0") & vbCrLf _
& "（青） = " & ColorData.ColorB & vbCrLf _
& "（緑） = " & ColorData.ColorG & vbCrLf _
& "（赤） = " & ColorData.ColorR & vbCrLf _
& vbCrLf & "繰り返しますか？", vbYesNo + vbInformation)
End If

If (MsgResp = vbYes) Then
GoTo Palette1
Else
ColorData.Flg = "UnLoad"
Call ktPaletteColorEX(ColorData, ThisWorkbook.Name)
End If
End Sub


ウィザードツールの 文字色/背景色の設定欄を 【右クリック】 すると、
「色名 選択ダイアログ」 が出ますので、『このページの検索＆色名の
コピー/ペースト』 といった作業の必要はありません。

ColorName List ( &H bb gg rr )
[ A ]
AliceBlue (&HFFF8F0) | AntiqueWhite (&HD7EBFA) | Aqua (&HFFFF00)
AquaMarine (&HD4FF7F) | Azure (&HFFFFF0) |
[ B ]
Beige (&HDCF5F5) | Bisque (&HC4E4FF) | Black (&H000000)
BlanchedAlmond (&HCDEBFF) | Blue (&HFF0000) | BlueViolet (&HE22B8A)
Brown (&H2A2AA5) | BurlyWood (&H87B8DE) |
[ C ]
CadetBlue (&HA09E5F) | Chartreuse (&H00FF7F) | Chocolate (&H1E69D2)
Coral (&H507FFF) | CornflowerBlue (&HED9564) | CornSilk (&HDCF8FF)
Crimson (&H3C14DC) | Cyan (&HFFFF00) |
[ D ]
DarkBlue (&H8B0000) | DarkCyan (&H8B8B00) | DarkGoldenRod (&H0B86B8)
DarkGray (&HA9A9A9) | DarkGreen (&H006400) | DarkKhaki (&H6BB7BD)
DarkMagenta (&H8B008B) | DarkOliveGreen (&H2F6B55) | DarkOrange (&H008CFF)
DarkOrchid (&HCC3299) | DarkRed (&H00008B) | DarkSalmon (&H7A96E9)
DarkSeaGreen (&H8FBC8F) | DarkSlateBlue (&H8B3D48) | DarkSlateGray (&H4F4F2F)
DarkTurquoise (&HD1CE00) | DarkViolet (&HD30094) | DeepPink (&H9314FF)
DeepSkyBlue (&HFFBF00) | DimGray (&H696969) | DodgerBlue (&HFF901E)
[ F ]
FireBrick (&H2222B2) | FloralWhite (&HF0FAFF) | ForestGreen (&H228B22)
Fuchsia (&HFF00FF) |  |
[ G ]
Gainsboro (&HDCDCDC) | GhostWhite (&HFFF8F8) | Gold (&H00D7FF)
GoldenRod (&H20A5DA) | Gray (&H808080) | Green (&H008000)
GreenYellow (&H2FFFAD) |  |
[ H ]
HoneyDew (&HF0FFF0) | HotPink (&HB469FF) |
[ I ]
IndianRed (&H5C5CCD) | Indigo (&H82004B) | Ivory (&HF0FFFF)
[ K ]
Khaki (&H8CE6F0) |  |
[ L ]
Lavender (&HFAE6E6) | LavenderBlush (&HF5F0FF) | LawnGreen (&H00FC7C)
LemonChiffon (&HCDFAFF) | LightBlue (&HE6D8AD) | LightCoral (&H8080F0)
LightCyan (&HFFFFE0) | LightGoldenRodYellow (&HD2FAFA) | LightGreen (&H90EE90)
LightGrey (&HD3D3D3) | LightPink (&HC1B6FF) | LightSalmon (&H7AA0FF)
LightSeaGreen (&HAAB220) | LightSkyBlue (&HFACE87) | LightSlateGray (&H998877)
LightSteelBlue (&HDEC4B0) | LightYellow (&HE0FFFF) | Lime (&H00FF00)
LimeGreen (&H32CD32) | Linen (&HE6F0FA) |
[ M ]
Magenta (&HFF00FF) | Maroon (&H000080) | MediumAquaMarine (&HAACD66)
MediumBlue (&HCD0000) | MediumOrchid (&HD355BA) | MediumPurple (&HDB7093)
MediumSeaGreen (&H71B33C) | MediumSlateBlue (&HEE687B) | MediumSpringGreen (&H9AFA00)
MediumTurquoise (&HCCD148) | MediumVioletRed (&H8515C7) | MidnightBlue (&H701919)
MintCream (&HFAFFF5) | MistyRose (&HE1E4FF) | Moccasin (&HB5E4FF)
[ N ]
NavajoWhite (&HADDEFF) | Navy (&H800000) |
[ O ]
OldLace (&HE6F5FD) | Olive (&H008080) | OliveDrab (&H238E6B)
Orange (&H00A5FF) | OrangeRed (&H0045FF) | Orchid (&HD670DA)
[ P ]
PaleGoldenRod (&HAAE8EE) | PaleGreen (&H98FB98) | PaleTurquoise (&HEEEEAF)
PaleVioletRed (&H9370DB) | PapayaWhip (&HD5EFFF) | PeachPuff (&HB9DAFF)
Peru (&H3F85CD) | Pink (&HCBC0FF) | Plum (&HDDA0DD)
PowderBlue (&HE6E0B0) | Purple (&H800080) |
[ R ]
Red (&H0000FF) | RosyBrown (&H8F8FBC) | RoyalBlue (&HE16941)
[ S ]
SaddleBrown (&H13458B) | Salmon (&H7280FA) | SandyBrown (&H60A4F4)
SeaGreen (&H578B2E) | SeaShell (&HEEF5FF) | Sienna (&H2D52A0)
Silver (&HC0C0C0) | SkyBlue (&HEBCE87) | SlateBlue (&HCD5A6A)
SlateGray (&H908070) | Snow (&HFAFAFF) | SpringGreen (&H7FFF00)
Steelblue (&HB48246) |  |
[ T ]
Tan (&H8CB4D2) | Teal (&H808000) | Thistle (&HD8BFD8)
Tomato (&H4763FF) | Turquoise (&HD0E040) |
[ V ]
Violet (&HEE82EE) |  |
[ W ]
Wheat (&HB3DEF5) | White (&HFFFFFF) | WhiteSmoke (&HF5F5F5)
[ Y ]
Yellow (&H00FFFF) | YellowGreen (&H32CD9A) |


【 ktMsgBox ウィザード 】

ktMsgBox / ktMsgBoxEX の ウィザード ツールです。

引数が非常に多いですが､この ウィザード で テスト した設定は、 そのまま ソースコード に変換してくれ
ますので､クリップ ボード から モジュールウィンドウ へ貼り付ければ直ぐに動かす事が出来ます。

Test
このダイアログで設定した内容でテスト表示します

Source Code
このダイアログで設定した内容のマクロ コード を クリップボード に コピーします。
そのまま､モジュールウィンドウに貼り付けてください。

Prompt
表示するメッセージを記入します。
改行する場合は [ Shift + Enter ] です。

Font
ＰＣ に インストール されている フォント および [ フォント の略記号 ] が コンボボックス に
設定されていますので、使用するフォント をリストから選択します。

【 略記号 】
"UIG" | : MS UI Gothic |
"MSG" | : ＭＳ ゴシック |
"MSPG" | : ＭＳ Ｐゴシック |
"MSM" | : ＭＳ 明朝 |
"MSPM" | : ＭＳ Ｐ明朝 |
"ARI" | : Arial | （英語フォント）
"CENT" | : Century | （英語フォント）
"COUR" | : Courier New | （英語フォント）
"ROMAN" | : Times New Roman | （英語フォント）
"TAHOMA" | : Tahoma | （英語フォント）

Size
フォントサイズ を ９～２０ の中から選択します。

Bold
Ex チェックボックス が オン （ktMsgBoxEX ) の場合に指定できます。

Ex チェックボックス / Clear
オフ の場合は ktMsgBox 、オン の場合は ktMsgBoxEx による表示です。
ktMsgBoxEX では、太字指定 および
行グループ単位でのフォント/カラー指定が可能です。

Clear ボタンで 登録した全ての行グループの内容が消去され、初期状態に戻ります。

Group
Ex チェックボックス が オン の場合に、行グループ番号（ Max 10 ） の指定を行ないます。
指定した 行グループ の内容が Prompt 欄に表示されます。

Resp Code
テスト表示で応答したボタン種類、または InputBox 機能で入力した内容を表示します。

PromptColor / BackColor / Clear
メッセージボックス の 文字色/背景色を指定します。
左クリック で パレットフォーム、右クリック で 色名フォーム が ポップアップ します。
Clear ボタンで色指定が リセット されます。

Title
メッセージボックス の キャプションに表示する文字を指定します。
省略すると､ktMsgBox or ktMsgBoxEX になります。

Buttons
メッセージボックス に表示する標準の ボタン を選択します。

Icon
標準の 「警告・問合せ・注意・情報」 の他に､１３ 種のオリジナルアイコンが指定できます。

Default Button
デフォルトボタンの番号を指定します。

ボタン表示を英語版に合わせる
「はい､いいえ」 などの ボタンキャプション を英語版Excel と同じ 「ＯＫ , Ｃａｎｃｅｌ」 などに
変更できます。

Top ＆ Left
表示位置を指定します。
一方もしくは両方を省略するとウィンドウ中央に表示されます。

特定の セル の付近に表示させたい場合には、 Top/Left に設定する座標データ を
ktCell2Position 関数を使って取得します。使用方法は ktMsgBox の 使用例 を参照
して下さい。 ( Ver 3.30 ～ )

Chime
Wave音の連続再生を指定します。
Wave音はボタンを押すまで鳴り続けます。

Wait Second
一定時間表示したら自動的に閉じる秒数を指定します。

Chime/Wait Guidance Color
Chime/Wait 機能時に表示されるガイダンスメッセージの文字色を指定します。
省略すると 「茶色」 になります。
左クリック で パレットフォーム、右クリック で 色名フォーム がポップアップします。
Clear ボタンでリセットされます。

Input Type
InputBox 機能を利用する場合に､その属性・入力欄の幅・デフォルト値を指定します。

User Define Button
ユーザー定義ボタンを利用する場合に､その内容を定義します。

Wave/Icon File
Wave音やアイコン画像を指定する場合に､そのフルパスを指定します。
ダブルクリックで [ ファイルを開く ] ダイアログが表示されます。

BackImage/Width/Height
メッセージボックス に背景画像を使用する場合に､そのフルパスを指定します。
ダブルクリック で [ ファイルを開く ] ダイアログが表示されます。
メッセージボックス の 大きさを指定する事も出来ます。

HyperLink
ハイパーリンクメッセージを使用する場合に記入します。
ＨＰは [ http: ～ ] 。
メールは [ mailto: ] に続けてメールアドレスを記述します。


【 カラー パレット フォーム 】

カラー情報 を パレット または ＲＧＢ 指定で作成する支援ツールです。

カラーパレット は ＡｃｔｉｖｅＢｏｏｋ のものが適用されます。

クリップボード に ”&HBBGGRR” という形式の文字列が コピー されます。

-- 左 画面 （カラーパレット） --

１． Web Safe Color
凹状態 にすると､ＲＧＢ各色が [ 0x00 , 33 , 66 , 99 , CC , FF ] の組み合わせとなる [ WebSafeColor ] のみが
選択可となります。WebSafeColor は､Win とMac で同じ発色になります。

２． スピンボタン
左右の スピンボタン によって、右側の ＲＧＢ画面 を展開したり、畳んでパレットのみにしたりの切替ができます。

３． パレット ボタン （５６ 色）
ＲＧＢ画面が出ていない時は､クリック するとそのカラーの１６進 ”＆ＨＢＢＧＧＲＲ” がクリップボード に コピーされます。
ＲＧＢ画面が出ている時は､選択した カラー がＲＧＢ画面に反映されます。

５６色の パレット上にマウスカーソルを重ねると､そのカラーの [ ColoIndex ] と 「 １６進 」 がポップアップ表示されます。

４． ワークブック 名
ここに表示されている ワークブック の カラーパレット が表示されています。
通常は アクティブ ブック です。

５． Cancel ボタン
閉じるボタン　（×）　を無効にしてあります。入力をキャンセルする場合にクリックします。

-- 右 画面 （ＲＧＢ 画面） --

６． スクロールバー ＆ スピンボタン （Ｒ , Ｇ , Ｂ）
ＲＧＢ の値を変更して 「カラー」 を作成します。
スピンボタン と スクロールバーは連動しています。

７． [ ３ Ｃｏｌｏｒ ] スピンボタン
カラーの 『明度』 を調整します。このボタンは３色を同時に増減します。

８． [ Lock ] ボタン （Ｒ , Ｇ , Ｂ）
明度』調整の際に【固定】するカラーを１色指定できます。
これで 『彩度』 に似た調整を行なうことができます。

９． カラー 表示枠
ＲＧＢ を調整して作成したカラーを表示します。

１０． Color ボタン
ＲＧＢ画面（右 画面） が表示されている時のカラー決定ボタンです。
そのカラーの１６進 ”＆ＨＢＢＧＧＲＲ” が クリップボード に コピー されます。

このフォームは 『 ktPaletteColorEX 』 サブルーチンを記述すればＶＢＡマクロから呼び出すことができます。

※　Excel 2003 以前では、ワークシートのセルに設定できる色は 『カラーパレットの５６色』 だけです。
これ以外の色を設定しようとすると 『５６色』 のいずれかに置換されます。
（別に公開している 『色見本作成フォーム (Ver2.1) 』 というソフトで確認できます）

UserForm のコントロールには､ＲＧＢ指定の全ての色が設定できます。
UserForm 設計時の色設定のサポートツールとして利用して下さい。


【 使用条件 】

  • 『 ktMsgBox アドイン 』 は フリーウェア です。

  • 配布ファイルの内容を変更しないという条件で使用/再配布は自由です。
    再配布に当たっては､媒体費等の実費以上の金銭授受は固く禁じます。

  • 『 ktMsgBox アドイン 』 の （ＨＰ・ブログ・雑誌 等への） 無断転載はご遠慮願います。
    "転載" とは、アドインの配布ファイル、もしくは、配布ファイル内の個別ファイル そのものを、ＨＰ・ブログ・雑誌等の媒体上に載せる事などを指します。

    尚、AddinBox サイト内にある 配布ファイルへの リンク を掲載する事は自由です。

  • [ ktMsgBox アドイン ] を利用したフリーソフト等の配布に際してのお願い。
    ktMsgBox アドインを、業務等に使うブックで利用する為に、その利用ブックと一緒に配布する事(再配布)は構いません。ただし、フリーソフト等で利用する場合には、以下の理由で問題と考えますので、そのフリーソフトの配布ファイルに [ ktMsgBox アドイン ] を含める事はご遠慮ください。

    1. 完全な 『 不特定多数 』 への２次配布になる。
      通常の利用であれば、利用ブック作成者の周辺(社内など)に限られます。また、そのソフトの説明書の書き方によっては、『 ktMsgBox アドイン 』 の出典が不明になります。

    2. ＨＰ等での公開になる訳ですから「転載」の範疇になります。転載では、私の許諾が必要です。

    3. バグフィックス/改良等で、私のバージョンアップ管理から外れてしまう。
      私の方で幾ら修正を行なっても、その配布ファイル内にあるものは旧バージョンのまま取り残されます。

    4. 雑誌等への掲載依頼が届いた時に作者の許諾のみでは不可。
      そのフリーソフトが雑誌等に掲載（転載の範疇です）される場合を考えると、そのソフト作者の他に 「私の許諾」 も必要になります。

    特に、( c ) 項については利用者にまで迷惑を掛けてしまいます。したがって、ktMsgBox アドインの利用が必要な場合には、ReadMe.txt 等の使用説明書に
    「尚、このソフトを使用するには別途 [ ktMsgBox アドイン ] が必要です。
    下記のＨＰからダウンロードしてエクセルにアドイン登録して下さい。」
    http://addinbox.sakura.ne.jp/index.htm
    ( 旧サイト ) http://www.h3.dion.ne.jp/~sakatsu/index.htm
    と記して、フリーソフト等の配布ファイルには含めないで下さい。

【 著作権・免責 】

『 ktMsgBox アドイン 』 の全ての著作権は 「 作者 ： 角田 桂一 」 が保持します。

尚､このソフトを使用したことで発生したいかなる損害についても、作者は一切責任を負わないものとします。

【 連絡先 】

『 角田 桂一 addinbox@h4.dion.ne.jp 』

『 ホームページ http://addinbox.sakura.ne.jp/index.htm 』
『 ( 旧サイト ) http://www.h3.dion.ne.jp/~sakatsu/index.htm 』

質問・感想・要望・バグ報告などの連絡は下記掲示板へお願いします。
バージョンアップの際の参考にさせて頂きます。

『 あどいん らうんじ 掲示板 http://addinbox.webspace.ne.jp/bbs/ 』

ただし､
『 特定ユーザー向けの限定バージョン依頼 』
『 期限を指定しての機能追加の要望 』
等にはお応えしかねますので､ご了承ください。


【 履 歴 】

-- 2018/ 4/16 Ver3.40 --
  1. MsgBox表示時のBeep音処理を変更しました。
    [ Windows\Media ] ディレクトリ 内の サウンドファイル を ファイル名で直接指定していしていたのを、
    [ コントロールパネル/サウンド ] に設定されている音源を指定するようにしました。

  2. Excel2016で UserForm の Width / Height を動的に設定すると
    以前の バージョン に比べて狭くなる (7.5p) 症状に対処しました。
    [ UserForm is shorter and narrower than in earlier versions of Excel ]
    https://support.microsoft.com/en-us/help/3156159
-- 2015/ 9/19 Ver3.30 --
  1. ktCell2Position 関数を追加し、指定のセルの上にポップアップできるようになりました。

  2. Excel97 をサポート対象外としました。
-- 2011/ 9/20 Ver3.20 --
  1. Windows (64bit) / Excel (64bit) への対応を施しました。

  2. ヘルプファイルを CHM 形式ファイルにしました。
-- 2003/ 6/28 Ver3.13 --
  1. 【Excel2002 】の場合に限り､下記障害が発生した為､これを修正しました。

    (障害)
    アドイン登録時には問題ないが､その後でエクセルを起動した時に､実行時エラーが発生し、ktMsgBoxAddinをアドインしている限り､ブック操作が出来なくなる。

    (原因)
    Ver3.10 から､フォントリストを書式メニューバーのFont-ComboBoxから取得していますが､ここにアクセスする為にはActiveなWorksheetが存在する必要があります。エクセル起動時のアドイン読み込み時点では､ActiveなWorksheetが存在しない為､一時的に「アドイン属性解除」を行って対処しています。

    Excel97/2000では､これで問題なく取得できますが､Excel2002においては､「アドイン属性解除」を行なってもFont-ComboBoxにアクセスできない為に実行時エラーになりました。アドイン登録は､白紙ブックなり､何かブックが開かれている状態で行いますから､ActiveなWorksheetが存在し、Font-ComboBoxへのアクセスが可能であり､その為にエラーにはなりません。

    (対処)
    フォントリストの取得をＡＰＩにより､直接取得するように変更します。
    ただし､Excel97では使えない[AddressOf]演算子が必要な為､条件付コンパイルによって､Excel97では従来通りに書式メニューバーより取得します。
-- 2003/ 6/ 6 Ver3.12 --
  1. 配布ファイルの[ktMsgBox_Note.txt]と[ktMsgBox_Syntax.txt]をＨＴＭＬファイルに差し替えました。
    機能変更はありませんので､バージョン表記は[Ver3.12]のままです。
-- 2003/ 6/ 1 Ver3.12 --
  1. 配布ファイルに[ktMsgBox_Note.txt]を追加

  2. Excel97において､『ktMsgBox Wizard 』での色設定フォームの動作に不具合が有ったので修正しました。

  3. [Buttons]引数における､Excel2000での自動メンバ表示を取り止めまた。
    （Excel97 において､その指定が不具合を起こした為）
-- 2003/ 4/ 3 Ver3.11 --
  1. 「ktMsgBox体験.xls」で提供している『ktMsgBox Wizard』において､【色名】用の色設定ダイアログから [Web SafeColor] のマークが付いている色を選択した場合に実行時エラーとなるのを修正しました。

  2. WindowsXP で[WindowStyle : XP Mode]の場合に､タイトルバーの高さが従来モード(Win98/Me/NT/2000 )に比べて大きくなっており､その分だけコマンドボタンの位置が下がって､フォーム下端に接していたのを修正しました。
-- 2002/12/22 Ver3.10 --
  1. [Wait機能]時に､他のアプリケーション操作が出来なくなる不具合を修正しました。

  2. InputBox機能にパスワード指定を追加しました。

  3. １０種の記号で指定できるフォントの他に､インストールされている全てのフォントを､直接､フォント名で指定できるようにしました。

  4. コード生成ツールから呼び出すパレットフォームで[WebSafeColor]指定を追加しました。

  5. HTMLで使う「色名」をRGB数値に変換する[ktWebColor2Num]関数を追加しました。

  6. オリジナルの組み込みアイコンを追加しました。

  7. Office2000(not SR1)において､カーソルが表示されない不具合を修正しました。
    （これはOffice2000(not SR1)固有のバグに起因するものです）

  8. [WaveFile]等でアクセスできないパス内容によっては実行時エラーになるのを回避するように修正しました。
-- 2002/11/10 Ver3.00 --
  1. ktMsgBoxEX でのフォント属性に[太字]を追加しました。

  2. ktMsgBox/ktMsgBoxEXに､以下の機能の追加を行ないました。
    1. ユーザー定義ボタン
    2. InputBox機能
    3. Wait機能
    4. 背景画像の指定
    5. HyperLinkメッセージ

  3. 体験ツールを[ktMsgBoxEX]対応にし､ソース生成機能を持たせました。
-- 2002/10/15 Ver2.00 --
  1. 既定のフォントを[ＭＳ Ｐゴシック, 10p]固定から､『画面のプロパティ』で設定してあるフォントに変更する。『画面のプロパティ』を変更すれば､ktMsgBoxの既定フォントにも反映されます。

  2. ktMsgBox に[フォント名およびフォントサイズ]指定を追加

  3. 行単位でフォント指定のできる[ktMsgBoxEX]関数を追加

  4. PromptColor/BackColorを16進で[&H8000 ～ &HFFFF]と指定すると､Integer型の認識で負数になる為､カラープロパティ設定時に異常終了していたのを回避するように修正しました（表示は既定色）。
-- 2002/ 7/30 Ver1.00 --
  1. 初版


【 謝 辞 】

x64 環境での動作確認にあたって、「きぬよ＆あさみ」 さんに御協力頂きました。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
「画面のプロパティ」 から既定のフォント情報を取得するにあたって、下記ＨＰのコードを利用させて頂きました。

--- 新山(へろぱ)のホームページ ---
http://plaza5.mbn.or.jp/~heropa/
『ＶＢ Ｔｉｐｓ/非クライアントエリアのフォントの情報取得』

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
インストールされている「フォント一覧」を取得するにあたって、下記ＨＰのコードを利用させて頂きました。

--- The Spreadsheet Page (JWalk & Associates) ---
http://j-walk.com/ss/
[ Getting a List of Installed Fonts ]
http://j-walk.com/ss/excel/tips/vbafunctions.htm