• ベストアンサー

エクセルのマクロ 条件分岐?

VBA初心者です。よろしくお願いします。 相対参照で2つあるマクロ(マクロ名:コーヒーとマクロ名:紅茶)のうち条件をつけて片方を実行するようにしたいのですが、どのように記述したらできるでしょうか。 条件はアクティブセルがセルC1にある状態でセルA1に123と入力されているときに、コーヒーを実行してabcと入力されているときに紅茶を実行し、その返しをB1に入力します。

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

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

>条件はアクティブセルがセルC1にある状態でセルA1に123と入力されているとき… sub macro1()  on error resume next  if activecell.offset(0, -2).value = 123 then コーヒー  if activecell.offset(0, -2).value = "abc" then 紅茶 end sub sub macro2()  if activecell.address <> "$C$1" then exit sub  if raneg("A1").value = 123 then コーヒー  if range("A1").value = "abc" then 紅茶 end sub sub macro3()  select case cells(activecell.row, "A").value  case 123   コーヒー  case "abc"   おちゃ  end select end sub sub コーヒー() msgbox "こーひー" end sub sub 紅茶() msgbox "おちゃ" end sub それで? ご質問に書かれた「条件」のいったいどこら辺が「相対参照」なのでしょうか。

c7_d30ea200
質問者

お礼

お早い回答ありがとうございます。相対参照にしたいのは紅茶とコーヒーを実行することでアクティブセルが動くのでそのためです。さっそく教えていただいた方法でやってみます! あとから気づいたのですが最後のB1に入力するは関係なかったですね><

関連するQ&A

  • エクセルのVBA 条件分岐について

    エクセルのVBAで、条件分岐プログラムを考えております。 セルA1に入力された数値が、 2.0以下は"B1セルの値をC1セルへコピー 数値が 5.0以上の場合は"B2セルの値をC1セルへコピー それ以外の場合は”対象外”と表示させたいのですが ご教授お願いします。 又、条件分岐後の部分『C1セルへコピー』の部分を"マクロ1を実行" "マクロ2を実行"というように、変える様な事も出来ますでしょうか? 以上よろしくお願いします。

  • エクセルのマクロについて教えて下さい

    エクセルで、データ(書類)のコピー貼り付けのマクロを組みました。 ツール→マクロで、新しいマクロの記録から、実際にコピーをして貼り付けをし、記録の終了をしました。 次に他のセルの場所でもそのマクロを実行して、何度も場所を変えてコピー貼り付けを実行したいのですが、操作用のボタンを作成して貼り付け、ボタンを押すと、同じ場所でコピー貼り付けを繰り返します。 たしか絶対参照とか相対参照とかあったような気がするのですが…。 どうすれば、他の場所でもボタンを押すだけでコピー貼り付けのマクロを実行できるようになりますか? よろしくお願いします。

  • エクセルのマクロについて

    エクセルのマクロ実行についてですが、 例えば、 E1セルの値が1ならばこうする(マクロ名 E1セル1) E2セルの値が2ならばこうする(マクロ名 E1セル2) E3セルの値が3ならばこうする(マクロ名 E1セル3) というマクロを別々に作りました。 これをボタンで実行する時に、 If Range("E1").Value = 1 Then ElseIf Range("E1").Value = 2 Then 2行目には作ったマクロを全部貼り付けないといけないのでしょうか? それとも簡単にこの場合は、マクロ名E1セル1を実行するという命令することができるのでしょうか? できるのであれば、入力方法を教えてください。 質問が分かりにくいと思いますが、よろしくお願いします。

  • エクセル マクロ 行 非表示

    マクロについてご教授お願い出来ないでしょうか。 マクロ初心者です。 エクセル アクティブセル(ex A120セルやA20セル)の行から1行目までを非表示にさせるマクロがわかりません。 アクティブセルから下の行を非表示にさせるマクロは下記URLにて紹介がありましたが・・ https://www.relief.jp/docs/excel-vba-hide-below-active-cell.html また、もし可能でしたら、アクティブセルからA2行目までの非表示、つまり 1行目は残すマクロが可能でしたら、合わせてご教授どうぞよろしくお願い致します。 

  • VBA アクティブなセルのシート名を取得したい

    エクセル2010使用です。 VBAで、アクティブなセルのあるシート名を取得する方法を教えてください。  マクロ.xls (マクロシートA1) ←今回のマクロを書き込んだファイル  参照.xls (参照シートA1)  入力.xls (入力シートF3) この3つのエクセルファイルを開きます。 ( )内はそれぞれの前面にあるシート名と選択されたセルです。 入力シートのF3にカーソルをおいて下記マクロを実行すると   MsgBox ActiveSheet.Name & ActiveCell.Address 「マクロシート F3」と返されます・・・ ほしい結果は「入力シート F3」なんです。 このような場合にアクティブセルのあるシート名を取得する方法があれば教えてください。 よろしくお願いいたします。

  • マクロでの相対参照ペースト

    (マクロ・VBA初心者です・・・・・・) 職場で使用している掲示板で、読んだ人がチェックする為に、 書き込みの後に名前のリストをコピー→貼り付けしています。 これをマクロを使って、任意のセルを選んでマクロを実行すれば リストが貼り付けられるようにしたいのですが、貼り付けがうまく行きません。 マクロの記録で行っているのは、 (1)名前のリストをコピー(絶対参照) (2)コピーしたリストを貼り付け(相対参照) なのですが、貼り付けが相対参照で行われず、絶対参照で行われてしまいます。 記録終了バーが相対参照になっているのは確認しているのですが・・・・・・。 自分なりにマクロの本を読んだりネットで探してみたりしましたが、 基本的なこと過ぎるのか解決策が見つからず、途方に暮れて質問させて頂きました。 もしかしたら何か基本的なところを見落としているかもしれませんが、 何卒宜しくお願い致します。

  • エクセルのマクロで特定セル(最終セルの1つ下)への移動方法を教えて下さい

    エクセルでデータの最終セルのもう1つ下のセルに移動する マクロを作れますか?  例えば、住所録をリストで作成していたとします。 マクロを実行したら、新規レコードを入力するセル (*が入ってるセルです)にアクティブセルを移動する ・・・というマクロです。 コードの方法は教えてもらったのですが、コードがわからない方に 教えてあげたいのですが、マクロの記録でも同じことができますでしょうか?  よろしくお願いします!!

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

    エクセルのVBA 相対参照についての質問です。 VBA初心者ですが、困っております。 難しいのですが、詳しい方にご教示頂けると幸いです。 【分らない点】 アクティブセルに対応して、別のシートからそのアクティブセルと同じ列にあるセルの値を参照する。 【前提設定】 (1)工事金額のデータベースとなるシート(数か月分の工事金額・階数が記載)、予定表となるシートがある。 (2)予定表にはデータベースから値を参照したいが、いつ工事が発生するか、どの階数なのか、は分からない。 (3)予定表の○月・○階数の部分にセルを置き、VBAを実行すると、その階数に対応する工事金額を、そのアクティブセルの位置から貼り付けたい。 【具体例】(アンダーバーは無視してください) データベースシート __1カ月 2カ月 3カ月 4カ月 1階_12_13__14__15 2階_25_26__27__28 3階_31_32__33__34 4階_44_45__46__47 予定表シート __1月 2月 3月 4月 5月 6月 1階 2階___25 26 27 28 3階 4階___ _44 45 46 47 ※上は理想イメージで、予定表の2月の2階にアクティブセルを置き、マクロを実行したとき、データベースの2階の1カ月目~4カ月目の工事金額のデータを参照した場合。 4階は3月から工事が発生し、対応する4階の工事金額を参照した場合。 データベースは常に1カ月目からの参照が必要です。 【不明な点】 『アクティブセルと同じ列』での『異なるシート』からの参照ができません。 アクティブセルの位置は変わるのに、自分でマクロを組むと、異なるシートの同じ位置から常に参照されてしまいます。 自分でも試したのですが、うまく参照されません。 わかり辛い例ですが、ご教示頂けると幸いです。 よろしくお願い致します。

  • エクセルのマクロについて教えてください

    作業が面倒だし、間違いもよく発生するので、 下の条件のマクロをどなたか教えて頂けませんか? 宜しくお願い致します。 社内のサーバーにエクセルファイル名、AからZまであるとします。 各AからZにそれぞれ同じシート名「集計」があるとします。 そのシート内にデータが色々あるとします。 ある決まったセルだけを削除するのではなく、セルの色だけで判断してデータを削除したいのです。 例えば、赤色のセルになっている部分だけを対象に 入力されている数字を消したいのです(行削除ではなく、単純にデリートです)。 上記をマクロで実行する方法はないでしょうか。 マクロ初心者なので、プログラム言語の下に簡単な説明を頂けると助かります。 どなたか詳しい方がいらっしゃいましたら、宜しくお願い致します。

  • 繰り返し処理のマクロ

    下記のマクロをご教示いただけるでしょうか。 ①シートAのアクティブセルをコピーし、シートBのE1セルにペースト ②マクロ「結果反映」を実行 ➂シートAのアクティブセルを1行下に移動 ①から➂をアクティブセル=空白セルになるまで繰り返し

専門家に質問してみよう