プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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
「マクロボタンをある条件の時にだけ、表示さ」の回答画像6
    • good
    • 0

ANo.3です。


思ったのですが、指定日以外は実行不可にするのではなくて、月末日以外は確認メッセージで選択できるようにした方がいいのでは?
その場合を参考までに記載します。マクロの先頭に次を追加してください。

If Day(Date + 1) <> 1 Then
If MsgBox("今日は月末日ではないですが、実行しますか?", 4) = vbNo Then Exit Sub
End If
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/07/28 15:09

>ボタンを押してもマクロを実行しない方法でも良いです。


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
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/07/28 15:28

ボタンを押してもマクロが実行されないようにするには、マクロの先頭に次の行を追加します。



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

月末日が休日の場合は別の日になるでしょうから、実際の日付に修正してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/07/28 13:01

コマンドボタンを配置しておいても月末でなければマクロが作動しないようにする方法です。



コマンドボタンを右クリックしてマクロの記載画面を表示させ次のマクロを記載します。

Private Sub CommandButton1_Click()
A = DateSerial(Year(Date), Month(Date) + 1, 1) - 1
If Date = A Then
Call あなたが作成したマクロ
End If
End Sub
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/07/28 13:49

こちらのページを参考にしてみてください。



http://www.excel-vba.net/excel-userform-002.html

参考URL:http://www.excel-vba.net/excel-userform-002.html
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/07/28 13:07

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

このQ&Aを見た人はこんなQ&Aも見ています