| 
    
     |  | ▼ichinose さん: >▼グライダーマン さん:
 >こんばんは。
 >
 >>  A   B    C     D      E
 >> 日付   No   設備名   処置内容   交換部品
 >>3/1   1    ・      ・     ・
 >>  ・   3    ・      ・     ・
 >>3/3   1    ・      ・     ・
 >>  ・   7    ・      ・     ・
 >>  ・   2    ・      ・     ・
 >>  ・   4    ・      ・     ・
 >>  ・   3    ・      ・     ・
 >>  ・   ・    ・      ・     ・
 >>
 >>上記のような感じで下方向(Sheet1)へ毎日入力していきます。
 >>そこでユーザーフォームのテキストボックスに検索したい番号(B列)を入力し、
 >>その番号全部の行を(Sheet2)に貼り付けたいと思います。
 >>(上記の例では1を条件にすれば3/1と3/3の行がSheet2に貼り付けられます。)
 >>VBAに挑戦してやっと3ヶ月になりますが、どうも難しくてわかりません。
 >>どなたか教えてください。
 >ユーザーフォーム(Userform1)には、
 >  テキストボックス(Textbox1)
 >  コマンドボタン(Commandbutton1)
 >のふたつのコントロールを貼付けて下さい。
 >
 >テキストボックスに検索番号を入力します。
 >コマンドボタンのクリックで検索開始です。
 >標準モジュールに
 >'=========================================================
 >Sub main()
 >  UserForm1.Show vbModeless
 >End Sub
 >
 >フォームモジュールに
 >'=========================================================
 >Private Sub CommandButton1_Click()
 >  Worksheets("sheet2").Cells.ClearContents
 >  With Worksheets("sheet1")
 >   .[j1].Value = .[b1].Value
 >   .[j2].Value = TextBox1.Text
 >   With .Range("a1", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 5)
 >     .AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=[sheet1!j1:j2], _
 >             CopyToRange:=[Sheet2!a1]
 >     End With
 >   End With
 >End Sub
 >
 >アドバンスフィルタを使いました。
 >Sheet1のセルJ1〜J2が検索条件入力セルになっています。
 >これはどこでもかまいません。
 >確認してみて下さい。
 
 ichinoseさん、お答えどうもありがとうございます。
 このコードを入力して実行してみましたが、
 <RangeクラスのAdvancedFilterメソッドが失敗しました>
 とエラーが出ました。
 それを無視して実行してみましたが、抽出されずにSheet1のデータがSheet2に貼り付けられました。私のやり方が悪いのかも知れませんが。
 それとコードに説明文を付け加えてもらえませんかちょっと私には難しい
 ところが多々有りました。
 この質問が解決したら、一段落してもう少し自分でスキルアップしてみたいと思います。
 どうぞよろしくお願いします。
 
 |  |