• 締切済み

マクロボタンをある条件の時にだけ、表示させたいのですが・・・

マクロボタンをある条件の時にだけ、表示させたいのですが・・・ 月末処理のマクロを作ったのですが、月末の日以外では、誰もボタンを押せないように表示しない様にしたい(ボタンを押してもマクロを実行しない方法でも良いです。) 初心者なので、簡単な方法があれば教えてください。

みんなの回答

  • mar00
  • ベストアンサー率36% (158/430)
回答No.6

ユーザーフォームを使って、ボタンを押すとパスワードの 入力を促すようにしてはどうでしょうか。 パスワードは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)
回答No.5

ANo.3です。 思ったのですが、指定日以外は実行不可にするのではなくて、月末日以外は確認メッセージで選択できるようにした方がいいのでは? その場合を参考までに記載します。マクロの先頭に次を追加してください。 If Day(Date + 1) <> 1 Then If MsgBox("今日は月末日ではないですが、実行しますか?", 4) = vbNo Then Exit Sub End If

lowrobasan
質問者

お礼

ありがとうございます。 MsgBox("月末ですか?") キャンセルで"月末に実行してください"と入れてあるのですが、 確認メッセージを読まない人(不特定多数)がいる可能性がありますので、実行できないようにしたいのです。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

>ボタンを押してもマクロを実行しない方法でも良いです。 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

lowrobasan
質問者

お礼

ありがとうございます。 やってみます。

  • hananoppo
  • ベストアンサー率46% (109/235)
回答No.3

ボタンを押してもマクロが実行されないようにするには、マクロの先頭に次の行を追加します。 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 月末日が休日の場合は別の日になるでしょうから、実際の日付に修正してください。

lowrobasan
質問者

お礼

さっそくの回答ありがとうございます。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

コマンドボタンを配置しておいても月末でなければマクロが作動しないようにする方法です。 コマンドボタンを右クリックしてマクロの記載画面を表示させ次のマクロを記載します。 Private Sub CommandButton1_Click() A = DateSerial(Year(Date), Month(Date) + 1, 1) - 1 If Date = A Then Call あなたが作成したマクロ End If End Sub

lowrobasan
質問者

お礼

ありがとうございます。 表に関数で、=DATE(YEAR(日付けセル),MONTH(日付けセル),0)-DATE(YEAR(日付けセル),MONTH(日付けセル)+1,0)で、その月の日数をだして、当日のDAY(日付セル)が一致しなければ、「月末ではありません」と空いているセルに表示させているので、それを利用してできそうです。 やってみます。

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

こちらのページを参考にしてみてください。 http://www.excel-vba.net/excel-userform-002.html

参考URL:
http://www.excel-vba.net/excel-userform-002.html
lowrobasan
質問者

お礼

有難うございます。 じっくりと見てみます。

関連するQ&A