2009年06月23日

RGBのHex並びが逆

VBA では、色を16進数で指定する場合、
    &H BB GG RR &
の並びで記述します。

青 : &HFF0000& , 赤 : &H0000FF&



OOo.Basic では、
    &H RR GG BB &
という風に並びが逆になります(WEB での指定と同じ並び)。

青 : &H0000FF& , 赤 : &HFF0000&


VBA のコードをOOo.Basic へ移植する場合には、
色の定数値を修正してください。


(2010/9/25 追記)
色は16進数表記の他に RGB関数 でも指定できます。
0〜255の値を赤・緑・青の順でカンマで区切って指定すると
OOo の仕様通りに下段の16進値を作り出します。

青 : RGB(0, 0, 255) , 赤 : RGB(255, 0, 0)
          ↓                              ↓
      &H0000FF&              &HFF0000&


このRGB関数ですが、VBA互換モード( Option VBASupport 1 )で
使用すると、思わぬ弊害が出てしまいますので注意が必要です。

VBAでは前述のように16進値の並びが OOo とは逆です。

その為、VBA互換モードで RGB関数を使用すると、RGB関数は VBA
の16進並び( &HBBGGRR& )で値を返すようになります。

〜 VBA互換モード時( Option VBASupport 1 ) 〜
青 : RGB(0, 0, 255) , 赤 : RGB(255, 0, 0)
          ↓                              ↓
      &HFF0000&              &H0000FF&

しかし、VBA互換モードであっても、
      セルやダイアログ等が16進値を解釈する色並びは
      OOo の仕様である [ &HRRGGBB& ]
のままで変わりません。

その結果、VBA互換モードでRGB関数による色設定を行なうと、セルや
ダイアログ等で表示される結果(色)は期待した色とは[赤⇔青]反転した
ものとなります。

〜 VBA互換モード時( Option VBASupport 1 ) 〜
青         : RGB(0, 0, 255) , 赤 : RGB(255, 0, 0)
                  ↓                              ↓
算出値      &HFF0000&              &H0000FF&
                  ↓                              ↓
              &HFF0000&              &H0000FF&
表示結果   (と解釈される)           (と解釈される)


したがって、VBA互換モードを使用する場合には、RGB関数で
    記載されている部分は全て
        【OOo仕様による16進並び( &HRRGGBB& )表記】
    へ修正する必要があります。

参考: OOo faq/6/23 フォントカラー不具合


お役に立ちましたら拍手して貰えると嬉しいです

addinbox at 21:25コメント(0)マクロ・関数  

コメントする

名前
 
  絵文字
 
 
記事検索
プロフィール

角田(つのだ)




  • ライブドアブログ