|
|
| Excel VBA Macro ・ セル制御 ・ FAQ |
|
ワークシート関数をVBAの中で使うには?
|
|
|
|
Question 20.4 |
|
 |
 |
|
|
|
マクロの中に、Excel95で覚えた関数を使用できますか。
|
|
Answer |
Copyright (C) 1999.4.27 永井善王 |
|
|
VBAでワークシート関数を使う方法は、2つあります。
その第1は、VBAからワークシート関数を呼び出す方法で、第2は、VBAを使ってセルにワークシート関数を挿入する方法です。
また、VBAに同じ機能があるために、わざわざ使う必要がないワークシート関数があります。たとえば、VBAでは & 演算子を使って複数の文字列を結合できるので、Concatenate関数は使わなくても済みます。
1. VBAからワークシート関数を呼び出す方法
・VBAのステートメントで使うことができるワークシート関数は、Excelのヘルプのトピックの検索で、「Visual Basicで使用できるワークシート関数一覧」を表示すれば、見ることができます。
・マクロの書き方
【 Excel 95 (97、98、2000) の場合 】
ワークシート関数を使うステートメントには、必ず Application識別子を付けて下記のように書きます。
合計 = Application.Sum(Range("A1:A5"))
【 Excel 97以上の場合 】
ワークシート関数を使うステートメントには、 Application.WorksheetFunction識別子を付けて下記のように書きます。
合計 = Application.WorksheetFunction.Sum(Range("A1:A5"))
・書き方の注意点
「引数にセル範囲の参照を必要とするワークシート関数を使う場合は、Rangeオブジェクトを指定しなければならない」というルールです。上記の例では、「Range("A1:A5")」の部分が、これに当ります。
きちんと Application( .WorksheetFunction)識別子を付けて書いたのに、うまく動かない場合、このルールを守っていない可能性があります。くわしく知りたければ、ここをクリックして見てください。
2. セルにワークシート関数を挿入する方法
関数をワークシートのセルにハンド入力したときと同じ状態を、マクロで作ります。例えば、下記のように書きます。
Range("A6").Formula = "=SUM(A1:A5)"
合計 = Range("A6").Value
この方法は、「Visual Basicで使用できるワークシート関数」以外の関数にも使えます。
なお、SUM関数の引数の文字列の作り方を知りたい場合は、「VBAでSUM関数をセルにセットするため引数の作り方を知りたい」のページを参考にしてください。
このホームページでも、Macroの Contentsのページの末尾に 「関数など」として一覧を掲載しています。そこに表示されている関数名をクリックすれば、その関数を使用しているページが表示されますので、使い方の事例を見ることができます。
また、ワークシート関数の中のデータベース関数については、ここをクリック して見てください。
|
|
|
|
| |
|
|