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

Excel2002のユーザーです。

実行させたいマクロを
Macro1、Macro2 とします。
セルA1の値を参照して実行させたいマクロを選択するために

=IF(A1=1,Macro1(),Macro2())

というようなことをやってみたのですがうまくいきません。
このようにIF関数を使ってマクロを実行させるにはどのような記述をすればよいのでしょうか。

凄く簡単なことかもしれませんが、ご教授をよろしくお願い致します。

A 回答 (5件)

その形ではマクロは実行できません。


出来ても簡単ではありませんし、幾つも制限があります。


Sub a()
~~
End Sub

Sub b()
~~
End Sub

Function cx(c)

If c = 1 Then
Call a
cx = "A"
Else
Call b
cx = "B"
End If

End Function

のように、自作関数 CX() を作って、セルに「=CX(A1)」のように記入すれば、実行できます。

ただし、どのマクロからも、他のセルに値を記入する事はできませんので、Function cx(c) ではなく、sub cx() として作成して、ボタンを作って実行させるのが良いとおもいます。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
教えていただいた例を参考に組んでみましたら
希望通りの結果を出せました。
自作関数という手があったのですね。勉強になりました。

お礼日時:2004/06/20 00:35

他のマクロを Private にしておいて、Start を実行するとか、、、



Sub Start()
 If ActiveSheet.Range("A1").Value = 1 Then
   Call Macro1
 Else
   Call Macro2
 End If
End Sub

Private Sub Macro1()
  MsgBox "Macro1"
End Sub

Private Sub Macro2()
  MsgBox "Macro2"
End Sub

それともセルの値が変わった時に実行させたいのかな?
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
そうです。セルA1の値が変わって、初めてマクロを実行させたいのです。
質問の内容が分かりづらくてすみません。

お礼日時:2004/06/20 00:13

「ツール」>「マクロ」>「Visual Basic Editor」を開いて、以下のようにひとつのマクロにまとめてはどうでしょうか?



Sub test()
  If Range("A1").Value = 1 Then
    Range("B1").Value = 1  ・・・A1が1のときに行いたい処理
  Else
    Range("b1").Value = 0  ・・・A1が1以外のときに行いたい処理
  End If
End Sub
    • good
    • 0
この回答へのお礼

すばやいご回答ありがとうございます。
No4.の返答通り、質問が分かりづらくてすみません。

お礼日時:2004/06/20 00:14

定義してあるマクロをFunctionで定義しなおしたらどうでしょう?


(自信全くなし m(_ _)m)
    • good
    • 0
この回答へのお礼

すばやいご回答ありがとうございます。
No4の返答通り、質問が分かりづらくてすみません。

お礼日時:2004/06/20 00:14

それは、マクロの方で条件判断してやればいいだけの話では?



procedure @@@()
if sheet1.range("a1").value<>1 then
exit
else
...
...
...
end if
end

みたいな感じで。
    • good
    • 0
この回答へのお礼

すばやいご回答ありがとうございます。
No4の返答通り、質問が分かりづらくてすみません。

お礼日時:2004/06/20 00:15

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A