アプリ版:「スタンプのみでお礼する」機能のリリースについて

以前教えて頂いたコード
Private Sub Workbook_Open()
Dim cellDate As Range
Dim Rng As Range
Set Rng = Worksheets("300").Range("D37,E37,D39,E39")
Dim strMsg As String
strMsg = ""

For Each cellDate In Rng
If Not IsDate(cellDate) Then strMsg = strMsg & cellDate.AddressLocal(0, 0)
Next
If strMsg <> "" Then MsgBox strMsg & " のセル日付を確認してください": Exit Sub

With Worksheets("300")
If chkPeriod(.Range("D37"), .Range("E37")) Then
MsgBox ("「行政報告先」の変更時期です、担当者は更新をし、ひな形の保存をお願いします。"), 48
Exit Sub
End If
If chkPeriod(.Range("D39"), .Range("E39")) Then
MsgBox ("「各行政条例」「べんり帳」の更新時期です、各担当者は更新をし、ひな形の保存をお願いします。"), 48
Exit Sub
End If
End With
End Sub
'例によってファンクションで
Function chkPeriod(fromDate As Date, toDate As Date) As Boolean
Dim chkResult As Boolean: chkResult = False
If Date >= fromDate And Date <= toDate Then
chkResult = True
End If
chkPeriod = chkResult
End Function
があります。
このコードは作業ブックを立ち上げたタイミングでそれぞれの指定日付範囲内であれば「警告文」を表示できます。
このコードを下記の条件を反映できる方法を教えてください。
1.「警告文-2」のみを表示させて「警告文-1」は削除
2.この作業ブックはマクロ有効テンプレート形式「.xltm」で使用しており、次の作業に移行し、ファイルをマクロ有効形式「.xlsm」又は一般の「.xlsx」で保存しながら使用していきますので、
このコードはマクロ有効テンプレート形式「.xltm」のみでの表示
以上となります。
よろしくお願いいたします。

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

  • うーん・・・

    回答ありがとうございます。
    又、私の文章に不備があったにも関わらず、教えて頂きましてありがとうございました。
    記者のコードを設定しましたが
    マクロ有効テンプレート形式「xltm」の場合でも
    マクロ有効ブック形式「xlsm」の場合でもどちらでも警告文が表示されませんでした。
    希望はマクロ有効テンプレート形式「xltm」の場合のみの表示です。
    D39に2023/1/18 E39に2023/1/23 と設定しております。
    解決方法を教えてください。
    よろしくお願いします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2023/01/20 13:26
  • うれしい

    いつも親切にありがとうございます、上手行きました。
    もう一つ教えて頂けますか、「xlsm」以外に
    一般の「"xlsx" 」保存形式でも実行しないようにするにはどのようにしたら良いでしょうか、
    よろしくお願いします。

    No.3の回答に寄せられた補足コメントです。 補足日時:2023/01/20 13:55

A 回答 (4件)

>一般の「"xlsx" 」保存形式でも実行しないようにするにはどのようにしたら良いでしょうか、



マクロは保存できない形式なのでコード自体を排除されると思いますよ
    • good
    • 0
この回答へのお礼

いつも親切にありがとうございます。
理解出来ました。

お礼日時:2023/01/20 14:28

これは失礼しました


テンプレート形式でしたね・・開いた時拡張子は決まっていませんでした
xlsmで実行しないに変えました

Private Sub Workbook_Open()
Dim tmp, dNow
tmp = Split(ThisWorkbook.Name, ".")
If Split(ThisWorkbook.Name, ".")(UBound(tmp)) <> "xlsm" Then
dNow = Format(Now, "yyyy/mm/dd")
With Worksheets("指定シート")
If dNow >= Format(.Range("D39"), "yyyy/mm/dd") _
And dNow <= Format(.Range("E39"), "yyyy/mm/dd") Then
MsgBox ("「締め切りが完了しました」"), 16
Exit Sub
End If
End With
End If
End Sub
この回答への補足あり
    • good
    • 0

チェックもいらないのね


Function chkPeriodは要りません

Private Sub Workbook_Open()
Dim tmp, dNow
tmp = Split(ThisWorkbook.Name, ".")
If Split(ThisWorkbook.Name, ".")(UBound(tmp)) = "xltm" Then
dNow = Format(Now, "yyyy/mm/dd")
With Worksheets("指定シート")
If dNow >= Format(.Range("D39"), "yyyy/mm/dd") _
And dNow <= Format(.Range("E39"), "yyyy/mm/dd") Then
MsgBox ("「締め切りが完了しました」"), 16
Exit Sub
End If
End With
End If
End Sub
この回答への補足あり
    • good
    • 0

>1.「警告文-2」のみを表示させて「警告文-1」は削除


警告文-2 ・ 警告文-1  どれ?
コードをそのまま消せばよいのでは?

>「.xltm」のみでの表示
実行されなければ良いのでしょうか? それとも文字通り コードを消す?
コードを消す場合 ブックモジュールの何処からどこまで?

実行されなければ良いのなら
Dim tmp
tmp = Split(ThisWorkbook.Name, ".")
If Split(ThisWorkbook.Name, ".")(UBound(tmp)) = "xltm" Then

Set rng = Worksheets("指定シート").Range("D37,E37,D39,E39")の上に

End With と
End If
End Sub の間に End If
    • good
    • 0

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