【VBA】セルに数式を代入する - formulaプロパティ
作成者:manplus 作成日:土, 11/02/2013 - 22:06VBAでセルに数式を代入したい場合、単純に数式(「=」で始まる文字列)を代入すれば可能です。
特にここでformulaプロパティを使用する必要はありません。
1 | Range("A4") = "=SUM(A1:A3)" |
式自体を取り出したい場合はformulaプロパティを使用します。
VBAでセルに数式を代入したい場合、単純に数式(「=」で始まる文字列)を代入すれば可能です。
特にここでformulaプロパティを使用する必要はありません。
1 | Range("A4") = "=SUM(A1:A3)" |
式自体を取り出したい場合はformulaプロパティを使用します。
シリアル値とは、日付を演算しやすくするために(例えばある日付とある日付の差を求めるなど)、数字に置き換えたものです。1900年1月1日を「1」とし、以降1日で1増加します。
一つのプロシージャに全ての処理を書こうとすると、ソースが非常に見づらくなり、デバックも大変になります。
そこで、処理ごとにサブルーチンに分けて書くことが求められますが、サブルーチンの呼び出しなのか、VBAの命令なのか判別しにくい時があります。
このような問題を回避するために、サブルーチンの呼び出しにCall ステートメントを使って行うようにすれば、解決することができます。
Excel VBA等で、少量のデータでは特に問題は起きないけれども、大量データを動作させると何故か途中で止まってしまうなど、プログラムが安定して動作しないことがあります。
このような場合、オブジェクト型関数が悪さをしている可能性が高いので、プログラム中で使わなくなったオブジェクト型変数は開放するよう、なるべくプログラムでそのように記述しましょう。
Dim A as Object |
オブジェクト変数はこのように宣言し、使用の際には以下の様な記述がなされます。
Set A = Range("A1") |
使い終わったら以下のように開放するようにしましょう。
データの並び替え、削除など、セルに対する処理途中の経過がVBA実行時にExcel上に表示されますが、これによってかなりマシンパワーを消費しています。
処理途中の経過を敢えて見せる必要が無いのであれば、画面表示は省略すべきです。
以下のコードを処理の始めに記述します。
Application.ScreenUpdating = false |
これにより、画面処理が省略され、プログラムの処理速度が上がります。セル操作による画面表示は特に負荷の高い部分ですので、プログラムの内容にもよりますが、半分以上処理時間を短縮できることもあります。
プログラムの終わりには以下の記述をし、画面表示が行われるようにしてください。
VBAにはSplit関数が用意されており、これは指定した文字で文字列を分割、配列に格納してくれる便利な機能です。
※Split関数の書式
Split (文字列, 区切り文字) |
但し、ここで指定できる区切り文字は1種類かつ長さが1文字までという制限があります。
では、2種類以上の文字や長さが2以上の文字列で分割したい場合はどうしたら良いでしょうか?
一見、難しそうに見えますが、処理は非常に簡単で、Replace関数を使います。
Replace関数は以下の様に指定した文字列内の単語を別の単語に置き換えます。
※Replace関数の書式(簡易型)