過去ログ

                                Page     302
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼エラー値をメッセージボックスで知らせたい  ユウ 02/11/6(水) 19:42
   ┗Re:エラー値をメッセージボックスで知らせたい  角田 02/11/7(木) 0:23
      ┗解決しました!  ユウ 02/11/7(木) 9:46

 ───────────────────────────────────────
 ■題名 : エラー値をメッセージボックスで知らせたい
 ■名前 : ユウ
 ■日付 : 02/11/6(水) 19:42
 -------------------------------------------------------------------------
   こんばんは、いつも参考にさせてもらっています。
自分は感心するばっかりであんまり上達していません。(笑)

今回の質問は
VLOOKUP関数を使った時にエラー値(#N/A)になった場合に
msgboxで検索値が無い事を表示してマクロを終了させるにはどうしたらよいでしょう。
(エラー値にならない場合は次のコードを実行したいです)
宜しくお願いします。
 ───────────────────────────────────────  ■題名 : Re:エラー値をメッセージボックスで知らせたい  ■名前 : 角田  ■日付 : 02/11/7(木) 0:23  ■Web : http://www.h3.dion.ne.jp/~sakatsu/index.htm  -------------------------------------------------------------------------
   こんにちは。
>VLOOKUP関数を使った時にエラー値(#N/A)になった場合に
>msgboxで検索値が無い事を表示してマクロを終了させるにはどうしたらよいでしょう。
>(エラー値にならない場合は次のコードを実行したいです)

Excel95互換モードというのが有って、[WorksheetFunction]の記述を省略し
 Application.VLookup(‥‥‥)
とすると、検索エラーの場合に、実行時エラーにならず、セルと同じように
エラー値が返ってきます。

Dim rc As Variant 'エラー値と検索値の両方を受け取る為に[Variant]
rc = Application.VLookup(‥‥‥)
If IsError(rc) Then
 MsgBox "検索値がありませんでした"
 Exit Sub
End If
 :
[rc]の内容で以降、処理続行
 ───────────────────────────────────────  ■題名 : 解決しました!  ■名前 : ユウ  ■日付 : 02/11/7(木) 9:46  -------------------------------------------------------------------------
   どうもありがとうございました。
なんとか解決しました。
  Dim r As Integer

  Range("C2").Select
  Do Until ActiveCell.Offset(, -1).Value = ""
  r2 = ActiveCell.Row
  Err = Application.WorksheetFunction.IsError(Cells(r, 3))
    If Err = True Then
      MsgBox "検索値が未登録です。登録後実行して下さい"
       Exit Sub
    End If
  ActiveCell.Offset(1).Select
  Loop
としました。
Do Until ActiveCell.Value = ""
とするとエラーになってしまうのでoffset(,-1)にしましたが・・・
でも解決して良かったです。
ちなみにVB上達の秘訣は???
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 302