Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9673 / 13646 ツリー ←次へ | 前へ→

【26024】検索のしかた 初心者 05/6/22(水) 9:56 質問[未読]
【26026】Re:検索のしかた IROC 05/6/22(水) 10:12 回答[未読]
【26029】Re:検索のしかた 初心者 05/6/22(水) 10:37 質問[未読]
【26030】Re:検索のしかた IROC 05/6/22(水) 10:50 回答[未読]
【26032】Re:検索のしかた 初心者 05/6/22(水) 11:01 質問[未読]
【26033】Re:検索のしかた IROC 05/6/22(水) 11:59 回答[未読]
【26039】Re:検索のしかた 初心者 05/6/22(水) 14:27 質問[未読]
【26080】Re:検索のしかた IROC 05/6/23(木) 9:00 回答[未読]
【26099】Re:検索のしかた BOM 05/6/23(木) 16:23 お礼[未読]
【26102】Re:検索のしかた IROC 05/6/23(木) 16:35 回答[未読]
【26105】Re:検索のしかた BOM 05/6/23(木) 17:28 お礼[未読]

【26024】検索のしかた
質問  初心者  - 05/6/22(水) 9:56 -

引用なし
パスワード
   Button検索を押す。
Text氏名.Valueの文字を検索
上記文字にあったTextレコードを表示する

という作業がしたいのですが、Findを使用するみたいですがよくわかりません
どうかよろしくお願いいたします。


Private Sub Button検索_Click()

End Sub

Private Sub UserForm_Initialize()

  Combo住所.ColumnCount = 1
  Combo住所.AddItem "******"
  Combo住所.AddItem "******"
  
  Spin移動.Max = レコード数取得 + 1
  
  Set TBL(1) = Text登録日
  Set TBL(2) = Text氏名
  Set TBL(3) = Textフリカナ
  Set TBL(4) = Text郵便番号
  Set TBL(5) = Combo住所
  Set TBL(6) = Text住所
  Set TBL(7) = Text電話番号
  
  
  Set データ範囲 = Range("A1").CurrentRegion
  If データ範囲.Rows.Count = 1 Then
  Else
    データ表示 (2)
  End If
End Sub
Public Sub データ表示(行数 As Integer)
  
  Dim Cnt As Integer
  For Cnt = 1 To 7
    Select Case Cnt
      
      Case Else
        TBL(Cnt).Value = データ範囲.Cells(行数, Cnt).Value
    End Select
  Next
 
  
  Textレコード.Value = Spin移動.Value - 1 & "/" & レコード数取得

End Sub
Public Function レコード数取得() As Integer
  
  レコード数取得 = Range("A1").CurrentRegion.Rows.Count - 1

End Function
Public Sub データ書き込み(行数 As Integer)
  
  Dim Cnt As Integer
  For Cnt = 1 To 7
    Select Case Cnt
      
      Case Else
        データ範囲.Cells(行数, Cnt).Value = TBL(Cnt).Value
    End Select
  Next

End Sub
Private Sub Button更新_Click()
  
  データ書き込み (Spin移動.Value)
  
End Sub
Private Sub Button削除_Click()

  データ範囲.Rows(Spin移動.Value).Delete
  データ表示 (Spin移動.Value)
  
  Set データ範囲 = Range("A1").CurrentRegion
  Spin移動.Max = データ範囲.Rows.Count
  Worksheets("内訳").Range("A:G").ClearContents
  
  
End Sub
Private Sub Button終了_Click()
  
  データ編集.Hide
    
End Sub
Private Sub Button追加_Click()
  
  Dim AddRow As Integer
  
  AddRow = データ範囲.Rows.Count + 1
  データ書き込み (AddRow)
  
  Textレコード.Text = Spin移動.Value - 1 & "/" & レコード数取得

  Set データ範囲 = Range("A1").CurrentRegion
  Spin移動.Max = データ範囲.Rows.Count
  Spin移動.Value = データ範囲.Rows.Count
  データ表示 (AddRow)
  
End Sub
Private Sub Spin移動_Change()
  
  If データ範囲.Rows.Count <> 1 Then
    データ表示 (Spin移動.Value)
  End If

End Sub

【26026】Re:検索のしかた
回答  IROC  - 05/6/22(水) 10:12 -

引用なし
パスワード
   どのようなデータを検索して、どのように活用するのでしょうか?

検索結果が複数ならオートフィルタの方が便利だと思います。

【26029】Re:検索のしかた
質問  初心者  - 05/6/22(水) 10:37 -

引用なし
パスワード
   ありがとうございます。

ユーザーフォーム上で記入しユーザーフォーム上で検索したいのですがどうでしょうか?

【26030】Re:検索のしかた
回答  IROC  - 05/6/22(水) 10:50 -

引用なし
パスワード
   可能です。
でも、検索結果が複数なのか、1件なのか
どのように表示させるのか(どのように結果を使うのか)
によって、作り方が変わってくると思います。

【26032】Re:検索のしかた
質問  初心者  - 05/6/22(水) 11:01 -

引用なし
パスワード
   はい、基本的に一軒の検索で作りたいと思います(同姓同名がいるとアウトですが^^)

【26033】Re:検索のしかた
回答  IROC  - 05/6/22(水) 11:59 -

引用なし
パスワード
   Findのサンプルです。


Private Sub CommandButton1_Click()
Dim r As Range
  
  With Worksheets("Sheet1")
  Set r = .Range("A:A").Find(TextBox1.Text, , xlValues, xlWhole)
  
    If r Is Nothing Then
      MsgBox "見つかりませんでした。"
      Exit Sub
    End If
  
    MsgBox "見つかったセルは" & r.Address(0, 0) & (13) & _
        "見つかった行は、" & r.Row & (13) & _
        "見つかったセルの横は、" & r.Offset(0, 1).Value
    
  End With
End Sub

【26039】Re:検索のしかた
質問  初心者  - 05/6/22(水) 14:27 -

引用なし
パスワード
   Private Sub Button検索_Click()

  Dim r As Range
 
  With Worksheets("顧客リスト")
  Set r = Range("B:B").Find(Text氏名.Text, , xlValues, xlWhole)
 
    If r Is Nothing Then
      MsgBox "見つかりませんでした。"
      Exit Sub
    End If
     
    MsgBox "" & r.Row
  
  End With
End Sub

上記とし、うまくいきましたありがとうございます。<(_ _)>

もう一つ踏み込んでお聞きしたいのですが、r.Rowで取得した数値を使ってデーター表示
を変えたいのですが、よろしくお願いします。


Public Sub データ表示(行数 As Integer)
  
  Dim Cnt As Integer
  For Cnt = 1 To 7
    Select Case Cnt
      
      Case Else
        TBL(Cnt).Value = データ範囲.Cells(行数, Cnt).Value
    End Select
  Next
 
  
  Textレコード.Value = Spin移動.Value - 1 & "/" & レコード数取得
  
End Sub

【26080】Re:検索のしかた
回答  IROC  - 05/6/23(木) 9:00 -

引用なし
パスワード
   どのように変えたいのか分からないのすけど・・
Callで呼び出すだけ?


Private Sub Button検索_Click()
  Dim r As Range
 
  With Worksheets("顧客リスト")
  Set r = Range("B:B").Find(Text氏名.Text, , xlValues, xlWhole)

    If r Is Nothing Then
      MsgBox "見つかりませんでした。"
      Exit Sub
    End If
     
    Call データ表示(r.Row)
  
  End With
End Sub


Public Sub データ表示(行数 As Long)
Dim Cnt As long
 
 For Cnt = 1 To 7
    Select Case Cnt      
    Case Else
       TBL(Cnt).Value = データ範囲.Cells(行数, Cnt).Value
    End Select
 Next Cnt
  
  Textレコード.Value = Spin移動.Value - 1 & "/" & レコード数取得  
End Sub

【26099】Re:検索のしかた
お礼  BOM  - 05/6/23(木) 16:23 -

引用なし
パスワード
   ありがとうございます。
顧客リストの内容をユーザーフォーム上のスピンボタンで表示を切り替えています。

顧客の名前から検索しヒットした名前をユーザーフォーム上に一発表示したかったのです
(説明が前後しましたすみません)

検索は以前教えていただいた方法で何行目にあるかMsgBOXで表示でき、その行までスピンボタンで手動で表示可能になりましたが、出来れば自動表示したかったのですが・・・・
私のスキルではむりでした (TT)

お忙しい中ありがとうございました。

【26102】Re:検索のしかた
回答  IROC  - 05/6/23(木) 16:35 -

引用なし
パスワード
   検索したセルを選択(表示)させるなら
r.select を追加するればよいと思います。

【26105】Re:検索のしかた
お礼  BOM  - 05/6/23(木) 17:28 -

引用なし
パスワード
   ▼IROC さん:
>検索したセルを選択(表示)させるなら
>r.select を追加するればよいと思います。

うまくいきました、どうもお手数掛けましたありがとうございます。

9673 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free