エクセルVBA超入門 コピー&貼り付け

自分でどんどん勉強する方法は、どんどんマクロを記録して、生成されたプログラムコードを見ればいいのです。

では、A1とB1セルに 1 を投入して、C1 と C2 で[A1~B1]の合計を算出します(SUM関数)。

生成されたソースコードを見てみましょう。
以下のような内容になっていると予想されますね。

① [A1]=1
② [B1]=1
③ [C1]=sum[A1:B1]
④ [C2]=sum[A1:B1]

関係ない行は薄字にしてしまいます

Sub Macro1()
‘ Macro1 Macro
‘ マクロ記録日 : 2018/8/29 ユーザー名 : …………..


Range(“A1“).Select
ActiveCell.FormulaR1C1 = “1”


Range(“B1“).Select
ActiveCell.FormulaR1C1 = “1”


Range(“C1“).Select
ActiveCell.FormulaR1C1 = “=SUM(RC[-2]:RC[-1])”


Range(“C2“).Select
ActiveCell.FormulaR1C1 = “=SUM(R[-1]C[-2]:R[-1]C[-1])”

End Sub

A1=1が、コードになると糞面倒臭いことになってます。

でも、これがわかれば、強力な「AI 表計算」が手に入ったも同じです。

説明します。

自動スクリプトは R1C1 参照形式

FormuraR1C1をWEBで検索してもさっぱり意味がわかりません。

ここで、[メニュー] → [ツール] → [オプション] 設定画面を開いて、[全般]タブのR1C1 参照形式を使用するにチェックを入れると

通常のABC表示

D1はC1の内容を文字列で表示したものです。
D2はC2の内容を文字列で表示したものです。

R1C1形式表示

通常の列のABC表示が、123に変わります。

もちろんやっていることは同じですが、表示が変わっています。
D1はC1の内容を文字列で表示したものです。
D2はC2の内容を文字列で表示したものです。

R[-1]C[-2]というような表記が、ごちゃごちゃ見づらいですね、どんな意味でしょうか?

「参照形式」ではなくて「相対形式」と言えばいいのに

まず、RCとは、RROW(行)のこと、CCOLUM(列)のこと。「カラム」といいますよね。

RC[-2]は、R[0]C[-2]の、[0] が省略されています。
RC[-2]は、アクティブセルから「-2列右へプラス」つまり「左へ2個」、R(列)方向は±0個

RC参照形式がわかったところでソースを詳しく見てみます。


VBA自動スクリプトソースコード

エクセルが作ったソースコードを自動SCRIPT(記述)ソースコードといったりします。

Sub Macro1()

Macro1という関数(サブ関数)は以下です。

( ) ・・・ 引数(ひきすう)はありません。



Range(“A1”).Select    ’・・・・ セルのA1を選択します
ActiveCell.FormulaR1C1 = “1”  ’・・・・・ アクティブセルのR1C1プロパティに”1”を代入

‘ActiveCell(A1)の中には、値、数式、罫線、フォント(色、大きさ)などなど、プロパティという色々なものが詰まっておりその中の一つがFormuraR1C1プロパティである。

cells(y,x).Formula
cells(y,x).FormulaR1C1
表示の違い

ちなみにR1C1参照形式(列が1,2,3のやつ)でも同じである


FormuraR1C1は数字、文字、数式を持つことができるようだ

100 数字の表示はvalueプロパティでもFormulaR1C1プロパティでもどちらもOK

”ABCD” 文字列の表示はvalueプロパティでもFormulaR1C1プロパティでもどちらもOK

数式の表示、FormulaプロパティでもFormulaR1C1プロパティでも数式が表示されるが、valueプロパティだと結果の 3 という数字が表示される。


Q>表示の仕方は分かった、VBAプログラミングでいつ使うの?

A>特に積極的に使うことはないらしい。

エクセルのAIのように、リアルタイムで動的にプログラムする場合には、相対的にということは必要だろうが、人間がプログラムする時は、セルを静的に扱えるだろうから(セル番地を決め打ちという意味)、必要ないということではないか?な?

Sub Macro1()
‘Dim i As Integer

‘↓ A1:B10に適当に数字を入れる
For i = 1 To 10
Cells(i, 1) = i + 1
Cells(i, 2) = i + 2
Next i

‘C列に合計を計算する(R1C1形式)
For i = 1 To 10
Cells(i, 3).FormulaR1C1 = “=RC[-2]+RC[-1]”
Next i

‘D列に合計を入れる(value形式)
For i = 1 To 10
Cells(i, 4).value = Cells(i, 1).value + Cells(i, 2).value
Next i

End Sub

cells形式のほうが、一目見て分かるので、R1C1を使う必要はない.。

valueは省略できるので、Cells(i, 4) = Cells(i, 1) + Cells(i, 2)とスッキリかける。