プロが教えるわが家の防犯対策術!

VBAで会社の勤務表を作成しました。
その勤務表には、「通常勤務」「有休」など日ごとに勤務状況フラグを立てるセルがあります。

この勤務表のシートにアクションボタンを追加して、ボタンを押下した際に、前述した勤務状況フラグを参照して
「休暇(年休・半休・等)」に該当するフラグがある場合には、「休暇届」を別のシートにして表示させるようにしました。
(ここまでは既にできあがっています。)

ここで質問です。
この「休暇届」作成のマクロの中で、その休暇がいつ申請されたものなのか(事前・当日・無断)を示すオプションボタン
(ラジオボタン)を休暇毎に作成したいと思います。
(「休暇届」にボタン表示箇所を指定して作成。)

希望は、
(1)実際の選択は、担当者がシートから直接入力させるようにしたい。
(2)1月に何回休暇を取得するかはわからないので、マクロ内でループをさせて、休暇情報が全てシートに
 書き出されるまで繰り返しボタン作成を行いたい。
の2点です。

わかりにくい質問かと思いますが、ご存知の方宜しくお願い致します。

A 回答 (1件)

「オプションボタンを動的に作成する方法が分からない」ということでいいでしょうか?



マクロの記録>オプションボタンをシートに作成>記録停止

とすればコードが吐き出されているはずですが。

↓こんな感じですね。

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 = "無断"

あとは位置をずらしながら事前・当日を作ればいいですよね。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!