- 締切済み
VBA オプションボタンを自動作成するには?
VBAで会社の勤務表を作成しました。 その勤務表には、「通常勤務」「有休」など日ごとに勤務状況フラグを立てるセルがあります。 この勤務表のシートにアクションボタンを追加して、ボタンを押下した際に、前述した勤務状況フラグを参照して 「休暇(年休・半休・等)」に該当するフラグがある場合には、「休暇届」を別のシートにして表示させるようにしました。 (ここまでは既にできあがっています。) ここで質問です。 この「休暇届」作成のマクロの中で、その休暇がいつ申請されたものなのか(事前・当日・無断)を示すオプションボタン (ラジオボタン)を休暇毎に作成したいと思います。 (「休暇届」にボタン表示箇所を指定して作成。) 希望は、 (1)実際の選択は、担当者がシートから直接入力させるようにしたい。 (2)1月に何回休暇を取得するかはわからないので、マクロ内でループをさせて、休暇情報が全てシートに 書き出されるまで繰り返しボタン作成を行いたい。 の2点です。 わかりにくい質問かと思いますが、ご存知の方宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- piyo2000
- ベストアンサー率49% (144/293)
「オプションボタンを動的に作成する方法が分からない」ということでいいでしょうか? マクロの記録>オプションボタンをシートに作成>記録停止 とすればコードが吐き出されているはずですが。 ↓こんな感じですね。 ActiveSheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False, _ DisplayAsIcon:=False, Left:=119.25, Top:=58.5, Width:=127.5, Height:= _ 67.5).Select ActiveSheetは休暇届のシートを指定してやれば(例:Sheets("休暇届"))いいわけですし、あとは位置とサイズ、そしてCaptionを指定してやればいいだけです。 こんな感じで。 Dim objOLE As OLEObject Set objOLE = ActiveSheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False, _ DisplayAsIcon:=False, Left:=119.25, Top:=58.5, Width:=127.5, Height:= _ 67.5) objOLE.Object.Caption = "無断" あとは位置をずらしながら事前・当日を作ればいいですよね。