カスタマイズする


あんなプロパティが欲しい。
こんなメソッドがあればいいのに。
クリックしたときに、なにかやらせたい。(イベント(※)をつくりたい。)
と思った人はclsColorbuttonクラスのモジュールに直接プロパティ、メソッドやイベント(※)を追加しましょう。
※:Macではイベントは作れません。Mac、Windowsともに動作するマクロを作りたい場合は注意して下さい。
え?継承するのが普通のやり方じゃないかって?それってVBAで出来たんだっけ?

1、プロパティを追加する。
2、メソッドを追加する。
3、イベントを追加する。



1、プロパティを追加する。

Visibleプロパティの追加を例に説明します。
追加するプロパティの説明:Trueにすると表示され、Falseにするとカラーボタンが画面から見えなくなる。
追加方法:
  1. VBE(VisualBasicEditor)の[挿入]-[プロシージャ]を選択します。ダイアログが出たら、[名前]に "Visible"を、[種類]には"Propertyプロシージャ"を選択して[OK]ボタンを押します。これで、Visibleプロパティのプロパ ティプロシージャのひな形が自動生成されます。
    ※1:自分で入力しても良いです。
    ※2:プロパティの型はVariant型からBooleanに直して下さい。

  2. 以下のようにコードを入力します。
  3. Public Property Get Visible() As Boolean
        Visible = lblColorButton.Visible
    End Property

    Public Property Let Visible(ByVal vNewValue As Boolean)
        lblColorButton.Visible = vNewValue
        lblColorButtonEffect.Visible = vNewValue
    End Property


  4. Addメソッドの引数にVisibleプロパティを追加するには以下のように赤色の文字を追加します。
  5. Public Sub Add(ByVal ContainerClassObject As Object, _
        Optional ByVal Left As Single = 0, _
        Optional ByVal Top As Single = 0, _
        Optional ByVal Height As Single = 21, _
        Optional ByVal Width As Single = 21, _
        Optional ByRef Caption As String = "", _
        Optional ByVal ColorIndex As Long = 0, _
        Optional ByVal Value As Boolean = False, _
        Optional ByRef ControlTipText As String = "", _
        Optional ByRef Locked As Boolean = False, _
        Optional ByVal Visible As Boolean = True
    )



        ' 引数で指定された値を代入
        '(これにより、各プロパティのPropertyLetプロシージャが呼び出されます)

        With Me
            .Caption = Caption
            .ColorIndex = ColorIndex
            .Value = Value
            .ControlTipText = ControlTipText
            .Locked = Locked
            .Visible = Visible
        End With
このページのトップへ



2、メソッドを追加する。

ZOrderメソッドを例に説明します。
追加するメソッドの説明:カラーボタンのZオーダーを変更する。(最前面へ移動、最背面へ移動を行う。)
追加方法:以下のコードを追加します。
Public Sub ZOrder(ByVal zPosition As Long)
    Select Case zPosition
        Case fmZOrderFront
            Call lblColorButtonEffect.ZOrder(zPosition)
            Call lblColorButton.ZOrder(zPosition)
        Case fmZOrderBack
            Call lblColorButton.ZOrder(zPosition)
            Call lblColorButtonEffect.ZOrder(zPosition)
        Case Else
            Call Err.Raise(380, , "ZOrderプロパティをセットできません。" _
                                & "プロパティの値が無効です" _
                                & "0から1までの値を入力してください。")
    End Select
End Sub
このページのトップへ



3、イベントを追加する。

注意:何回も書いていますが、Macではイベントの追加はできません。(Eventステートメントが ない。)
Clickイベントを例に説明します。
追加方法:以下の赤文字のコードを追加します。
Option Explicit '暗黙の型宣言の禁止

Private WithEvents lblColorButton As msforms.Label
Private WithEvents lblColorButtonEffect As msforms.Label
Public Event Click()
:
:
:
Private Sub lblColorButton_Click()
    RaiseEvent Click
    With Me
        If Not .Locked Then
            .Value = Not .Value
        End If
    End With
End Sub

イベントを使用したい場合、Userform側やクラスモジュールのモジュールレベルでclsColorButtonクラスの変数宣言をする際は WithEventsをつけます。
このページのトップへ