重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

【ExcelVBA】初心者です。

フォームのテキストボックス(TextBox1)に入力された値を、シート(Sheet1)の中から検索し、その右隣のセルの値を別のシート(Sheet2)に挿入するというプログラムを作ろうと考えています。ですが、ネットで検索してもいまいちよくわかりません。どのように作ればいいのかコードを教えてください。検索するセルは必ずしも同じ列にあるとは限りません。よろしくお願いします。

A 回答 (1件)

こんばんは!



>フォームのテキストボックス(TextBox1)
とはユーザーフォームのテキストボックスで良いのですかね。

>別のシート(Sheet2)に挿入するという・・・
とはSheet2のどこに挿入するのかが書いてないので勝手にこちらでやってみました。
Sheet2のA列最終行以降に追加する!という形にしています。

尚、ユーザーフォームにはコマンドボタンが配置してあり、
コマンドボタンをクリックすると実行する方法です。
コマンドボタンのコードを↓のようにしてみてください。

Private Sub CommandButton1_Click()
 Dim FoundCell As Range, FirstCell As Range
 Dim wS1 As Worksheet, wS2 As Worksheet
  Set wS1 = Worksheets("Sheet1")
  Set wS2 = Worksheets("Sheet2")
   Set FoundCell = wS1.Cells.Find(what:=TextBox1.Text, LookIn:=xlValues, lookat:=xlWhole)
    If Not FoundCell Is Nothing Then
     Set FirstCell = FoundCell
     GoTo 処理
    Else
     MsgBox "該当データなし"
     Exit Sub
    End If
   Do
    Set FoundCell = wS1.Cells.FindNext(after:=FoundCell)
    If FoundCell.Address = FirstCell.Address Then Exit Do
処理:
    wS2.Cells(Rows.Count, "A").End(xlUp).Offset(1) = FoundCell.Offset(, 1)
   Loop
    wS2.Activate
    Unload UserForm1
End Sub

※ Sheet1内に複数該当データが存在しても対応するようにしています。
尚、1行目 左から右へ!
  2行目 左から右へ!

といった具合に検索しますので、
列ごとの順には表示されません。m(_ _)m
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!