- ベストアンサー
&HFFFFFF
アクセスVBAでは Forms("F_Form").詳細.BackColor = &HFFFFFF の様に記載できますが なぜ&HFFFFFFはダブルコーテーションでくくらないくてもエラーにならないのでしょうか? 文字列とは認識されないのですか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
エクセルシステムで決められた色のコードは、文字列でないからです。 また16進法でも指定できるから質問麻ようにしてOKになるのです。2進数表示(指定)は(桁数が多くなるせいか)VB関係の解説書では余り説明されていません。 Sub test01() MsgBox &HFFFFFF MsgBox WorksheetFunction.Hex2Bin("FF") End Sub のようにしてみると、具体的な10進数での数が見れます(前半) 後半のようにエクセル関数では、"FF”のようにダブルコーテーションを付けます。 システムと関数によって異なる面があるということです。(すべてMSが決めたことじゃもの)。ただしHex2Bin("FF")の()内は変換後で10文字までという制約がありますので色コードに使うのには不適ですが(たとえエクセルVBAの場合でも)。
その他の回答 (3)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
- asciiz
- ベストアンサー率70% (6803/9675)
「&H」は16進数の数値を表す接頭文字です。 すなわち「&HFFFFFF」っていうのは、数値そのものなんです。(16進数表記では、1ケタの10=A、1ケタの11=B、というように、9以降、A~Fまでの文字まで使います) 実はそこを10進数表記してもいいんですよ。 &HFFFFFF=10進数の16777215 ですから、 Forms("F_Form").詳細.BackColor = 16777215 と書いても同じ意味になります。 10進数でも16進数でも、どちらの表記も「数値」ですから、ダブルクォートではくくりません。 10進数でも16進数でもいいんですが、色指定では、16進数の方がわかりやすいので、16進数で書いていることが多いわけです。 16進数にすると2桁ごとにBlue・Green・Redの輝度となるので、例えばGreen輝度を0にしたマゼンダ(ピンク)にしたい場合は、&HFF00FF、と書きます。 これを10進数表記すると、16711935、という値になります。 Forms("F_Form").詳細.BackColor = &HFF00FF と Forms("F_Form").詳細.BackColor = 16711935 のどちらがわかりやすいでしょうか。 計算すれば、16777215(&HFFFFFF)から、65280(&H00FF00)を引いた値が、16711935(&HFF00FF)という訳なので、別に違うことを書いているわけではないんですね。 でも圧倒的に前者の方がわかりやすく、変更もしやすいので、16進数表記を使って記述するわけです。
お礼
ご回答ありがとうございました。
&HFFFFFFが文字列なんかではなく値(数値)だからでしょう。 &HFFFFFF=16777215(10進法)
お礼
ご回答ありがとうございました。
お礼
ご回答ありがとうございました。