#436 | オプショングループ内に31ケのトグルボタンを一気に作る方法 | フォーム、VBA | |
「#435 複数のコマンドボタンを一気に作る方法」の応用例です。 ここでは、あらかじめフォームに配置されているオプショングループの中に31ケのトグルボタンを一気に作る方法を紹介します。 マニュアルの操作でオプショングループコントロールの中にトグルボタンを配置する場合、ツールボックスで「トグルボタン」を選択したあと、マウスをオプショングループコントロール上に移動して、オプショングループコントロール全体が反転表示になったところでマウスをクリックする必要があります。それによってそのトグルボタンがオプショングループの「子コントロール」として認識されます。 このように、親子関係を持たせてコントロールを配置するには、CreateControlメソッドにおいて、4つめの引数にその「親コントロール」の名前を指定します。 CreateControl(フォーム名, コントロールの種類, セクション, 親コントロール) 次のサンプルコードでは、「フォーム1」にすでに配置されている「フレーム0」という名前のオプショングループコントロールの中に、31ケのトグルボタンを一気に自動生成しています。カレンダの画面を想定して、1日〜31日のボタンを、1行当り7ケという位置関係で配置しています。 まず「フォーム1」を新規作成し(その名前で保存されている必要はありません)、”デザインビュー”の状態にしておきます。「フレーム0」をいうオプショングループを配置した上で、標準モジュールから次のプロシージャを実行します。 Public Sub CreateToggle() Dim Tgl As ToggleButton Dim intDayLoop As Integer Dim intColNum As Integer Dim intRowNum As Integer intColNum = 1 '配置する列位置を設定 intRowNum = 1 '配置する行位置を設定 For intDayLoop = 1 To 31 'トグルボタンを生成 Set Tgl = CreateControl("フォーム1", acToggleButton, , "フレーム0") With Tgl '標題を設定 .Caption = intDayLoop & "日" 'オプション値を設定 .OptionValue = intDayLoop '左位置を設定(1cm間隔で配置) .Left = intColNum * 567 '上位置を設定(1cm間隔で配置) .Top = intRowNum * 567 '幅と高さを指定(ともに1cm) .Width = 567 .Height = 567 End With '列位置をインクリメント intColNum = intColNum + 1 '7ケごとに行位置をインクリメント If intDayLoop Mod 7 = 0 Then intRowNum = intRowNum + 1 intColNum = 1 End If Next intDayLoop End Sub オプショングループだけ配置されたフォームのデザイン プロシージャ実行後のフォームのデザイン ※コントロールの位置や高さ・幅は、コントロールを生成したあとから設定してもかまいませんが、CreateControlメソッドの引数として指定することもできます。 CreateControl(フォーム名, コントロールの種類, セクション, 親コントロール, 連結フィールド名, 左位置, 上位置, 幅, 高さ) |
|||
|
Copyright © T'sWare All rights reserved |