[ HOME ] [ BACK ] [ NEXT ]

犬でもわかるExcelVBA講座

§5 ヘルプとイミディエイトを使う。その1

それでは、取りあえず復習です。マクロを記録しましょう。
まず、新規ブックを作成します。(エクセルを立ち上げたばっかりならそのままでOK)
ツール(T)→マクロ(M)→新しいマクロの記録(R)
マクロの記録ダイアログ』が現れるので、OKを押してください。
そうしたら、下の図のように、セルA1に100、セルA2に101と105まで入力してください。 


そしたら、記録終了ダイアログの『■』を押してください。
記録終了ダイアログが出てこない場合は、ツール(T)→マクロ(M)→記録終了(R) でOKです。
では記録された内容をみてみましょう・・・
Alt+F11 を押してください(ツール(T)→マクロ(M)→Visual Basic Editor(V) でも可)
『標準モジュール』をダブルクリック→『Module1』をダブルクリック

Range("A1").Select
セルA1を選択これは容易にわかります。
ActiveCell.FormulaR1C1 = "100"
でもアクティブセルのあと・・・
これはなんでしょう?『FormulaR1C1』なんとなくは、はわかりますが・・・
(自分で記録したんですから)
ではヘルプを使ってみましょう。
ActiveCell.FormulaR1C1 = "100" の 『FormulaR1C1』を選択してF1キーを押します。
(全部選択する必要は無いんですがこの方が確実なので一応・・)
すると私の嫌いな重いヘルプが起動します。下の図 ↓

これが↓私が嫌いなおもいおもいヘルプです。

指定されたオブジェクトの数式を R1C1 形式で、
コード記述時の言語を設定します。値の取得および設定が可能です。

とか書いてありますがこれは数式用のプロパティだったんです。
しかもR1C1ってなんじゃという感じです。(そのうち説明します。無責任)
訳がわからないのでとりあえず関連項目を押して見ましょう。

 

おっと Formula プロパティ というのがあります。
R1C1 が無いのでわかりやすいかも・・・ということで表示をプッシュ。

オブジェクトの数式を、A1 形式の表示形式で、
コード記述時の言語で設定します。値の取得および設定が可能です。

今度はA1形式と書いてあります。
使用例を押してください。

おおおっ!! これは見覚えがある書き方・・・
Worksheets("Sheet1").Range("A1").Formula = "=$A$4+$A$10"
一目瞭然セルA1にセルA4とセルA10を
絶対参照で足す数式を入力する。とばればれなほどわかりやすい。
どっちをみても数式を入力するプロパティみたいです。
試してみましょう。
標準モジュールにSUB TEST()と書いて・・・だとめんどくさいので
イミディエイトを使ってみましょう。
alt + F11 (ツール(T)→マクロ(M)→Visual Basic Editor(V) でも可)
を押してVBEをアクティブにします。
イミディエイトが出ていない場合は、(多分出てない)
Ctrl + G もしくは 表示(V)→イミディエイトウィンドウ(I) で出してください。
下のようになります。

そうしたら、ヘルプのサンプルコードをコピーしてイミディエイトウィンドウに貼り付けてください。

できたら Worksheets("Sheet1").Range("A1").Formula = "=$A$4+$A$10" の中に
(中ならどこでもいい) セルポインターを置いて『 Enter 』を押してください。
alt + F11 を押してエクセルに戻って、セルA1を調べてみましょう。
103になってるはずです。今の動作によってセルA1に 数式 " =$A$4+$A$10 "が
入力されました。ためしにA10に何か数字を入力してみてください。
セルA1の値が変化します。(数式の講座ではないのでこれの説明はカット)
イミディエイトではプロパティの値も表示できます。
print Worksheets("Sheet1").Range("A1").Formula のように記入して『 Enter 』を押してください。
下に"=$A$4+$A$10" と出てきたはずです。
セルA1の数式を表示しています。
"print" は イミディエイト ペイン内に数値、文字列などを出力するキーワードです。
いちいち "print" と書くのは面倒なので ””を使用します。
?Worksheets("Sheet1").Range("A1").Formula でも同じ意味です。

表示できるのはセルの値だけではありませんここに記入した式ならすべて表示されます。
いろいろ試してみてください。結構意外な発見があるかも・・・
因みにメソッドを記入すればそのまま実行します。(Selectなど)
やってみましょう。とりあえず↓の図


気が済んだら元に戻しましょう。(A1が変わっちゃってるので)
せっかくだからイミディエイトを使いましょう。

※イミディエイトの "=$A$4+$A$10" この部分を "100"にして『 Enter 』を押してください。
(ワンポイントのあとで補足説明します。)

Sheets("Sheet3")がセレクトされましたね。(図は省略・・)

■  ワンポイント

ヘルプを見ていると 『値の取得および設定が可能です』『値の取得のみ可能です。』があります。

前者は
Worksheets("Sheet1").Range("A1").Formula = "=$A$4+$A$10" こういう書き方をすると設定
(プロパティの設定は "=" で行う)

Hani= Worksheets("Sheet1").Range("A1").Formula みたいな書き方をすると取得
(変数HaniにWorksheets("Sheet1").Range("A1")の数式(Formula)を取得)
取得できるプロパティは"?"を使ってイミディエイトに表示できます。(ほとんどのプロパティ)

後者は
Worksheets("Sheet1").Range("A1").Formula = "=$A$4+$A$10" こういう書き方ができません。

補足 Value について・・
Value : 直訳は価値・意味です。VBAのばあいは 文字・数値を入力します。

自動記録では数式でも値でもなんでもFormulaR1C1になってしまいます。
本来値を入力するにはValueを使用します。
Worksheets("Sheet1").Range("A1").FormulaR1C1 = "100" ではなく
Worksheets("Sheet1").Range("A1").Value= "100" が正しい書き方です。
100は数値なので "" (ダブルコーテーション)は、いりません。
Worksheets("Sheet1").Range("A1").Value = 100 と書きます。
文字は"" (ダブルコーテーション)が必要です。
Worksheets("Sheet1").Range("A1").Value= "犬でもわかる" のように書きます。
ちなみに空白は(←ちなんでいる場合じゃない意外と使う)
Worksheets("Sheet1").Range("A1").Value= "" です。

これでわかりますか?

■ 補足2 A1形式とR1C1形式の違い
ツール(T)→オプション(O)→全般タブの中のR1C1 参照形式を使用する(C) に
チェックを入れるとR1C1 参照形式にはずすとA1 参照形式になります。
通常(いつも使っている方)はA1 参照形式です。

R1C1形式はFormulaR1C1 を使用します。
A1形式の場合は、Formula を使用します。
セルA1に = B1+C1 を自動登録すると
Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[1]+RC[2]" のように記録されます。
R1C1の R は行 [Row] C は列 [Column] という意味です
[ ]の数字は いま選択されているセルから行方向に いくつ、列方向にいくつ という意味です。
本来上記例のRC[1]+RC[2]R[0]C[1]+R[0]C[2] のように書くのが正解ですが
0 は省略できるのでRC[1]+RC[2]と書くことができます。
当講座ではR1C1形式はおそらく使用しませんが一応おぼえておいてください。

☆☆☆☆☆☆☆☆   まとめ   ☆☆☆☆☆☆☆☆

@ ヘルプの使用 :知りたい単語を選択してF1キーを押す。
A 使用例 :使用例を実行してみる。
B イミディエイト表示:Ctrl + G もしくは 表示(V)→イミディエイトウィンドウ(I) で表示
C イミディエイト2 :print ("?")キーワードを使用すればその後の式の値を表示できる。
D イミディエイト3 : メソッドを記入すれば実行できる。
E Value  :指定したセル(範囲)に文字・値を入力する。
F FormulaR1C1 : 指定したセル(範囲)に数式をR1C1形式で入力する。
G Formula : 指定したセル(範囲)に数式をA1(見慣れた)形式で入力する。

順番的にイミディエイトは早いかなと思ったんですが前回予告で書いてしまったのと、
ヘルプの使用例の使い方などの流れ上仕方なく取り上げました。
かなり便利でこれから複雑なものを作るときにや
変数の値をチェックしたい時などに重宝しますので覚えて置いてください。
忘れないように、たびたび使用する予定です。
その2ではブレークポイントについても説明します。

今回は少しわかりにくかったと思います。
次回のステップ実行は後回しにして Cells と Rangeについて少し解説します。
わかりずらかったら遠慮なく質問掲示板やお気楽ラウンジにカキコしてください。
その都度ページも更新していきます。


■このページはリンクフリーです。どんどんはってください。特に連絡する必要もありません。
■ご連絡いただければ、こちらからもリンクします。出来れば下のバナーを使ってください。
■ご意見・ご要望はこちらからお願いします。