« ダブルクォーテーションをシングルクォーテーションに置換する | トップページ | 色の表示形式の変換 2 »

2010年1月23日 (土)

色の表示形式の変換 1

色の表示形式

長整数型(Long)
RGB
16進数

以上3つをそれぞれ変換してみる。
今回は、RGB と 長整数型(Long)

・RGB => 長整数型(Long)

おなじみRGB関数を使う。

RGB => 長整数型(Long)コード:

Sub macro100123a()
'RGB => 長整数型(Long)
'わざわざInputする必要もないですが…
    Dim r, g, b As String
    r = InputBox("色の表示形式変換:RGB => 長整数型(Long)" _
        & Chr(10) & "Redの値を入力してください。")
    g = InputBox("色の表示形式変換:RGB => 長整数型(Long)" _
        & Chr(10) & "Greenの値を入力してください。")
    b = InputBox("色の表示形式変換:RGB => 長整数型(Long)" _
        & Chr(10) & "Blueの値を入力してください。")
    On Error GoTo ErrHandle
    If r <> "" And b <> "" And g <> "" Then
        If Int(r) > -1 And Int(r) < 256 Then
            If Int(g) > -1 And Int(g) < 256 Then
                If Int(b) > -1 And Int(b) < 256 Then
                    MsgBox "RGB(" & Int(r) & ", " & _
                        Int(g) & ", " & Int(b) & ") = " & RGB(r, g, b)
                    Exit Sub
                End If
            End If
        End If
    End If
    On Error GoTo 0
    MsgBox "0から255までの数字を入力してください。" & _
        Chr(10) & "終了します。"
Exit Sub
ErrHandle:
    MsgBox Err.Description
End Sub

入力は
Pic20100123a_2
Pic20100123b
Pic20100123c

結果例は
Pic20100123d

簡単なエラートラップ付いてます。
0から255以外の数字を入力すると

Pic20100123e

小数はInt関数を使う時に四捨五入されます。

数字以外を入力すると
Pic20100123f

・長整数型(Long) => RGB

RGB関数の各引数の
Red, Green, Blueを
1から255まで順に確かめていく。

長整数型(Long) => RGBコード:

Sub macro100123b()
'長整数型(Long) => RGB

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

    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
                    StrRGB = "RGB(" & r & ", " & g & ", " & b & ")"
                    Exit Function
                End If
            Next b
        Next g
    Next r
    StrRGB = "RGBを求められませんでした。"
End Function

入力は
Pic20100123g

結果は
Pic20100123h

エラートラップは前のやつと同等です。
小数はLong型に入れられるときに
まるめられるようです。

|

« ダブルクォーテーションをシングルクォーテーションに置換する | トップページ | 色の表示形式の変換 2 »

コメント

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

トラックバック


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

« ダブルクォーテーションをシングルクォーテーションに置換する | トップページ | 色の表示形式の変換 2 »