シートからの値の取得と書き出し

セルに打ち込まれた数字、あるいは文字をプログラム内に変数として取り込んで計算や文字列処理を行
えると、表計算のみでは行うことができなかったさまざま処理を行うことが出来ます。

今回はまずマクロ操作で出来るセルからプログラムにデータを取り込み、その処理を行った後、再び セルに書き出しを行うことをやってみようと思います。

セルから値の取得と書き出しの場合にもセルの参照方法として絶対参照と相対参照があります。 帳票のタイトルや日付など位置の変わらないものは、絶対参照 表の各項目を順番に参照する場合には相対参照と、使い分けると便利です。


データの取り込み(絶対参照)

現時点のセルの位置とは関係なしに、指定したセルの値を取得します。

文法)
[変数名] = Range("[セル位置]")

例えばセル位置"A2"の値を変数名Xに取り込みたい場合には

例)
X = Range("A2")

とすれば値が取得できます。


データの取り込み(相対参照)

現時点のセルの位置から、指定したセルの値を取得します。

文法)
[変数名] = ActiveCell.Offset([縦移動数],[横移動数])

例えば今のセル位置から"下へ5","右へ3"進んだ位置の値を変数名Xに取り込みたい場合には

例)
X = ActiveCell.Offset(5,3)

とすれば値が取得できます。


データの書き出し(絶対参照)

現時点のセルの位置とは関係なしに、指定したセルに値を書き出します。

文法)
Range("[セル位置]")FormulaR1C1 = "[値]"

例えばセル位置"A3"に値"bbb"を書き出したい場合には

例)
Range("A3").FormulaR1C1 = "bbb"

とすれば値が書き出されます。


データの書き出し(相対参照)

現時点のセルの位置から、指定したセル位置に値を書き出します。

文法)
ActiveCell.Offset([縦移動数],[横移動数] ) = "[値]"

 

例えば今のセル位置から"下へ2","右へ3"進んだ位置に値"ccc"を書き出したい場合には

例)
ActiveCell.Offset(2, 3) = "ccc"

とすれば値が取得できます。


プログラムサンプル

以上をふまえて、サンプルプログラムを用意しました。

Sub mojituika()
'A1セルとB1セルに書き込んだ内容を取り込み
'内容を変更の上、A3セルとB3セルに書き出します。
'A列は絶対参照、B列は相対参照しています。
'

Range("A1").Select
num1 = Range("A1")
str1 = ActiveCell.Offset(0, 1)

num2 = num1 + 2
str2 = str1 + "もじ"

Range("A3").FormulaR1C1 = num2
ActiveCell.Offset(2, 1) = str2

End Sub

 

エクセルファイルのダウンロードはこちら
*お勧め
マクロウィルス等の不安のある方は上記を VBエディターへコピーペーストしてください。

クリックで拡大

セルにあらかじめデータを入れておきました。無くても今回は加えるプログラムなので問題なく動くと思います。
(割り算のプログラムの場合は要注意)

クリックで拡大
【メニュー】ツール→マクロ→マクロを選択します。

【マクロ】ダイヤログボックスが表示されます。
他に開いているマクロプログラムがあれば、ここに一覧として表示されます。
目的のプログラムを選択して実行します。

クリックで拡大

プログラムどおりに実行されたのが確認できるかと思います。



以上でエクセルのセルにあるデータをプログラム内の変数として取り込み、何らかの処理を行った上で、
また、セル上に書き出すことが出来ました。見積書や、技術計算など表計算機能だけでは難しかった計
算や文字処理を自動で処理をする有効な手段になると思います。

ページトップへ