• 締切済み

VBA オプションボタンの分類について

http://okweb.jp/kotaeru.php3?q=1424026 でオプションボタンの表示に関して質問をした者です。 ボタンを自動作成する事はできたのですが例えば1日と15日に 休暇を取得した場合、ボタンが6つ表示されるのですが(1日分が3コ、15日分が3コ)、 この6つのボタンのうち1つしか選択ができません。 (2つ目を選択すると、前に入力していたものはチェックが外れる。) 日にちごとに、1つずつボタンを選択するようにするにはどうしたら良いのでしょうか? ちなみに、当該処理の今記述しているソースは以下のとおりです。 休暇情報の書き出しが終了するまでループで回しています。 ご教授ください。宜しくお願い致します。 '当日ボタン作成 Set objOLEToday = ActiveSheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False, _ DisplayAsIcon:=False, Left:=565, Top:=100 + objCnt, Width:=45.5, Height:=15.5) objOLEToday.Object.Caption = "当日" '事前ボタン作成 Set objOLEBefore = ActiveSheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False, _ DisplayAsIcon:=False, Left:=750, Top:=100 + objCnt, Width:=45.5, Height:=15.5) objOLEBefore.Object.Caption = "事前" '無断ボタン作成 Set objOLENotice = ActiveSheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False, _ DisplayAsIcon:=False, Left:=920, Top:=100 + objCnt, Width:=45.5, Height:=15.5) objOLENotice.Object.Caption = "無断" '表示位置設定 objCnt = 405.4 + objCnt

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 前のご質問をそのまま受け継ぐわけではありませんが、下のマクロは、ActiveCellを中心に、右にセル1つずつ出させるものです。つまり、ActiveCell を中心にして三つをグループ化させています。 現在のコードでは、objCntというオプションで距離や位置を決めることが出来ません。グループ化を含めて、セルの距離に対して、一意のセルのアドレスを利用しました。なお、ラジオボタンの位置などは、サンプルを参考にして換えてください。 今は、ActiveCellというようになっていますが、セル自体でも可能です。 例: A3 の 次は、A6 ~C6 までというようにします。 Range("A3").Offset(2).Top Sub test()  Dim Ac As Range, SetRng As Range  Dim c As Variant, i as Integer  With ActiveSheet   Set Ac = ActiveCell '←ここが中心となります。   For Each c In Array("当日", "事前", "無断")    Set SetRng = Ac.Offset(0, i) 'セル1つ右に行く    'ボタン作成    With .OLEObjects.Add _     (ClassType:="Forms.OptionButton.1", _     Link:=False, DisplayAsIcon:=False, _       Left:=SetRng.Left, _       Top:=SetRng.Top, _       Width:=SetRng.Width * 0.8, _       Height:=SetRng.Height * 2)          .Object.Caption = c     .Object.GroupName = Ac.Address(0, 0)     i = i + 1     End With   Next c   End With    End Sub

すると、全ての回答が全文表示されます。

関連するQ&A