« 色の表示形式の変換 2 | トップページ | 井領 邦弘 (著):株解析チャートから自動発注ロボットまで!Excel VBAで極 »

2010年1月25日 (月)

色の表示形式の変換 3

色の表示形式のまとめです。

色の表示形式

長整数型(Long)
RGB
16進数

以上3つをそれぞれ変換してみる。
今回は、16進数と長整数型の変換について

・16進数 => 長整数型

まず16進数をRGBに変換してから
RGB関数で長整数型に変換する。
つまり
16進数 (=> RGB) => 長整数型

16進数をRGBに変換する方法については
こちらの記事を参照してください。
色の表示形式の変換 2

RGBを長整数型に変換する方法については
こちらの記事を参照してください。
色の表示形式の変換 1

16進数 => 長整数型コード:

Sub macro100125a()
'16進数 => 長整数型

    Dim StrHexColor As String
    On Error GoTo ErrHandle
    StrHexColor = InputBox("色の表示形式変換:16進数 => 長整数型" _
        & Chr(10) & "#以下を入力してください。")
    On Error GoTo 0

    MsgBox "#" & StrHexColor & " = " & _
        HexColortoLng(StrHexColor)
   
Exit Sub
ErrHandle:
    MsgBox Err.Description
End Sub
Function HexColortoLng(StrHexColor As String)
    If Len(StrHexColor) <> 6 Then
        GoTo ErrHandle
    Else
        Dim i As Integer
        For i = 1 To 6
            If Val("&H" & Mid(StrHexColor, i, 1)) = 0 And _
                Mid(StrHexColor, i, 1) <> 0 Then
                GoTo ErrHandle
            End If
        Next i
    End If
       
    Dim r, g, b As Variant
    r = Val("&H" & Left(StrHexColor, 2))
    g = Val("&H" & Mid(StrHexColor, 3, 2))
    b = Val("&H" & Right(StrHexColor, 2))
    HexColortoLng = RGB(r, g, b)
Exit Function
ErrHandle:
    HexColortoLng = "適切な値を入力してください。"
End Function

入力は
Pic20100125a

結果例は
Pic20100125b

適切でない値を入力すると
Pic20100125c

結果は
Pic20100125d

適切である値の判断条件は

入力された値が6文字
かつ
各1文字が0からFまでの値であること

にしました。

・長整数型 => 16進数

上と同様RGBを経由する。
つまり
長整数型(Long) (=> RGB) => 16進数

前述2つの記事を参照してください。

長整数型 => 16進数コード:

Sub macro100125b()
'長整数型 => 16進数

    Dim LngColor As Long
    On Error GoTo ErrHandle
    LngColor = InputBox("色の表示形式変換:長整数型 => 16進数" _
        & Chr(10) & "長整数型を入力してください。")
    On Error GoTo 0
   
    MsgBox LngtoHexColor(LngColor)
   
Exit Sub
ErrHandle:
    MsgBox Err.Description
End Sub
Function LngtoHexColor(LngColor As Long)

    Dim r, g, b As Integer
    For r = 0 To 255
        For g = 0 To 255
            For b = 0 To 255
                If LngColor = RGB(r, g, b) Then
                    LngtoHexColor = RGBtoHexColor(Int(r), Int(g), Int(b))
                    Exit Function
                End If
            Next b
        Next g
    Next r
    LngtoHexColor = "求められませんでした。"
End Function

入力は
Pic20100125e

結果例は
Pic20100125f

xt/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 

|

« 色の表示形式の変換 2 | トップページ | 井領 邦弘 (著):株解析チャートから自動発注ロボットまで!Excel VBAで極 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 色の表示形式の変換 3:

« 色の表示形式の変換 2 | トップページ | 井領 邦弘 (著):株解析チャートから自動発注ロボットまで!Excel VBAで極 »