過去ログ

                                Page      48
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼.Findの使い方について  123 02/9/6(金) 17:31
   ┗Re:.Findの使い方について  Taka-mk2 02/9/6(金) 17:53
      ┗解決です  123 02/9/6(金) 19:39
         ┗Re:解決です  Taka-mk2 02/9/6(金) 21:25
            ┣そうなんです  123 02/9/7(土) 1:55
            ┗Re:解決です  123 02/9/9(月) 10:41
               ┗Re:解決です  Taka-mk2 02/9/9(月) 10:45
                  ┗Re:解決です(○)  123 02/9/9(月) 11:29

 ───────────────────────────────────────
 ■題名 : .Findの使い方について
 ■名前 : 123
 ■日付 : 02/9/6(金) 17:31
 -------------------------------------------------------------------------
   TextBox1に6桁の番号を入力し、
そのTextBox1をExitする時に(またはEnter)
その6桁の番号をシート内で検索して、
あった場合は、そのセルをアクティブにしたいのですが
悪戦苦闘しています。

お助けくださいませ。
 ───────────────────────────────────────  ■題名 : Re:.Findの使い方について  ■名前 : Taka-mk2  ■日付 : 02/9/6(金) 17:53  -------------------------------------------------------------------------
   ▼123 さん:
東京は雨です!
こんばんは。

以下のような感じではどうでしょうか?
テキストボックスは、シートにそのまま貼り付けました。
検索範囲は、A1からA26です。

Private Sub TextBox1_LostFocus()
  Dim strTest As String
  Dim Find As Range
  
  On Error GoTo TextBox1_LostFocus_ERR:
  
  strTest = TextBox1.Value
  
  With ActiveSheet
    Set Find = .Range(.Cells(1, 1), .Cells(26, 1)).Find(strTest)
    If Find Is Nothing Then Exit Sub
    Find.Activate
  End With
  
  Exit Sub
  
TextBox1_LostFocus_ERR:
  MsgBox Err.Description
End Sub

いじょ、参考になれば。
 ───────────────────────────────────────  ■題名 : 解決です  ■名前 : 123  ■日付 : 02/9/6(金) 19:39  -------------------------------------------------------------------------
   ▼Taka-mk2 さん:
こんばんは。

ありがとうございました。
解決しました。

ただ、
ユーザーフォーム上にTextBoxを作ったからなのか
ERRのメッセージが表示されませんでした。
⇒ LostFocus()の部分を Exit()に変えました。

因みに、検索結果で該当がない場合にメッセージBOX
を表示したい時は以下のコードのどこを直せばよいのでしょうか。
いろいろやってみましたが、うまくいきませんでした。
宜しくお願いいたします。

>Private Sub TextBox1_LostFocus()
>  Dim strTest As String
>  Dim Find As Range
>  
>  On Error GoTo TextBox1_LostFocus_ERR:
>  
>  strTest = TextBox1.Value
>  
>  With ActiveSheet
>    Set Find = .Range(.Cells(1, 1), .Cells(26, 1)).Find(strTest)
>    If Find Is Nothing Then Exit Sub
>    Find.Activate
>  End With
>  
>  Exit Sub
>  
>TextBox1_LostFocus_ERR:
>  MsgBox Err.Description
>End Sub
 ───────────────────────────────────────  ■題名 : Re:解決です  ■名前 : Taka-mk2  ■日付 : 02/9/6(金) 21:25  -------------------------------------------------------------------------
   ▼123 さん:

こんばんは!
夕飯時に雨に降られてしまいました・・・^^;

>因みに、検索結果で該当がない場合にメッセージBOX
>を表示したい時は以下のコードのどこを直せばよいのでしょうか。

すいません^^;
これは、

If Find Is Nothing Then Exit Sub

の部分を変えることで出来ます。
この部分を、

If Find Is Nothing Then
  msgbox "Not Found!",vbinformation or vbokonly
end if

とすると、出てきます。
FindがNothingの時というのが、If Find Is Nothing Thenです。
見つかっているときは、Findに見つかった範囲のRangeが返されるので、
Nothingにはなりませんー。

いじょ、参考にしてください。

って、もとはUserFormから検索していたのでしょうか?
 ───────────────────────────────────────  ■題名 : そうなんです  ■名前 : 123  ■日付 : 02/9/7(土) 1:55  -------------------------------------------------------------------------
   ▼Taka-mk2 さん:

>って、もとはUserFormから検索していたのでしょうか?

そうなんです。
UserFormで全てをやっています。
説明不足ですみませんでした。

早速やってみたいのですが、
会社 休みなもんで
月曜日に会社行ったら やってみます。

いろいろ ありがとうございます。
 ───────────────────────────────────────  ■題名 : Re:解決です  ■名前 : 123  ■日付 : 02/9/9(月) 10:41  -------------------------------------------------------------------------
   ▼Taka-mk2 さん:
こんにちは

会社に来て やっています。
今 以下のコードでやってみましたが、
Find is Notingの場合、メッセージは出るのですが、
その後の処理でディバックが出てしまいます。
どうぞ お助けください。

Private Sub コマンドボタン1._Click()
  Dim strTest As String
  Dim Find As Range
 
  strTest = T_検索氏名.Value
 
  With ActiveSheet
  
    Set Find = .Range(.Cells(1, 2), .Cells(26, 2)).Find(strTest)
    If Find Is Nothing Then
    MsgBox "Not Found!", vbInformation Or vbOKOnly
    End If
    Find.Activate
    
    Cells(ActiveCell.Row, 1).Select
    T_個人番号.Value = ActiveCell.Value
    
  End With

  
End Sub
 ───────────────────────────────────────  ■題名 : Re:解決です  ■名前 : Taka-mk2  ■日付 : 02/9/9(月) 10:45  -------------------------------------------------------------------------
   ▼123 さん:
こんにちは!

すみません、ポカミスです。←この人には多いです。
msgboxの次の行に、Exit Subを付け加えてください。
これがないと、プロシージャからでないので、Find.Activateに
いってしまい、エラーになりますね。

>Private Sub コマンドボタン1._Click()
>  Dim strTest As String
>  Dim Find As Range
> 
>  strTest = T_検索氏名.Value
> 
>  With ActiveSheet
>  
>    Set Find = .Range(.Cells(1, 2), .Cells(26, 2)).Find(strTest)
>    If Find Is Nothing Then
>      MsgBox "Not Found!", vbInformation Or vbOKOnly
      Exit Sub
>    End If
>    Find.Activate
>    
>    Cells(ActiveCell.Row, 1).Select
>    T_個人番号.Value = ActiveCell.Value
>    
>  End With
>
>  
>End Sub
 ───────────────────────────────────────  ■題名 : Re:解決です(○)  ■名前 : 123  ■日付 : 02/9/9(月) 11:29  -------------------------------------------------------------------------
   ▼Taka-mk2 さん:
こんにちは!

今度こそ解決です。
ほんと ありがとうございました。

もう少し 基本を勉強します。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 48