ktPaletteColorEX

カラーパレットフォームを表示するサブルーチンです。

【 構 文 】

Call  ktPaletteColorEX( PaletteEXData, [PaletteEXBook]  )

PaletteEXData ‥‥‥ kt_PaletteEXType 型(ユーザー定義) (ByRef)
PaletteEXBook ‥‥‥ String 型    (省略可、 省略時: "Active" )

引数[PaletteEXData]は、利用者側で下記のような『変数定義』が必要です。
        Dim PaltteEXData  As  kt_PaletteEXType

    ユーザー定義型[kt_PaletteEXType]は、[kt関数Addin.xla]内で下記のように定義されています。
    (参照設定すれば利用できます)

Public  Type  kt_PaletteEXType
  ClipBoard  As  Boolean ' カラー選択時のクリップボードへのコピー有無
  SelectRGB  As  Boolean ' RGB選択画面の展開有無
  Flg  As  String ' Call時: 空 / "Init" / "Book" / "UnLoad"
' Return時: "Get" / "Cancel"
  ColorIndex  As  Integer ' 1〜56,RGB画面展開時は[99]固定
  ColorLong  As  Long ' 0 〜 16777215
  ColorHex  As  String ' BBGGRR 形式(6桁固定)
  ColorB  As  Integer ' 青: 0 〜 255
  ColorG  As  Integer ' 緑: 0 〜 255
  ColorR  As  Integer ' 赤: 0 〜 255
End  Type


【 パラメータ 内容 】

ClipBoard ‥‥ カラー決定時に、そのカラーの16進("&Hbbggrr")をクリップボードにコピーするかどうかを指定します。
    True : コピーする , False : コピーしない
SelectRGB ‥‥ RGB画面の展開可否を指定します。
セルに指定するカラーを取得する場合は[ False ]にしてパレットカラー以外の選択を不可にしてください。
    True : RGB指定可 , False : パレットカラーのみ可
Flg ‥‥ ユーザーがカラーを選択したのか、キャンセルしたのかという情報が返る項目です。
    "Get" : カラーを選択 , "Cancel" : キャンセル

 初回Call時には、この項目に "Init" を設定してください。

  「カラーパレットEX」はHideモードでフォームを閉じますので、呼び元のマクロが終了する直前には、この項目に "UnLoad" を設定してCall してください(使用例参照)。

  それ以外の時では、返ってきた "Get"/"Cancel" のままでCall して結構です。わざわざ「""」にクリアする必要はありません。
  カラーパレットを取り込むブックを途中で切り換える場合は "Book" を設定してからCallします。
ColorIndex ‥‥ カラーを選択した場合は下記の値が返ります。
    RGB画面を展開時‥‥‥[ 99 ]固定
    パレット画面のみ  ‥‥‥[ 1〜56 ]のカラーインデックス番号
キャンセルした場合は[ゼロ]が返ります。
ColorLong ‥‥ カラーを選択した場合は、そのカラーを10進数で表現した
    [ 0 〜 16777215 ]
の値が返ります。キャンセル時は[ゼロ]が返ります。
ColorHex ‥‥ カラーを選択した場合は、そのカラーを16進数で表現( BBGGRR 並び )した6桁の文字列が返ります。先頭に[ "&H" ]は付いていませんので、必要な場合はマクロ側で付加して下さい。
キャンセル時は空文字が返ります。
ColorB,G,R ‥‥ カラーを選択した場合は、そのカラーの「青/緑/赤」属性を10進数で表現した
    [ 0 〜 255 ]
の数値が返ります。キャンセル時はゼロが返ります。

PaletteEXBook

‥‥

パレットを取得するブック名を指定します。
ここに指定するブックは、オープンされている必要があります。
省略、またはオープンされていないブックを指定した場合は「kt関数Addin.xla 」が適用されます(標準パレット)。

ActiveWorkbookのパレットを利用する場合は定数で"Active"と指定。
ActiveWorkbook以外のパレットを利用する場合は、そのブックの「Name プロパティ」の内容を指定します("Book1.xls" など定数で指定しても良いし、「Name プロパティ」自体を記述しても良いです)。

【 解 説 】

パレットカラー以外の色をセルに設定する事はできませんので、セルに指定するカラー
    (Font.Color / Interior.Color)を取得する為に利用する場合は「SelectRGB=False 」と
    して、右側のRGB画面が出ないようにしてください。
 
カラーパレットフォームの操作方法は「§5-8 kt関数メニュー : カラーパレットEX」参照


【 使 用 例 】

============== UserForm での利用例 ==================================
Private ColorData As kt_PaletteEXType    '宣言セクションで定義

Private Sub UserForm_Initialize()
    ColorData.ClipBoard = False    ' 16進文字のクリップボードコピー無し
    ColorData.SelectRGB = True     ' RGB画面の展開有り
    ColorData.Flg = "Init"
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If (ColorData.Flg <> "Init") Then
        '一度でも呼び出されていたら[Load]状態のままなので最後に[UnLoad]する
        ColorData.Flg = "UnLoad"
        Call ktPaletteColorEX(ColorData, ThisWorkbook.Name)
    End If
End Sub

Private Sub Label1_Click()
    Call ktPaletteColorEX(ColorData, ThisWorkbook.Name)
    '[色]を選択(Get)した場合のみ設定する
    If (ColorData.Flg = "Get") Then
        Label1.BackColor = ColorData.ColorLong
    End If
End Sub


======== シート上のコマンドボタンでセル背景色変更の例 =========
※セルにはパレットの56色しか使えないのでRGB展開はしない


'---------------[標準モジュール]-----------------------
Public ColorData As kt_PaletteEXType

'---------------[ThisWorkbook モジュール]--------------
Private Sub Workbook_Open()
    ColorData.ClipBoard = False    ' 16進文字のクリップボードコピー無し
    ColorData.SelectRGB = False    ' RGB画面の展開無し
    ColorData.Flg = "Init"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If (ColorData.Flg <> "Init") Then
        '一度でも呼び出されていたら[Load]状態のままなので最後に[UnLoad]する
        ColorData.Flg = "UnLoad"
        Call ktPaletteColorEX(ColorData, ThisWorkbook.Name)
        '別名保存後に元ブックを保存する時に、既にUnLoad済のところへ
        '再びUnLoad指示を出さないようにする為の配慮
        ColorData.Flg = "Init"
    End If
End Sub

'--------------[シートモジュール]---------------------
Private Sub CommandButton1_Click()
    Call ktPaletteColorEX(ColorData, ThisWorkbook.Name)
    '[色]を選択(Get)した場合のみ設定する
    If (ColorData.Flg = "Get") Then
        ActiveCell.Interior.Color = ColorData.ColorLong
    End If
End Sub


============ デモマクロ =======================

Public Sub ktPaletteEXDemo()
Dim ColorData As kt_PaletteEXType
Dim MsgResp As Integer
    ColorData.ClipBoard = True    ' 16進文字のクリップボードコピー有り
    ColorData.SelectRGB = True    ' RGB画面の展開有り
    ColorData.Flg = "Init"
Palette1:
    Call ktPaletteColorEX(ColorData, ThisWorkbook.Name)
    If (ColorData.Flg = "Cancel") Then
        MsgResp = MsgBox "【カラーパレットEX デモ】" & vbCrLf _
                       & "キャンセルされました" & vbCrLf _
                       & "繰り返しますか?", vbYesNo + vbInformation
    Else
        MsgResp = MsgBox "【カラーパレットEX デモ】" & vbCrLf _
                       & "受け取ったカラー情報は下記の通りです" & vbCrLf & vbCrLf _
                       & "(No) = " & ColorData.ColorIndex & vbCrLf _
                       & "16進 = 0x" & ColorData.ColorHex & "(BBGGRR)" & vbCrLf _
                       & "10進 = " & Format(ColorData.ColorLong, "#,##0") & vbCrLf _
                       & "(青) = " & ColorData.ColorB & vbCrLf _
                       & "(緑) = " & ColorData.ColorG & vbCrLf _
                       & "(赤) = " & ColorData.ColorR & vbCrLf _
                       & vbCrLf & "繰り返しますか?", vbYesNo + vbInformation
    End If
    If (MsgResp = vbYes) Then
        GoTo Palette1
    Else
        ColorData.Flg = "UnLoad"
        Call ktPaletteColorEX(ColorData, ThisWorkbook.Name)
    End If
End Sub



Home  kt関数 Top  kt関数 Ref  Back Page  Next Page


角田 桂一 Mail:addinbox@h4.dion.ne.jp CopyRight(C) 2001 Allrights Reserved.