• ベストアンサー

VBA_イコールではない時に○○と表示する方法

VBA初心者です。A,B,Cのブック間のシート1のセルA1がそれぞれイコールでない時に「AとBはイコールではありません」、「BとCはイコールではありません」、「AとCはイコールではりません」それ以外のときは「すべてイコールです」と表示したいのですがIFを試してみたのですがうまく作成できません。どなたか教えてくださいませ。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

[ご質問のメッセージを出すには] sub macro1() dim a,b,c a = workbooks("A.xls").sheets(1).range("A1").value b = 同上 c = 同上 if a<>b then msgbox "A<>B" if b<>c then msgbox "B<>C" if c<>a then msgbox "C<>A" if a = b and b = c then msgbox "A=B=C" end sub

su_guru
質問者

お礼

早速教えていただきありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

現状のメッセージの出し方だと、多分すっきりしないと思います。 メッセージの内容を以下のように変えてみてはいかがでしょうか。 【例1】「A=1、B=1、C=2」の場合 <現状で出すことになるメッセージ>  「AとBはイコールではありません」(A(=1)≠C(=2))  「BとCはイコールではありません」(B(=1)≠C(=2)) <変更後のメッセージ>  「(AとBはイコールですが) Cはイコールではありません」 【例2】「A=1、B=2、C=3」の場合 <現状で出すことになるメッセージ>  「AとBはイコールではありません」(A(=1)≠B(=2))  「BとCはイコールではありません」(B(=2)≠C(=3))  「AとCはイコールではありません」(A(=1)≠C(=3)) <変更後のメッセージ>  「すべてイコールではありません」 上記のようなメッセージでよければ、以下のような分岐にできます: If A = B And B = C Then   MsgBox "すべてイコールです" ElseIf A = B Then   MsgBox "Cはイコールではありません" ElseIf B = C Then   MsgBox "Aはイコールではありません" ElseIf C = A Then   MsgBox "Bはイコールではありません" Else   MsgBox "すべてイコールではありません" End If ・・・以上、参考まで。

su_guru
質問者

お礼

返答ありがとうございます。A=Bの時にCはイコールではありません。ではなくA=Bではありませんとどうしても表示したかったので大変参考になりました。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルVBAでブック間のコピーをしたい。

    エクセルVBAでブック間のコピーをしたい。 エクセルのVBA初心者です。 複数のブックが開いている時(ブックA,B,C...)に、今選択しているブックAのあるセルを、直前に選んでいたブックBやC(そのつど変わります)にコピーする方法は有りますでしょうか? どなたか教えて下さい。

  • エクセルVBAについての質問です。

    エクセルVBAについての質問です。まったくの初心者です。 閉じたままの他のブックBのSheet1 C7セルからデータを取得して作業中のブックA Sheet1 H7セルに記入したいのです。 どうかご指導お願いいたします。 まったくの初心者で、本やネットを漁っているのですが、何日かかってもできません。センスないんだと思いますが、あきらめきれずの質問です。アドバイスいただけると幸いです。

  • Excel_VBA_二つのブックで数値を確認する方法

    VBA初心者です。AとB2つのブックがありそれぞれのセルA1が同じであれば「同じです」とメッセージを表示し違っているれば「数値が違います」と表示をしたいのですがどのようにVBAをさくせいしたらよいのでしょうか?どなたか教えてくださいませ。

  • VBAにてデータを振り分けたい。

    2つのシート(sheet1、sheet2)があり、sheet2に振分けるデータ(下表)を作成しておきます。   (列)  A   B   C   D (行)   1     山   川   地   空  2     ○   △   ×   □  3     ア   イ    ウ   エ (1)ユーザーフォームを作成し、その中にコンボボックスを作成して山を入力する。 山は、セルA1へ、川は、セルB2へ、地は、セルC3へ、空は、セルD1、それぞれ 決められたセルにコピーされる(すべてsheet1へコピー)。 (2)にコンボボックスにて○を入力する。○はセルA1へ、△は、セルB2へ、×は、 セルC3へ、□は、セルD1へ、それぞれ決められたセルにコピーされる(すべて sheet1へコピー)。 ちなみに(1)と(2)のコピーされるセルの位置は同じ場所です。 というようなものをExcelのVBAにて作成したいのですが、VBAは、まだよくわかりません。 出来れば、sheet1のセルに数式などを入力したくはないのですが...。 どうか皆様のご指導を宜しくお願い致します。

  • 【EXCEL VBA】あるシートの表示・非表示の判断

    WindowsXP、Excel2003を使用しています。 ブックに、 Sheet_A・Sheet_B・Sheet_Cと3枚のシートがあります。 If文にて、 Sheet_Aが表示されているならば、非表示にする Shees_Aが非表示ならば、表示させる と書きたいのですが、コーディングを教えていただけますでしょうか? よろしくお願いします。

  • VBAでのブック・シートの保護・解除について

    エクセル2010のVBAでのブック、シートの保護&解除の方法について教えて頂きたく、 質問させて頂きます。 消されては困るシートや数式がある関係で、ブックオープン時にVBAでブックとシートにそれぞれパスワードをかけて保護しています。 VBAではシートの削除、作成、コピーなどを行っているため、VBA実行時のみ、保護を解除させるようにしたいと思います。 ただ、対象のシート自体にも入力したい項目があるため、その箇所については保護を解除しておく必要があります。 そして、VBA実行後、再度、その箇所以外にパスワードで保護をかけ直します。 イメージとしては下記のような流れになります。 対象ブック:ブックA 対象シート:シート1 パスワード:1234(それぞれ) 常時保護を解除しておきたいセル:range("A6:H106") 1.(オープン時には、)ブック保護&特定のセル以外のシート保護 2.VBA実行時には全ての保護解除 3.VBA終了時に、1の状態に戻る どうぞよろしくお願い致します。

  • エクセルVBAで複数のファイルをひとつにまとめる

    はじめまして。 VBA初心者で恐縮なのですが、教えてください。   ブックAAAがあるフォルダ内に複数ある「***.xls」の全てのフイルのシート「A」内の特定のセル(A1:F30)の文字列を、全てブックAAAの1つのシートの特定の列(A:F)に重ねてまとめたいと思っています。 但し、シート「A」は非表示となっていて、また、「***.xls」のファイルは全て「ブックの保護」がかかっているため、シート「A」を表示させるためにはパスワードの入力が必要となります。 これをVBAを使って実行することは可能でしょうか。複雑で手に負えず行き詰っています。 どなたかご存知の方いらっしゃいましたらご教授願います。 エクセル2007を使用しております。  

  • Excel マクロ・VBAの印刷方法について

    急ぎの回答です!! 関数式の入っているセル(空白表示)を印刷範囲に入れずに印刷する方法を教えてください。 別シートのデータを関数で引っ張てきてひな形のセルに表示しています。 行→$1:$6 列→$A:$Agは印 刷タイトルに設定。 A列7行目から1.2.3... とNo.が入っており、 B.~J. 列7行目からはデータが最終の50まで入力してます。( 関数式=IF(COUNTIF(コード,$S$1)<ROW(A1),"",OFFSET([元リスト.xlsx]商品一覧!A1,MATCH($S$1,コード,0),1)) ) K.~AG.列7行目からは書式データ(同じ文面の繰り返です。最終の50まで入っています)B~J列の7行目から関数(データ)=IF(COUNTIF(コード,$S$1)<ROW(A1),"",OFFSET([元リスト.xlsx]商品一覧!A1,MATCH($S$1,コード,0),1))をコピぺと一部を変更しセルへ入力して別シートからデータを引っ張てきてます。この関数だと該当する値がない場合はセルは表面上は空白セルに見えますが、セルには数式が入っている状態です。セルデータの最終行を習得し印刷に設定すると関数入力されているところで最終行と認識し、関数式を入れている50行まで印刷してしまいます。 したいことは、データが表示されている30行までなら30行まで印刷という感じにはできないでしょうか? シートを様式一枚ずつ作成しており、1ブックには20シートずつ保存しています。そしてこのブックはおよそ30ブックあります。 1ブック内の全てのシート(20シート)に反映できるようしたいです。 ※30行までデータが表示されている場合、C~Jには途中とちゅうで空白欄がありますが、B列は30行全てデータの表示(該当する場合)されます。 Excel マクロ VBA に詳しい方回答お願いします! B7からはB56まですべて関数式を入力しています(最大50までデータが表示されるように) シート枚数と、元のデータ数が行で7000程とかなり多く、このような関数式になりました。できればマクロ、VBA等での処理が望ましいです(時間がないので><)よろしくお願いいたします!!!

  • EXCEL VBA ポップアップを表示する方法

    ご質問させていただきます。 Sheet1のA2~A1701まで4桁の数字(各行で重複しない4桁の数字です)、 Sheet1のB2~B1701とSheet1のC2~C1701にはDDEで取り込んだリアルタイムデータ、 Sheet1のD2~D1701には、B2~B1701とC2~C1701のリアルタイムデータを使ってIF関数で条件判定をしてYESまたはNOを表示する関数式が入力されています。 やりたいことは、D列の条件判定でYESが表示された場合、YESが表示された行のA列の4桁の数字をポップアップで表示させることです。 このようなことはできるのでしょうか? メッセージボックスを使えば良いのかもしれませんが、当方VBA初心者のためメッセージボックスの使い方がよく分かりません。 どなたか教えていただけないでしょうか? よろしくお願いいたします。

  • エクセルの色も=イコールできますか?

    すみません。 エクセルでどうしても分からないことがあるので教えて下さい。 例えば、Sheet2のA1のセルをSheet1のA1セルと同じ内容になるようにしたいのです。 初心者なので、Sheet2のA1セルに=Sheet1!A1までしか分からないのです。 セルの色をグレーに塗りつぶしているので、グレー色も=イコールを使えませんか? よろしくお願いします。

専門家に質問してみよう