アプリ版:「スタンプのみでお礼する」機能のリリースについて

EXCEL VBAで困ってます
アクティブなシートのセル番地"B1"に"外部"と値が入力されていて
同じアクティブなシートのセル番地"B2"に"仕様"と値が入力されています

これをネットワーク先にあるエクセルファイルの中に該当する値が入力されているか
を調べたいのですが、ロジックをどう書けば良いのかわかりませんので教えてください

例えばネットワーク先のファイルは仮に以下とします
\\EXCEL\VBA\MACRO\Reference.xls

このファイル内に上記の値が格納されています
ただ、外部については"内部/外部"と入力されており、"仕様"は同じです
ですので完全一致と部分一致(?)で比較をし、それぞれ"C1""C2"に合致すれば"○"、
無いもしく違えば"×"と値を返したいのです
尚且つ、ファイル内を指定するだけで、セル番地やシート名まで指定せずに比較したいのです

どうかご教授頂きますようお願い致します

A 回答 (3件)

補足要求です


>セル番地やシート名まで指定せずに比較したいのです
これは
\\EXCEL\VBA\MACRO\Reference.xls
のいずれかのシートにアクティブシートのB1(外部)とB2(仕様)と一致する文字列があったら"○"という判定をすればよいのですか?

実際にはありえないのかもしれませんが「外部」と「仕様」が別々のシートにあっても良いのでしょうか?

また「海外部門」のように部分一致でも"○"ですか
    • good
    • 0
この回答へのお礼

回答ありがとうございます
補足要求にお答えします

\\EXCEL\VBA\MACRO\Reference.xlsのいずれかのシートに「外部」と「仕様」が
別々にあっても構いませんし、一致する文字列があれば"○"という判定で大丈夫です
「海外部門」も"○"です

早速No.2でロジックを作って頂きありがとうございます
まずはそのロジックを使って試してみます
どうもありがとうございました

お礼日時:2007/02/17 15:20

#01です。

とりあえずReference.xlsのいずれかの同一シートにB1,B2の両方の値が存在する場合に"○"と判定するマクロにしてみました。

Sub Macro9()
Dim actSht, sht As Worksheet
Dim wkVal1, wkVal2, res1, res2
 Set actSht = ActiveSheet
 wkVal1 = ActiveSheet.Range("B1").Value
 wkVal2 = ActiveSheet.Range("B2").Value

 Workbooks.Open "\\EXCEL\VBA\MACRO\Reference.xls"
 For Each sht In Worksheets
  Set res2 = Nothing
  Set res1 = sht.Cells.Find(wkVal1, lookat:=xlWhole)
  '  部分検索なら xlWhole → xlPart
  If Not res1 Is Nothing Then
   Set res2 = sht.Cells.Find(wkVal2, lookat:=xlWhole)
   If Not res2 Is Nothing Then
     Exit For
   End If
  End If
 Next sht
 Workbooks("Reference.xls").Close False

 actSht.Activate
 If res1 Is Nothing Or res2 Is Nothing Then
   MsgBox ("×")
   'ActiveSheet.Range("A1") = "×"
 Else
   MsgBox ("○")
   'ActiveSheet.Range("A1") = "○"
 End If
End Sub
    • good
    • 0

#01です。

補足拝見しました。#02回答の
 For Each sht In Worksheets
から
 Next sht
までを以下に置き換えると、「外部」と「仕様」が異なるシートに存在しても"○"と判定します。今度は部分一致で判定させています。

 Set res1 = Nothing
 Set res2 = Nothing
 For Each sht In Worksheets
  If res1 Is Nothing Then
   Set res1 = sht.Cells.Find(wkVal1, lookat:=xlPart)
  End If
  If res2 Is Nothing Then
   Set res2 = sht.Cells.Find(wkVal2, lookat:=xlPart)
  End If
 Next sht

この回答への補足

>zap35さん
たびたびありがとうございます

早速試しましたら表示できました
ありがとうございます

私の質問に補足をさせて頂きますと
"B1"の「外部」には"C1"へ「○か×」を返し、"B2"の「仕様」には"C2"へ「○か×」を
返すような結果にしたいのです
そちらも教えて頂けますでしょうか
お願い致します

補足日時:2007/02/17 21:06
    • good
    • 0
この回答へのお礼

ありがとうございました
おかげさまで無事にロジックが作成できました
本当に助かりました
感謝いたします

お礼日時:2007/02/19 22:38

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