- ベストアンサー
#008000が&H8000に変化する
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
4byte以内で表現できる値は、Integer型になります。 最上位ビットが符号になるので、Integerでは±7FFFしか表現できません。 なので、HEXは型の明示(お尻に&か%)が必須。 "&H~&" が基本形だと覚えておくとよいかと。 Me.詳細.BackColor = &H8000& ※頭にも&つくので紛らわしいですが、ただの型の明示です。 Dim a As Variant a = 0& 'Variant/Long型になる a = 0% 'Variant/Integer型になる
その他の回答 (2)
- nicotinism
- ベストアンサー率70% (1019/1452)
なるほど~。 型宣言文字が必要だったのですね。 勉強になりました。
お礼
ありがとうございます。
- nicotinism
- ベストアンサー率70% (1019/1452)
数値なので前ゼロが消えてしまいます。 dim a as long a = 010 としても→ a = 10 になりますよね。 ただ、 当方の2010では、&H8000 の状態でフォームを開くと、黒ではなく白?になります。 なぁぜ? &H8000 だと -32768 に RGB(0,128,0) で指定するしか無さそう?です。 こんな関数を標準モジュールに作り、出力した結果をイミディエイトウィンドウからコピペしてます。 Function HEX2RGB(sHex As String) As String '?hex2rgb("#0080FF") → RGB(0,128,255) 色 sHEX = Mid(sHEX, 2) sHEX = String(6 - Len(sHEX), "0") & sHEX HEX2RGB = "RGB(" & CStr(CByte("&H" & Mid(sHEX, 1, 2))) _ & "," & CStr(CByte("&H" & Mid(sHEX, 3, 2))) _ & "," & CStr(CByte("&H" & Mid(sHEX, 5, 2))) _ & ")" End Function コード中でそのまま使いたいなら Function HEX2RGB(sHex As String) As Long sHEX = Mid(sHEX, 2) sHEX = String(6 - Len(sHEX), "0") & sHEX sHEX = "RGB(" & CStr(CByte("&H" & Mid(sHEX, 1, 2))) _ & "," & CStr(CByte("&H" & Mid(sHEX, 3, 2))) _ & "," & CStr(CByte("&H" & Mid(sHEX, 5, 2))) _ & ")" HEX2RGB = Eval(sHEX) End Function としておいて Me.詳細.BackColor = hex2rgb("#008000") で良さそうです。
お礼
ありがとうございます。
お礼
ありがとうございます。