こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBA シートがなかったら「シートがない」と表示

P1セルに「テスト」の名称を付ける。
P2セルにVLOOKUP計算式を入れる。最後尾までオートフィルでコピー。
といったコードです。

Sub テスト()

 Range("P1").Select
    ActiveCell.FormulaR1C1 = "テスト"

nLast = Cells(Rows.Count, 1).End(xlUp).Row
    Range("P2:P" & nLast).Formula = "=VLOOKUP(K2,履歴!D:E,2,0)"

End Sub

もし「履歴」というシートがなかったら、「シートがありません」というメッセージウィンドウを」表示したいです。
https://oshiete.goo.ne.jp/qa/1043563.html
を参考に


Sub テスト()

On Error GoTo err_handle
 Range("P1").Select
    ActiveCell.FormulaR1C1 = "テスト"

nLast = Cells(Rows.Count, 1).End(xlUp).Row
    Range("P2:P" & nLast).Formula = "=VLOOKUP(K2,履歴!D:E,2,0)"

err_handle:
If Err = 9 Then
MsgBox "シートAAAが存在しません。"
Exit Sub
End If

End Sub
と記述しましたが、エラーメッセージは表示しませんでした。
どのように追記したら良いでしょうか?
宜しくお願いします。

投稿日時 - 2018-09-18 15:22:04

QNo.9538509

困ってます

質問者が選んだベストアンサー

Sub テスト()
  Dim ws As Worksheet
  Dim nLast As Long
  On Error Resume Next
  Set ws = Worksheets("履歴")
  On Error GoTo 0
  If ws Is Nothing Then
    MsgBox "履歴シートがありません", 16
    Exit Sub
  End If
  Range("P1").FormulaR1C1 = "テスト"
  nLast = Cells(Rows.Count, 1).End(xlUp).Row
  Range("P2:P" & nLast).Formula = "=VLOOKUP(K2,履歴!D:E,2,0)"
End Sub
よく「履歴」のシート名が作れましたね
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1113237576

投稿日時 - 2018-09-18 15:40:23

お礼

ありがとうございます。
表示できました。
「履歴」は予約語でしたか。
本当は「階層履歴確認」でしたが、省略して「履歴」と記載してました。

投稿日時 - 2018-09-18 16:31:06

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問