ラジオボタンなどのActiveXのオブジェクトを整列させる | カメレオンのVBA

カメレオンのVBA

VBAの私的メモ書き

イベントプロシージャなどとあわせて用いることで、
ActiveXのオブジェクトを自動的に整列させたり、
表示文字を随時変更することができる。
この例では
 ラジオボタン

 四行
ずつ整列させるものとする。


<サンプル>

    '******定数の宣言*****
    Const a As Integer = 4          'ラジオボタンの行数
    Const myLeft As Integer = 330   '並び始めの位置(左)
    Const myTop As Integer = 25     '並び始めの位置(上)
    Const myHei As Integer = 20     '高さ
    Const myWid As Integer = 135    '幅
    Const amariWid As Integer = 20  'オブジェクトとオブジェクトの横の間隔
    Const amariTop As Integer = 2   'オブジェクトとオブジェクトの縦の間隔

    '*****変数の宣言*****

    Dim obj As OLEObject
    '取得しているラジオボタンの・・・

    Dim i As Long  '番号
    Dim b As Long  '列数
    Dim c As Long  '行数
   
    '*****ラジオボタンに表示する文字を配列myValに格納する*****

    'この例では「値格納」シートのセルA1より行方向へ値が記されているとする
    Sheets("値格納").Activate
    myVal = Range("A1").CurrentRegion.Value
   
    '*****処理開始*****
    'この例では「メイン」シートにラジオボタンが配置されているとする
    Sheets("メイン").Activate
    i = 2
    For Each obj In ActiveSheet.OLEObjects
        b = Int((i / 2) / a) '列数
        c = i - 2 - 4 * b
       
        With obj
            'ラジオボタンの・・・
            '大きさ

            .Height = myHei
            .Width = myWid
            '配置位置
            .Left = myLeft + myWid * b + amariWid
            .Top = myTop + myHei * c + amariTop
           
            With .Object
                .Caption = myVal(i, 1)  '表示
                .FontWeight = 400       'フォントの太さ
                .FontSize = 11          'フォントサイズ
                .AutoSize = False       'サイズの自動調整を行わない
            End With
        End With
        i = i + 1
    Next