• ベストアンサー

&HFFFFFF

アクセスVBAでは Forms("F_Form").詳細.BackColor = &HFFFFFF の様に記載できますが なぜ&HFFFFFFはダブルコーテーションでくくらないくてもエラーにならないのでしょうか? 文字列とは認識されないのですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

エクセルシステムで決められた色のコードは、文字列でないからです。 また16進法でも指定できるから質問麻ようにしてOKになるのです。2進数表示(指定)は(桁数が多くなるせいか)VB関係の解説書では余り説明されていません。 Sub test01() MsgBox &HFFFFFF MsgBox WorksheetFunction.Hex2Bin("FF") End Sub のようにしてみると、具体的な10進数での数が見れます(前半) 後半のようにエクセル関数では、"FF”のようにダブルコーテーションを付けます。 システムと関数によって異なる面があるということです。(すべてMSが決めたことじゃもの)。ただしHex2Bin("FF")の()内は変換後で10文字までという制約がありますので色コードに使うのには不適ですが(たとえエクセルVBAの場合でも)。

AHTWVUPNG
質問者

お礼

ご回答ありがとうございました。

その他の回答 (3)

回答No.4

回答1が全てだが・・・。 添付図をチラッと眺めてみて下さい。

AHTWVUPNG
質問者

お礼

ご回答ありがとうございました。

  • asciiz
  • ベストアンサー率70% (6803/9675)
回答No.2

「&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進数表記を使って記述するわけです。

AHTWVUPNG
質問者

お礼

ご回答ありがとうございました。

noname#231223
noname#231223
回答No.1

&HFFFFFFが文字列なんかではなく値(数値)だからでしょう。 &HFFFFFF=16777215(10進法)

AHTWVUPNG
質問者

お礼

ご回答ありがとうございました。

関連するQ&A