一致する「発注番号」をリストボックスに表示したい

最近の書き込み件数: 今日 0件、昨日 0件
未読分:2件

最新20件 最新50件 最新100件 最新200件 200件以前
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)


Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

近田 伸矢, 植木 悠二, 上田 寛

IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。

Message#2 2014年12月17日(水)17時26分
From: ポム
返事 削除 変更
すみませんがExcel2007での確認です。大差ないと思いますが。。
エクセルのフィルタリング機能をVBA化して回答してみます。

1シートずつ(4シート分)を入力された「名称」「番号」よりフィルタリングして、フィルタリングされたデータのみListboxへの追加処理をしています。

Listbox1には結果として、データ順にそのまま表示されます。
(特に記載がなかったため「発注番号」の重複データもそのまま表示されます。)

Option Explicit
Private Sub CommandButton1_Click()
'検索ボタンクリック時
Dim FilterRow As Range

ListBox1.Clear 'リストボックス初期化

With ActiveWorkbook.Worksheets("交換(平成26年)")

If .AutoFilterMode = True Then
.AutoFilterMode = False 'フィルタモード解除
End If

.Select
Columns("E:G").Select
Selection.AutoFilter
ActiveSheet.Range("$E$1:$G$500").AutoFilter Field:=2, Criteria1:="=" & TextBox1.Text, _
Operator:=xlAnd
ActiveSheet.Range("$E$1:$G$500").AutoFilter Field:=3, Criteria1:="=" & TextBox2.Text, _
Operator:=xlAnd

'フィルタされて表示されているデータをリストボックスへ
For Each FilterRow In .Range("E1"). _
CurrentRegion.Resize(, 1).SpecialCells(xlVisible)
If FilterRow.Row <> 1 Then '1行目(タイトル)は除外
'ListBox1へ追加
ListBox1.AddItem .Range("E" & FilterRow.Row).Value
End If
Next FilterRow

.AutoFilterMode = False 'フィルタモード解除
.Range("E1").Select
End With




With ActiveWorkbook.Worksheets("解約(平成22〜24年)")

If .AutoFilterMode = True Then
.AutoFilterMode = False 'フィルタモード解除
End If

.Select
Columns("D:F").Select
Selection.AutoFilter
ActiveSheet.Range("$D$1:$F$500").AutoFilter Field:=2, Criteria1:="=" & TextBox1.Text, _
Operator:=xlAnd
ActiveSheet.Range("$D$1:$F$500").AutoFilter Field:=3, Criteria1:="=" & TextBox2.Text, _
Operator:=xlAnd

'フィルタされて表示されているデータをリストボックスへ
For Each FilterRow In .Range("D1"). _
CurrentRegion.Resize(, 1).SpecialCells(xlVisible)
If FilterRow.Row <> 1 Then '1行目(タイトル)は除外
'ListBox1へ追加
ListBox1.AddItem .Range("D" & FilterRow.Row).Value
End If
Next FilterRow

.AutoFilterMode = False 'フィルタモード解除
.Range("D1").Select

End With

With ActiveWorkbook.Worksheets("解約(平成25年)")

If .AutoFilterMode = True Then
.AutoFilterMode = False 'フィルタモード解除
End If

.Select
Columns("D:F").Select
Selection.AutoFilter
ActiveSheet.Range("$D$1:$F$500").AutoFilter Field:=2, Criteria1:="=" & TextBox1.Text, _
Operator:=xlAnd
ActiveSheet.Range("$D$1:$F$500").AutoFilter Field:=3, Criteria1:="=" & TextBox2.Text, _
Operator:=xlAnd

'フィルタされて表示されているデータをリストボックスへ
For Each FilterRow In .Range("D1"). _
CurrentRegion.Resize(, 1).SpecialCells(xlVisible)
If FilterRow.Row <> 1 Then '1行目(タイトル)は除外
'ListBox1へ追加
ListBox1.AddItem .Range("D" & FilterRow.Row).Value
End If
Next FilterRow

.AutoFilterMode = False 'フィルタモード解除
.Range("D1").Select

End With

With ActiveWorkbook.Worksheets("解約(平成26年)")

If .AutoFilterMode = True Then
.AutoFilterMode = False 'フィルタモード解除
End If

.Select
Columns("D:F").Select
Selection.AutoFilter
ActiveSheet.Range("$D$1:$F$500").AutoFilter Field:=2, Criteria1:="=" & TextBox1.Text, _
Operator:=xlAnd
ActiveSheet.Range("$D$1:$F$500").AutoFilter Field:=3, Criteria1:="=" & TextBox2.Text, _
Operator:=xlAnd

'フィルタされて表示されているデータをリストボックスへ
For Each FilterRow In .Range("D1"). _
CurrentRegion.Resize(, 1).SpecialCells(xlVisible)
If FilterRow.Row <> 1 Then '1行目(タイトル)は除外
'ListBox1へ追加
ListBox1.AddItem .Range("D" & FilterRow.Row).Value
End If
Next FilterRow

.AutoFilterMode = False 'フィルタモード解除
.Range("D1").Select

End With

'カーソルを元に戻す
With ActiveWorkbook.Worksheets("交換(平成26年)")
.Select
.Range("E1").Select
End With
End Sub

Message#1 2014年12月16日(火)19時25分
From: kiminiaitai
返事 削除 変更
すみません、VBA初心者です。教えて下さい。
使用環境は、Excel2003と2013です。
@Sheet1"交換(平成26年)"
A・・・ E F G・・・
1 発注番号 名称 番号
2 2014-10-0001 ああああ 101
3 2014-09-0099 いいいい 202

*E列に「発注番号」、F列に「名称」、G列に「番号」

ASheet2"解約(平成22〜24年)"、Sheet3"解約(平成25年)"、Sheet4"解約(平成26年)"
A・・・ D E F・・・
1 発注番号 名称 番号
2 2014-04-0111 うううう 101
3 2014-10-0005 いいいい 202

*D列に「発注番号」、E列に「名称」、F列に「番号」

このようなシートで、ユーザーフォームにて、「名称」(TextBox1)、「番号」(TextBox2)
を入力し、両方に一致する「発注番号」をリストボックスに表示したいと思っています。
発注番号は複数出てきます。
検索範囲は、1つのファイル内にシートが4枚ほどあり、"交換(平成26年)"・"解約(平成22〜24年)"・"解約(平成25年)"・"解約(平成26年)"で、それぞれ最大で500行ほどになります。
いろいろ、調べながらやってみたのですが、うまく出来ません。。。
どのようにしたらいいのでしょうか・・・

最新20件 最新50件 最新100件 最新200件 200件以前
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降

ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください^^

VBAのInternetExplorer操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE(InternetExplorer)操作にも挑戦してみてください^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

エクセルVBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

dmb.cgi Ver. 1.068
Copyright(C) 1997-2014, hidekik.com