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

Excelで、特定の未入力セルがあると、Excelを閉じられない、かつ保存できないようにマクロで設定しました。(過去の質問で似たようなものがあったので、コピペしました)

メッセージボックスに未入力セルがあることを表示させているのですが、そのセル名を指定した名前で表示させたいです。自分なりに調べてみましたが、なかなか見つからず、皆様からのアドバイスを頂きたいです。

例えば日付を入れるセル、B1が未入力の場合、
「B1」が未入力です。
ではなく、
「日付」が未入力です。
と表示させたいです。

現在、以下のような形でVBA画面に入力しています。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim k As Long
Dim str, buf As String
Dim myArray As Variant
myArray = Array("営業担当者名", "顧客名", "荷造運賃単価", "見積日", "確度") '←好みの数だけセル番地を格納する
For k = 0 To UBound(myArray)
If Worksheets("見積書兼注文通知書").Range(myArray(k)) = "" Then
str = WorksheetFunction.Substitute(Range(myArray(k)).Address, "$", "")
M = M + 1
buf = buf & str & ","
End If
Next k
If M > 0 Then
MsgBox "未入力の箇所があります。" & vbCrLf & Left(buf, Len(buf) - 1) & "セルが" & vbCrLf & "未入力です。"
Worksheets("見積書兼注文通知書").Activate
Cancel = True
End If
End Sub '

Private Sub Workbook_BeforeClose(Cancel As Boolean) 'この行から
Dim k As Long
Dim str, buf As String
Dim myArray As Variant
myArray = Array("営業担当者名", "顧客名", "荷造運賃単価", "見積日", "確度") '←好みの数だけセル番地を格納する
For k = 0 To UBound(myArray)
If Worksheets("見積書兼注文通知書").Range(myArray(k)) = "" Then
str = WorksheetFunction.Substitute(Range(myArray(k)).Address, "$", "")
M = M + 1
buf = buf & str & ","
End If
Next k
If M > 0 Then
MsgBox "未入力の箇所があります。" & vbCrLf & Left(buf, Len(buf) - 1) & "セルが" & vbCrLf & "未入力です。"
Worksheets("見積書兼注文通知書").Activate
Cancel = True
End If
End Sub

以上。
どこに、どのような文言を入れると私の行いことが実現出来るか教えていただきたいです。
宜しくお願いいたします。

A 回答 (2件)

直接の回答ではありません。



項目の表示など雰囲気が判ればどうでも良く、そのセルを選択状態にしてメッセージボックスを閉じれば入力も楽だと思うのですが…
    • good
    • 1
この回答へのお礼

アドバイスありがとうございます。

お礼日時:2017/03/09 22:18

str = WorksheetFunction.Substitute(Range(myArray(k)).Address, "$", "")



str = myArray(k)
でいかがでしょうか?
    • good
    • 1
この回答へのお礼

アドバイス頂いたように入力すると、うまく表示させることができました。
非常に助かりました!!!!ありがとうございます。

お礼日時:2017/03/09 22:15

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