「みんな教えて! 選手権!!」開催のお知らせ

下記のマクロを実行すると、
指定セル値がファイル名となり、保存され、マクロ設定ブックが、削除されます。
このマクロを下記の様に変更する方法を教えてください。
シート名「新料金算定表2024.05」の指定セル「AS2」に(確認)と表示された場合のみこのマクロが実行でき。
シート名「新料金算定表2024.05」の指定セル「AS2」に(確認)と表示されていない場合は、メッセージボックスで(料金表を確認後、保存してください)とメッセージが表示され、マクロを実行する事が出来ないように出来る方法を教えてください。
現状のマクロ
Sub 名前を付けて保存ファイル削除()

Dim alert As VbMsgBoxResult
alert = MsgBox("名前を付けて保存を行いますか?", vbYesNo + vbQuestion, "保存確認")
If alert <> vbYes Then
Exit Sub
End If
On Error Resume Next
Dim newName As String
newName = Sheets("受付・名簿・日付").Range("B54").Value
Dim ws As Worksheet
Dim TargetCheck As String
Dim List As Variant
Dim i As Long
Dim Chk As Boolean
For Each ws In Worksheets
Chk = False
If ws.Visible = False Then
For i = 0 To UBound(List)
If ws.Name = List(i) Then
Chk = True
Exit For
End If
Next i
If Chk = False Then
TargetCheck = TargetCheck & ws.Name & vbCrLf
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End If
End If
Next ws

Dim oldName As String
oldName = ThisWorkbook.Path & "\" & ThisWorkbook.Name

With ThisWorkbook
Application.DisplayAlerts = False
.SaveAs .Path & "\" & newName, xlOpenXMLWorkbookMacroEnabled
Application.DisplayAlerts = True
End With

Kill oldName

Application.ScreenUpdating = True
Application.Quit
With ThisWorkbook
.Saved = True
.Close False
End With
End Sub

以上です。宜しくお願い致します。

質問者からの補足コメント

  • つらい・・・

    どなたか、助けて頂けませんか、よろしくお願いいたします。

      補足日時:2024/10/24 12:18
  • うーん・・・

    回答ありがとうございます。
    他のマクロの場合は
    マクロコードの先頭に
    「Dim alert As VbMsgBoxResult
    alert = MsgBox("シート「1」の作業を行いますか?", vbYesNo + vbQuestion, "作業確認")
    If alert <> vbYes Then
    Exit Sub
    End If」
    を設定しており、
    このコードだと、メッセージが表示されて「Yes」をクリックすると
    コード以下のマクロが実行されます。
    このコードを利用して
    指定コード名「新料金算定表2024.05」の指定セル値「AS2」に(確認)を表示されていない場合に
    コード以下のマクロが実行されないように出来る方法が分かりません。
    メッセージについては("シート「1」の作業を行いますか?")の部分を変更すれば良いのかと思いますが・・
    よろしくお願いいたします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2024/10/24 15:48
  • 回答ありがとうございます。
    教えて頂いたコードを設定しまて
    マクロを実行しましたが、マクロが実行されませんでした、
    私の説明不足です、指定セルのAS2の(確認)はマクロを実行するシートとは別で
    シート名「新料金算定表2024.05」になります。
    指定シートを設定したコードを教えていただけますか。
    何度も申し訳ありません。
    よろしくお願いいたします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2024/10/24 16:29

A 回答 (2件)

分岐条件にMsgBoxを使わないんですよね。

でしたら、if-thenとMsgBoxは切り離して考える必要があります。
マクロを実行しない条件はAS2の値ですよね。だったら
If Range("AS2") <> "確認" Then
です。その場合にMsgBox出して終了なら、
MsgBox "料金表を確認後、保存してください"
Exit Sub
End If
です。
MsgBoxでどのボタンを押したか知る必要が無ければ
alert =
みたいなのは不要です。
この回答への補足あり
    • good
    • 0
この回答へのお礼

何とか自分で設定して、上手くできました。
色々とありがとうございました。

お礼日時:2024/10/24 16:34

何がわからないのか書いてほしいです。

条件分岐(If … Then)のやり方なのか、メッセージボックスの使い方なのか。そして、たいていのことはWeb検索すればわかるので、それを見た上で理解できないところを質問しましょう。
この回答への補足あり
    • good
    • 0

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

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


おすすめ情報

このQ&Aを見た人がよく見るQ&A