Excel VBA質問箱 IV

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

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


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

【13206】テキストボックスで検索、出力 グライダーマン 04/4/27(火) 17:34 質問[未読]
【13212】Re:テキストボックスで検索、出力 ichinose 04/4/27(火) 21:16 回答[未読]
【13253】Re:テキストボックスで検索、出力 グライダーマン 04/4/28(水) 20:59 質問[未読]
【13254】Re:テキストボックスで検索、出力 ichinose 04/4/28(水) 22:43 発言[未読]
【13263】Re:テキストボックスで検索、出力 グライダーマン 04/4/29(木) 14:16 お礼[未読]

【13206】テキストボックスで検索、出力
質問  グライダーマン  - 04/4/27(火) 17:34 -

引用なし
パスワード
     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ヶ月になりますが、どうも難しくてわかりません。
どなたか教えてください。

【13212】Re:テキストボックスで検索、出力
回答  ichinose  - 04/4/27(火) 21:16 -

引用なし
パスワード
   ▼グライダーマン さん:
こんばんは。

>  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が検索条件入力セルになっています。
これはどこでもかまいません。
確認してみて下さい。

【13253】Re:テキストボックスで検索、出力
質問  グライダーマン  - 04/4/28(水) 20:59 -

引用なし
パスワード
   ▼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に貼り付けられました。私のやり方が悪いのかも知れませんが。
それとコードに説明文を付け加えてもらえませんかちょっと私には難しい
ところが多々有りました。
この質問が解決したら、一段落してもう少し自分でスキルアップしてみたいと思います。
どうぞよろしくお願いします。

【13254】Re:テキストボックスで検索、出力
発言  ichinose  - 04/4/28(水) 22:43 -

引用なし
パスワード
   ▼グライダーマン さん:
こんばんは。
>>
>>>  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
'Sheet2の全てのセルをクリア
>>  With Worksheets("sheet1")
>>   .[j1].Value = .[b1].Value
'Sheet1のセルJ1にフィルタ条件の見出し項目・・、つまり「No」という文字列をセット
>>   .[j2].Value = TextBox1.Text
'Sheet1のセルJ2に抽出番号をセット
>>   With .Range("a1", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 5)
'Sheet1のA列を基準にして、データの入力範囲を見つけています
>>     .AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=[sheet1!j1:j2], _
>>             CopyToRange:=[Sheet2!a1]
'フィルタ処理実行 フィルタ結果をSheet2のセルA1にコピーする
>>     End With
>>   End With
>>End Sub
>ichinoseさん、お答えどうもありがとうございます。
>このコードを入力して実行してみましたが、
><RangeクラスのAdvancedFilterメソッドが失敗しました>
>とエラーが出ました。
>それを無視して実行してみましたが、抽出されずにSheet1のデータがSheet2に貼り付けられました。私のやり方が悪いのかも知れませんが。
>それとコードに説明文を付け加えてもらえませんかちょっと私には難しい
>ところが多々有りました。
>この質問が解決したら、一段落してもう少し自分でスキルアップしてみたいと思います。
>どうぞよろしくお願いします。

[j1]は、Range("j1")と同じだと思って下さい。
Range〜と記述するより、簡単なのでセルが確定しているときは愛用しています。
><RangeクラスのAdvancedFilterメソッドが失敗しました>
のエラーがどうすれば出るのか探ってみましたが・・・。
.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=[sheet1!j1:j2], _
             CopyToRange:=[Sheet2!a1]

この辺のシート名等は、間違っていませんよね?

それから、既存のデータで試すのは後にして、
まず、新規ブックに適当なサンプルデータを作成して
試してみて下さい。

尚、エラーの原因がまだわかっていませんのでExcelのバージョン等も
教えて下さい。

私の方でも再確認しましたが、動いていますが・・・。

【13263】Re:テキストボックスで検索、出力
お礼  グライダーマン  - 04/4/29(木) 14:16 -

引用なし
パスワード
   ichinoseさん大変失礼しました。
できました。私の記入ミスと思われます。
再度記入したら私の思惑通りになりました。
どうもありがとうございました。
もうしばらくスキルアップしてみます。

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