Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2010)
シートのA列から検索した値を元に一致した行の列値を取得したい
投稿日時: 21/05/23 01:48:15
投稿者: kshouse

 超初心者の質問ですみませんが、どなたかご教示頂けないでしょうか? ​
 
 シートは、2行目のA列が番号、B列〜I列が1〜8項目の各表題となっており、3行目からデータ入力行となっています。 
 
 このシートに入力されたデータの検索を行うため、ユーザーフォーム上にテキストボックス9個とコマンドボタン1個を配置したフォームで検索を行い、データの修正を行いたいと思っています。
 
 やりたい事は、
『ボタンクリックで、テキストボックス1に入力した番号(数値)に基づいて、その数値をA列から検索して、一致する行の各列にある8個の値をユーザーフォームのテキストボックス(1〜8項目)に表示させたい』
というものです。
 
 
そこで、以下のコードを書いたのですが、ボタンをクリックすると、検索した番号に基づいた列値が表示されません。
たぶん、テキストボックス1で検索した数値が「行番号の値」で各列値が表示されてしまいます。
例えば、番号「2」を入力して検索するとデータ行では無いシート2行目の「各表題」が表示されます
(本当は3行目以降の2番の行のデータを表示させたい)
 
Private Sub CommandButton1_Click()
Dim mycell As Range
'TextBox1に入った値をA列から検索し、mycellに格納
Set mycell = Worksheets("Sheet1").Columns("A:A").Find(What:=TextBox1.Value, LookAt:=xlWhole)
   ​mycell.Select
   ​With Worksheets("Sheet1")
       ​'TextBox1は検索の際に手動で入力する
       ​'TextBox1 '=番号
       ​TextBox2 = Cells(mycell, 2) '項目1
       ​TextBox3 = Cells(mycell, 3) '項目2
       ​TextBox4 = Cells(mycell, 4) '項目3
       ​TextBox5 = Cells(mycell, 5) '項目4
       ​TextBox6 = Cells(mycell, 6) '項目5
       ​TextBox7 = Cells(mycell, 7) '項目6
       ​TextBox8 = Cells(mycell, 8) '項目7
       ​TextBox9 = Cells(mycell, 9) '項目8
   ​End With
End SUB
 
このような場合、
テキストボックス1に入力した数値のある行の各列値を表示するには、どのように記載すれば良いのでしょうか?ご教示よろしくお願いいたします。

回答
投稿日時: 21/05/23 07:29:36
投稿者: simple

Set mycell = Worksheets("Sheet1").Columns("A:A").find(What:=TextBox1.Value, LookAt:=xlWhole)
で作成される mycellは、Rangeオブジェクト、つまりセルそのものですね。
 
一方、Cells(○○, 2)の○○には、行番号(整数値)を入力する必要があります。
 
ですから、例えば、

     r = mycell.Row
などとして、
     TextBox2 = .Cells(r, 2)
などとすればよいのではないでしょうか。
 
なお、
(1)
Findの結果、見つからなかったときの対応もしておくとよいでしょう。
http://officetanaka.net/excel/vba/cell/cell11.htm
などを参考にしてください。
(2)
せっかく With Worksheets("Sheet1") としているのですから、
上記したように、 .(ドット)を付けて、それを活かしてください。

投稿日時: 21/05/23 08:11:51
投稿者: kshouse

simple様
 
早々の教示ありがとうございます。
 
  Cells(○○, 2)の○○には、行番号(整数値)を入力する必要がある。
 
  ↑ここの理解が間違えていたのですね。大変勉強になりました。
 
ネットや本を見ながらVBAの習得を勉強中ですが、中々思うように動かず苦労しています(汗
 
この度は本当にありがとうございました。
 
頑張ってVBA習得に努めます!