アドベントカレンダー 3日目
関数A、関数B、関数Cがあってがあって、
ボタンによって、処理を変えたい時どうしましょう?

こんな状態。
結論からいえば、マクロの登録をする際に、引数を渡して処理を切り替えればよいわけですね。
方法は、関数名と半角スペースと引数をシングルクォートで囲めばOKです。
ただし、文字列の時は引数の部分をダブルクォートで囲みます。
引数同士はコンマで区切ればOKです。
例をあげてみます。
ブック名:test.xls
関数名 :Argument
以下に文末登場する[型]はArgument側で用意する引数の型です
1.引数を設定しない時のマクロの設定
test.xls!Argument
2.引数に一つ数字を指定する時[Integer]
test.xls!'Argument 123'
3.引数に一つ文字列を指定する時[String]
test.xls!'Argument "abc"'
4.引数を複数を指定する時[Double, String]
test.xls!'Argument 123.4, "abc"'
5.引数に日付を指定する時[Date]
test.xls!'Argument "2012/12/3"'
6.引数に計算結果を渡すことも可能です[Integer]
test.xls!'Argument 3*4'
7.引数に文字列の結合を渡すのも可能です[String]
test.xls!'Argument "a" & "b" & "c"'
8.引数に関数を指定することも可能です[Date]
test.xls!'Argument Now'
test.xls!'Argument Date'
9.引数にがっつり関数を使っても問題ありません[String]
test.xls!'Argument Replace(Now(), ":", "-")'
もう、これだけ練習すれば今回の問題は簡単に解決できますね。
では、最初の問題に戻りますよっと。
関数A、関数B、関数Cがあってがあって、
ボタンによって、処理を変えたい時どうしましょう?

答え。
ボタン:関数ABC実行
→test.xls!'SampleCode True, True, True'
ボタン:関数AB実行
→test.xls!'SampleCode True, True, False'
ボタン:関数BC実行
→test.xls!'SampleCode False, True, True'
ボタン:関数A実行
→test.xls!'SampleCode True, False, False'
ボタン:関数B実行
→test.xls!'SampleCode False, True, False'
ボタン:関数C実行
→test.xls!'SampleCode False, False, True'
関数A、関数B、関数Cがあってがあって、
ボタンによって、処理を変えたい時どうしましょう?

こんな状態。
結論からいえば、マクロの登録をする際に、引数を渡して処理を切り替えればよいわけですね。
方法は、関数名と半角スペースと引数をシングルクォートで囲めばOKです。
ただし、文字列の時は引数の部分をダブルクォートで囲みます。
引数同士はコンマで区切ればOKです。
例をあげてみます。
ブック名:test.xls
関数名 :Argument
以下に文末登場する[型]はArgument側で用意する引数の型です
1.引数を設定しない時のマクロの設定
test.xls!Argument
2.引数に一つ数字を指定する時[Integer]
test.xls!'Argument 123'
3.引数に一つ文字列を指定する時[String]
test.xls!'Argument "abc"'
4.引数を複数を指定する時[Double, String]
test.xls!'Argument 123.4, "abc"'
5.引数に日付を指定する時[Date]
test.xls!'Argument "2012/12/3"'
6.引数に計算結果を渡すことも可能です[Integer]
test.xls!'Argument 3*4'
7.引数に文字列の結合を渡すのも可能です[String]
test.xls!'Argument "a" & "b" & "c"'
8.引数に関数を指定することも可能です[Date]
test.xls!'Argument Now'
test.xls!'Argument Date'
9.引数にがっつり関数を使っても問題ありません[String]
test.xls!'Argument Replace(Now(), ":", "-")'
もう、これだけ練習すれば今回の問題は簡単に解決できますね。
では、最初の問題に戻りますよっと。
関数A、関数B、関数Cがあってがあって、
ボタンによって、処理を変えたい時どうしましょう?

答え。
ボタン:関数ABC実行
→test.xls!'SampleCode True, True, True'
ボタン:関数AB実行
→test.xls!'SampleCode True, True, False'
ボタン:関数BC実行
→test.xls!'SampleCode False, True, True'
ボタン:関数A実行
→test.xls!'SampleCode True, False, False'
ボタン:関数B実行
→test.xls!'SampleCode False, True, False'
ボタン:関数C実行
→test.xls!'SampleCode False, False, True'
- Option Explicit
- Sub SampleCode(ByVal argA As Boolean, ByVal argB As Boolean, ByVal argC As Boolean)
- If argA Then Debug.Print "関数Aを実行"
- If argB Then Debug.Print "関数Bを実行"
- If argC Then Debug.Print "関数Cを実行"
- Debug.Print "---"
- End Sub
0 件のコメント:
コメントを投稿