- 締切済み
マクロボタンをある条件の時にだけ、表示させたいのですが・・・
マクロボタンをある条件の時にだけ、表示させたいのですが・・・ 月末処理のマクロを作ったのですが、月末の日以外では、誰もボタンを押せないように表示しない様にしたい(ボタンを押してもマクロを実行しない方法でも良いです。) 初心者なので、簡単な方法があれば教えてください。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- mar00
- ベストアンサー率36% (158/430)
ユーザーフォームを使って、ボタンを押すとパスワードの 入力を促すようにしてはどうでしょうか。 パスワードは1111にしてあります。 Private Sub CommandButton1_Click() PASS = TextBox1 If PASS = 1111 Then Call lowrobasanさんが作成したマクロ Unload Me Else MsgBox "パスワードが違います。" TextBox1 = "" TextBox1.SetFocus Exit Sub End If End Sub Private Sub CommandButton2_Click() Unload Me End Sub
- hananoppo
- ベストアンサー率46% (109/235)
ANo.3です。 思ったのですが、指定日以外は実行不可にするのではなくて、月末日以外は確認メッセージで選択できるようにした方がいいのでは? その場合を参考までに記載します。マクロの先頭に次を追加してください。 If Day(Date + 1) <> 1 Then If MsgBox("今日は月末日ではないですが、実行しますか?", 4) = vbNo Then Exit Sub End If
- watabe007
- ベストアンサー率62% (476/760)
>ボタンを押してもマクロを実行しない方法でも良いです。 Sub Test2() Dim 月末 As Date '当月末日を算出 月末 = DateSerial(Year(Date), Month(Date) + 1, 0) '本日が最終営業日でなければExit If Date <> 月末 Then MsgBox "月末しか実行できません", 16 Exit Sub End If '<月末処理> End Sub 土日を除く最終営業日なら(祝日には対応していません) Sub Test2() Dim 月末 As Date '当月末日を算出 月末 = DateSerial(Year(Date), Month(Date) + 1, 0) If Weekday(月末) = 7 Then '月末が日曜なら2日前 月末 = 月末 - 2 ElseIf Weekday(月末) = 6 Then '月末が土曜日なら1日前 月末 = 月末 - 1 End If '本日が最終営業日でなければExit If Date <> 月末 Then MsgBox "月末しか実行できません", 16 Exit Sub End If '<月末処理> End Sub
お礼
ありがとうございます。 やってみます。
- hananoppo
- ベストアンサー率46% (109/235)
ボタンを押してもマクロが実行されないようにするには、マクロの先頭に次の行を追加します。 Select Case Month(Date) Case 1 If Day(Date) <> 31 Then Exit Sub Case 2 If Day(Date) <> 28 Then Exit Sub Case 3 If Day(Date) <> 31 Then Exit Sub Case 4 If Day(Date) <> 30 Then Exit Sub Case 5 If Day(Date) <> 31 Then Exit Sub Case 6 If Day(Date) <> 30 Then Exit Sub Case 7 If Day(Date) <> 31 Then Exit Sub Case 8 If Day(Date) <> 31 Then Exit Sub Case 9 If Day(Date) <> 30 Then Exit Sub Case 10 If Day(Date) <> 31 Then Exit Sub Case 11 If Day(Date) <> 30 Then Exit Sub Case 12 If Day(Date) <> 31 Then Exit Sub End Select 月末日が休日の場合は別の日になるでしょうから、実際の日付に修正してください。
お礼
さっそくの回答ありがとうございます。
- KURUMITO
- ベストアンサー率42% (1835/4283)
コマンドボタンを配置しておいても月末でなければマクロが作動しないようにする方法です。 コマンドボタンを右クリックしてマクロの記載画面を表示させ次のマクロを記載します。 Private Sub CommandButton1_Click() A = DateSerial(Year(Date), Month(Date) + 1, 1) - 1 If Date = A Then Call あなたが作成したマクロ End If End Sub
お礼
ありがとうございます。 表に関数で、=DATE(YEAR(日付けセル),MONTH(日付けセル),0)-DATE(YEAR(日付けセル),MONTH(日付けセル)+1,0)で、その月の日数をだして、当日のDAY(日付セル)が一致しなければ、「月末ではありません」と空いているセルに表示させているので、それを利用してできそうです。 やってみます。
- DIooggooID
- ベストアンサー率27% (1730/6405)
こちらのページを参考にしてみてください。 http://www.excel-vba.net/excel-userform-002.html
お礼
有難うございます。 じっくりと見てみます。
お礼
ありがとうございます。 MsgBox("月末ですか?") キャンセルで"月末に実行してください"と入れてあるのですが、 確認メッセージを読まない人(不特定多数)がいる可能性がありますので、実行できないようにしたいのです。