Excel VBA質問箱 IV

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

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


12298 / 13644 ツリー ←次へ | 前へ→

【11222】検索ツール ひろ 04/3/3(水) 11:10 質問
【11226】Re:検索ツール IROC 04/3/3(水) 12:00 回答
【11237】Re:検索ツール ひろ 04/3/3(水) 15:33 質問
【11243】Re:検索ツール Jカーター 04/3/3(水) 18:17 回答
【11248】Re:検索ツール ひろ 04/3/3(水) 20:57 質問
【11250】Re:検索ツール Jカーター 04/3/3(水) 20:59 回答
【11260】Re:検索ツール ひろ 04/3/4(木) 8:03 質問
【11261】Re:検索ツール Jカーター 04/3/4(木) 8:13 発言
【11262】Re:検索ツール ひろ 04/3/4(木) 8:49 質問
【11263】Re:検索ツール IROC 04/3/4(木) 8:56 回答
【11266】Re:検索ツール ひろ 04/3/4(木) 9:16 お礼
【11265】Re:検索ツール Jカーター 04/3/4(木) 9:11 回答

【11222】検索ツール
質問  ひろ  - 04/3/3(水) 11:10 -

引用なし
パスワード
   初心者ですので教えてください。

ユーザーフォームを作りました。
ワークシートの1行目をコンボボックスに表示させるところまでは出来たのですが、その値をボタンを押すと検索をかけ、2行目3行目の値をテキストボックスに表示させたいのですが、どうやったらよいのでしょうか?

【11226】Re:検索ツール
回答  IROC  - 04/3/3(水) 12:00 -

引用なし
パスワード
   コンボボックスの値でA列を検索して、
見つかった行のB列、C列の値をテキストボックスに表示ですか?

【11237】Re:検索ツール
質問  ひろ  - 04/3/3(水) 15:33 -

引用なし
パスワード
   ▼IROC さん:
そのとおりです。解りますでしょうか?

【11243】Re:検索ツール
回答  Jカーター  - 04/3/3(水) 18:17 -

引用なし
パスワード
   こんにちは。
>ワークシートの1行目をコンボボックスに表示させるところまでは出来たのですが
もしかして一列目ですか?

まあどっちでもいいですが
この場合は
一行(列)ではなく3行(3列)格納してしまうのが一番簡単です。
(見た目は一行(一列)のままでいいです。)

そうしておけば
シートを探さなくても
コンボボックスのなかで選択した同行の値を取り出すだけですみます。

>ワークシートの1行目をコンボボックスに表示させるところまでは出来たのですが
これの方法によってやり方は変わります。

【11248】Re:検索ツール
質問  ひろ  - 04/3/3(水) 20:57 -

引用なし
パスワード
   すみません。
『列』の間違いでした。
関数で言いますとVLOOUP機能のような感じです。

【11250】Re:検索ツール
回答  Jカーター  - 04/3/3(水) 20:59 -

引用なし
パスワード
   こんばんは。
>ワークシートの1行目をコンボボックスに表示させるところまでは出来たのですが
をどうやっているかここに書いてみて下さい。

それがわかれば
検索しなくていい方法が使えるかもしれません。
(私が前のレスで書いた方法です。)

【11260】Re:検索ツール
質問  ひろ  - 04/3/4(木) 8:03 -

引用なし
パスワード
   こういった感じです。

Private Sub UserForm_Initialize()

  Dim mystr As String
  
  With Application.Names.Add _
    ("Tmp", Worksheets("PT9165_DATA").Range("A2:A375"))
    
  mystr = .RefersTo
  .Delete

End With
With ComboBox1
  .Width = .Width * 1
  .ColumnCount = 2
  .RowSource = mystr
  .ColumnHeads = True
End With

これでよろしいと思うのですが・・・。
いかがでしょうか?

【11261】Re:検索ツール
発言  Jカーター  - 04/3/4(木) 8:13 -

引用なし
パスワード
   こんにちは。
先に確認したいのですが
Rowsourceは一列のようですが
なぜ
>.ColumnCount = 2
なのでしょうか?

【11262】Re:検索ツール
質問  ひろ  - 04/3/4(木) 8:49 -

引用なし
パスワード
   >>.ColumnCount = 2
↑は間違いですね。

.ColumnCount = 1

これでよいでしょうか?

よくわからないため、サンプルを使用したからだと思います。

【11263】Re:検索ツール
回答  IROC  - 04/3/4(木) 8:56 -

引用なし
パスワード
   Private Sub ComboBox1_Change()
Dim FindData As Range
Dim KeyWord As String
Dim LastRow As Long

  If ComboBox1.Text = "" Then Exit Sub
  
  KeyWord = ComboBox1.Text
  
With Worksheets("Sheet1")
  
  Set FindData = .Range("A:A").Find(KeyWord, LookIn:=xlValues, LookAt:=xlWhole)

  If FindData Is Nothing Then
    MsgBox "見つかりませんでした。"
    Exit Sub
  End If

  MsgBox FindData.Row & " 行目に見つかりました"
  
  TextBox2.Text = .Cells(FindData.Row, 2).Value
  TextBox3.Text = .Cells(FindData.Row, 3).Value
  
End With
End Sub

【11265】Re:検索ツール
回答  Jカーター  - 04/3/4(木) 9:11 -

引用なし
パスワード
   こんにちは。
まず
Rowsourceには名前を付けなくても大丈夫です。
(外部参照のアドレスが簡単です。)

このときにA〜Cまでをリストに入れておけば
面倒なシートからの検索は不必要になります。
なぜなら
選択したリストに2,3列目を取り出すだけでいいからです。
-----------------------------------------------------------------------
Private Sub UserForm_Initialize()
  With Me.ComboBox1
    .RowSource = Worksheets("PT9165_DATA" _
      ).Range("A2:C375").Address(, , , True)
    .ColumnHeads = True
  End With
End Sub

Private Sub ComboBox1_Change()
  Dim StrT(1) As String
  
  With Me.ComboBox1
    If .ListIndex > -1 Then
      StrT(0) = .Column(1)
      StrT(1) = .Column(2)
    End If
  End With
  
  Me.TextBox1.Value = StrT(0)
  Me.TextBox2.Value = StrT(1)
End Sub

★一つ気になったのは
>Range("A2:C375").
の375は確定なのでしょうか?
もし確定でないなら最終セルを取得してリストにした方がいいですよ。

【11266】Re:検索ツール
お礼  ひろ  - 04/3/4(木) 9:16 -

引用なし
パスワード
   ▼IROC さん:

IROCさんの言うようにやってみたら出来ました。
本当にありがとうございました。

VBA出来る人ってすばらしいですね。

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