プロが教える店舗&オフィスのセキュリティ対策術

こんにちは

都内でNWエンジニアをしているものです。

VBA全くの初心者ですが、今まで自分で調べてきて
欲しい情報がなかなかえられていない状態なので、
皆様からのヒントを頂きたく投稿させて頂きました。

内容を下記いたします。

【概要】
・Excelにて10以上のシートに渡ってIPアドレス(数字)を管理しているブックがあります。
・IPアドレスは1~4オクテット各別々のセルに記載されています。
(※例:画像「Ex1」をご参照ください※)

【やりたいこと】
・既存のIP管理ブックに「検索」シートを挿入し、その中に「検索」ボタンを1つ作成します。

・VBAにて検索フォームを作成し、
 ユーザーフォーム中にテキストボックスを4つ、コマンドボタンを1つ作成します。


・シート内に作成した「検索」ボタンを押すと、「検索」フォームがポップアップする
 ように「検索」ボタンにマクロを登録します。
(※ここまではなんとかできました※)

※以下の部分がどのようにしたらよいのか困っています※

・ポップアップされてきたユーザーフォーム中の
 各4つのテキストボックス中にIPの数字を入力した上で、
 ユーザーフォーム中のコマンドボタンを押すと検索を開始し4つのテキストボックス中の
 数字に全て合致したセルまたは行へシートを跨いで移動する。
 ということを行いたいのです。

どのような構文が必要になってくるのかが
まったく見えていないのが現状です。

何卒皆様のご助力を頂きたくお願い申し上げます。

「VBA での複数シートに渡る複数条件検索」の質問画像

A 回答 (2件)

合致したセルがあったとしてどうしたいのでしょうか。


そのセルの内容を修正したいとかであれば、いったんマクロを終了して
ユーザーフォームを閉じる必要があるので、使いやすいとは思えないのですが
とりあえず、考え方です。
Private Sub CommandButton1_Click()
For i = 2 To Worksheets.Count
For j = 2 To Worksheets(i).UsedRange.Rows.Count
If Worksheets(i).Range("B" & j).Text = TextBox1.Value And _
Worksheets(i).Range("C" & j).Text = TextBox2.Value And _
Worksheets(i).Range("D" & j).Text = TextBox3.Value And _
Worksheets(i).Range("E" & j).Text = TextBox4.Value Then
MsgBox i & "番目のシートの" & j & "行目に存在します。"
Exit Sub
End If
Next
Next
MsgBox "存在しませんでした"
End Sub
最初の For i=2 To で2番目のシートから最後のシートまでの繰り返し
次の For j=2 To でそのシートの2行目から最後の行までの繰り返し
If文で B列、C列、D列、E列とそれぞれのテキストボックスの文字が同じであれば
メッセージを出して終了です。

アドバイスですが、データのシートを
区分け IP  マスク とひとつのシートにまとめてしまったほうが使いやすいはずです。
区分けごとに別シートに抽出する必要があれば
もうひとつ抽出のシートを準備して
A1セルに 区分けする 内容 をいれたら、条件にあったデータがそのシートに表示される
仕組みを考えます。
シートは2枚ですみます。検索や移動も簡単です。
    • good
    • 0
この回答へのお礼

ありがとうございます!!

本当に助かりました。

今後ともよろしくお願い致します。

お礼日時:2011/05/15 20:38

>数字に全て合致したセルまたは行


この検索について
4つのデータの実例と複数シートの実例と
それによって、複数のシート上で行うべきことを、(プログラムを離れて)文章で!(箇条書きで)、説明してください。
>または行
セルなら判るが、なぜ「行」が出てくるのですか。
>へシートを跨いで移動する
これは何のこと。移動してどうする?
単に10枚のシートの範囲に、検索範囲を広げるということでは。
10枚のシートはエクセルでの「作業グループ」にして、ある1語句を10シート全部について、1検索で検索できるようだが。
よくあるケース(例えば10枚のシートをすべて探して、該当があれば何かするなら普通のケースと思う)でもなさそうなので。
>見つかった場合にどういうことをするのか
>NWエンジニアといっている割には他人に情況を説明するのが不十分では。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。

説明が足りず申し訳ございません。
エンジニアとしてもまだまだということがわかりました。

それはさておき、
ただやりたいことは、
同じブック中の10シート以上ある中の全シートを検索対象として
・ユーザーフォーム上の4つテキストボックスにそれぞれ数字を入力。
・同ユーザーフォーム中にあるコマンドボタンを押すと、上記で入力した数字4つに
 すべて合致するセルを検索する。
 
・見つかった場合に該当するセルへ移動する。
・見つからない場合はメッセージを返す。
ということですが、まだ足りない点はご指摘頂ければ幸いです。

お礼日時:2011/05/15 17:01

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