
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
ちょっとマクロの説明をしておきます。
まず、マクロを使用するにはボタンを押した時に
色をつけたり計算をさせたりするよく質問されている
マクロと今回のケースのように関数として使用
するマクロがあります。
前者のケースではマクロの定義は
例)
Sub test()
・・・
End Sub
となりますが、関数として使用する後者では
例)
Function test() as String
・・・
End Function
と定義するようになります。
※as Stringは固定定義ではありません。
ここで、SubとFunctionの違いですが簡単には
戻り値があるかないかと言うことです。
rikamiさんは数式の関数としてマクロを使用したいと言う
ことなのでFunctionで定義して使用するようになります。
-------------------------------------------------
補足の「"macro1 - Test"の部分が・・・」ですが前回
回答した例題は、戻り値をStringとしているので戻り値
のサンプルとしてを"macro1 - Test"と定義しています。
ですのでここは変更してもらって構いません。
>…それともその中身に計算を入れていくのでしょうか?
はい、そのようになります。
ですが、ここで注意点です。Functionの中ではセルを
指定して値の入力はする事が出来ません。
例)
….Cells(1.1).Formula = "B1 + C1"
※このような定義は出来ません。
ですので、実際の計算をFunction内で済ませておいて
結果を返すようになります。
それを含めて再度サンプルを記述させていただきます。
○サンプルの説明
セル(A1)に"a"を入力すると、セル(D1)の結果は、7
セル(A1)に"b"を入力すると、セル(D1)の結果は、3
セル(A1)に"c"を入力すると、セル(D1)の結果は、10
セル(A1)に上記以外を入力すると、セル(D1)の結果は、"FALSE"
となります。
○サンプル
以下のような表があるとします。
・表
A B C D
1 a 5 2 (*A)
※*Aは、以下の数式を使用します。
=IF(A1="a",macro1(),IF(A1="b",macro2(),IF(A1="c",macro3(),FALSE)))
・マクロの定義
Function macro1() As Single
'セル(B1)とセル(C1)の和
macro1 = Cells(1, 2) + Cells(1, 3)
End Function
Function macro2() As Single
'セル(B1)とセル(C1)の差
macro2 = Cells(1, 2) - Cells(1, 3)
End Function
Function macro3() As Single
'セル(B1)とセル(C1)の積
macro3 = Cells(1, 2) * Cells(1, 3)
End Function
※今回は、文字ではなく数値(整数,負数,少数を含む)を返す
のでmacro1,macro2,macro3はas Singleと定義しています。
いろいろと長くなったので、わかりづらくなったかも
しれませんが、一度サンプルを動作させて見てください。
なんとなくでも、流れがわかるかもしれませんので。
ではでは。
No.2
- 回答日時:
まず、セルの中の記述は以下のように
=if(A1=a,macro1(),if(A1=b,macro2(),if(A1=c,macro3(),false)))
マクロは以下のように記述すれば出来ます。
Function macro1() As String
macro1 = "macro1 - Test"
End Function
Function macro2() As String
macro2 = "macro2 - Test"
End Function
Function macro3() As String
macro3 = "macro3 - Test"
End Function
望んでいる程度がわからないのでこの程度しか
回答できないです。
この回答への補足
投稿ありがとうございます。
行いたい事は、エクセルのシート上で、trueのある位置によって、"A""B""C"と返すようになっていて、その"A""B""C"の値によって、それより下のセルの計算方法が違ってくる。と言うものです。
"macro1 - Test"の部分が良く解らないのですが、私のマクロ内に記述しても大丈夫なのでしょうか?それともその中身に計算を入れていくのでしょうか?
よろしく御願い致します。
No.1
- 回答日時:
Function bunki()
If Range("A1") = "a" Then
Call macro1
ElseIf Range("A1") = "b" Then
Call macro2
ElseIf Range("A1") = "c" Then
Call macro3
End If
End Function
自信ありませんがどうでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
エクセルのマクロをセルの値に応じて自動起動したい
Visual Basic(VBA)
-
EXCEL あるセルに数字が入力されれば既存マクロ実行させたい
Excel(エクセル)
-
IF関数を使ってマクロを実行させるには?
Excel(エクセル)
-
4
セルの値が変ると自動でマクロが実行される。
その他(Microsoft Office)
-
5
エクセル マクロの実行について
Excel(エクセル)
-
6
セルに入力するたびにマクロを実行する
Visual Basic(VBA)
-
7
エクセルでセルに文字が入力されたらマクロを実行
Excel(エクセル)
-
8
EXCELでセルの値が変化したときだけにマクロ実行
Excel(エクセル)
-
9
マクロ 実行ボタンを押さずに常に実行
Excel(エクセル)
-
10
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
11
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
12
Excelでマクロ実行中に画面を固定する方法
Visual Basic(VBA)
-
13
セルの内容の条件に応じて図形の表示をしたりしなかったりする
Excel(エクセル)
-
14
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
15
VBAで空白セルにのみ数値を代入する方法
Excel(エクセル)
-
16
あるセルに特定の文字列を打つと、他のセルに決められた文字が自動入力するように
Excel(エクセル)
-
17
エクセルでプルダウン選択されたらマクロの処理を実行させる方法
Word(ワード)
-
18
VBAでセルに値が入ったときにイベントを起こしたい
Visual Basic(VBA)
-
19
複数マクロの選択実行方法を教えて下さい
その他(Microsoft Office)
-
20
【Excel VBA】セルの値が変更されたらマクロを実行
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
if関数とifs関数は組み合わせる...
-
5
Excel VBA、 別ブックの最終行...
-
6
特定のセルが空白だったら、そ...
-
7
vbsのセル値の取得について
-
8
セル色なしの行一括削除
-
9
VBAコマンドボタンを押すたびに...
-
10
エクセル マクロで セルの範...
-
11
エクセルvba:自己セルの情報取...
-
12
エクセルの複数データーをダブ...
-
13
連続する複数のセル値がすべて0...
-
14
【VBA】指定したセルと同じ値で...
-
15
TODAY()で設定したセルの日付...
-
16
ExcelVBAで、選択範囲内で同じ...
-
17
Excelで指定した日付から過去の...
-
18
エクセルVBAで、非表示にし...
-
19
screenupdatingが機能しなくて...
-
20
Application.Matchで特定行の検索
おすすめ情報
公式facebook
公式twitter