過去ログ

                                Page     853
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼エラー処理の方法  maeda 03/3/7(金) 22:18
   ┗Re:エラー処理の方法  りん 03/3/7(金) 22:55
      ┗Re:エラー処理の方法  maeda 03/3/8(土) 9:27
         ┗Re:エラー処理の方法  りん 03/3/8(土) 12:06
            ┗Re:エラー処理の方法  maeda 03/3/8(土) 13:03

 ───────────────────────────────────────
 ■題名 : エラー処理の方法
 ■名前 : maeda <fwhn0621@mb.infoweb.ne.jp>
 ■日付 : 03/3/7(金) 22:18
 -------------------------------------------------------------------------
   次のような方法でユーザフォーム上のテキストに入力した郵便番号で
住所の検索を行いますが、該当する住所がない場合は、エラーで処理がストップします。
エラートラップの方法を教えて下さい。


Private Sub CommandButton4_Click()
  If Left(郵便番号, 2) = "88" Then
    '住所1
    住所1 = WorksheetFunction.VLookup(郵便番号, Worksheets("miyazaki").Range("B2:D852"), 3, False)
  ElseIf Left(郵便番号, 2) = "89" Then
    住所1 = WorksheetFunction.VLookup(郵便番号, Worksheets("kagosima").Range("B2:D1429"), 3, False)
  Else
    住所1 = WorksheetFunction.VLookup(郵便番号, Worksheets("kumamoto").Range("B2:D1917"), 3, False)

  End If
  
End Sub
 ───────────────────────────────────────  ■題名 : Re:エラー処理の方法  ■名前 : りん <rin_doggie@hotmail.com>  ■日付 : 03/3/7(金) 22:55  -------------------------------------------------------------------------
   maeda さん、こんばんわ。
>次のような方法でユーザフォーム上のテキストに入力した郵便番号で
>住所の検索を行いますが、該当する住所がない場合は、エラーで処理がストップします。
>エラートラップの方法を教えて下さい。

エラーを出さない一例です。

Private Sub CommandButton4_Click()
  Dim r1 As Range, r2 As Range
  ActiveCell.Activate '念のため
  Select Case Left(郵便番号, 2)
   Case "88"
     Set r1 = Worksheets("miyazaki").Range("B2:B852") '88エリアは宮崎
   Case "89"
     Set r1 = Worksheets("kagosima").Range("B2:B1429") '89エリアは鹿児島
   Case Else
     Set r1 = Worksheets("kumamoto").Range("B2:B1917") 'それ以外は熊本
  End Select
 '住所1
  'B列が郵便番号
  Set r2 = r1.Find(郵便番号)
  If r2 Is Nothing Then
   MsgBox "ありません", vbCritical, 郵便番号
  Else
   住所1 = r2.Offset(0, 2).Value
   MsgBox 住所1, vbInformation, 郵便番号
  End If
  Set r1 = Nothing:  Set r2 = Nothing
End Sub

VLookUpワークシート関数ではなくてRangeのFindメソッドを使いました。
 ───────────────────────────────────────  ■題名 : Re:エラー処理の方法  ■名前 : maeda <fwhn0621@mb.infoweb.ne.jp>  ■日付 : 03/3/8(土) 9:27  -------------------------------------------------------------------------
   ▼りん さん:
>  Set r2 = r1.Find(郵便番号)
>  If r2 Is Nothing Then
>   MsgBox "ありません", vbCritical, 郵便番号
>  Else
>   住所1 = r2.Offset(0, 2).Value
>   MsgBox 住所1, vbInformation, 郵便番号
>  End If
>  Set r1 = Nothing:  Set r2 = Nothing
>End Sub

ありがとうございます。
検索する住所がD列に入ってますので 『offset(0,2)』でいいんですよね。
テキストボックスに表示させる場合は MsgBox でなく、テキストボックスの『住所1』でいいでしょうか。
 ───────────────────────────────────────  ■題名 : Re:エラー処理の方法  ■名前 : りん <rin_doggie@hotmail.com>  ■日付 : 03/3/8(土) 12:06  -------------------------------------------------------------------------
   maeda さん、こんにちわ。

>検索する住所がD列に入ってますので 『offset(0,2)』でいいんですよね。
そうです。Bから2つ右でDです。

>テキストボックスに表示させる場合は MsgBox でなく、テキストボックスの『住所1』でいいでしょうか。
 住所1はテキストボックスだったのですね。

分岐の部分は
>>  If r2 Is Nothing Then
    住所1.Text = ""
>>  Else
    住所1.Text = r2.Offset(0, 2).Value
>>  End If
こんな感じです。
 ───────────────────────────────────────  ■題名 : Re:エラー処理の方法  ■名前 : maeda <fwhn0621@mb.infoweb.ne.jp>  ■日付 : 03/3/8(土) 13:03  -------------------------------------------------------------------------
   ▼りん さん:

ありがとうございます。
充分に満足できるものが出来ました、またよろしくお願いいたします。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 853