2016年5月31日火曜日

【VBAリファレンス】セルの値を指定する方法は主に2種類あるのです。

Excelに値を書き込んだり、読み込んだりする時
そのセルを指定した上で行います。

セルの一番左上のセルがA1という番地?になってます。

そのセルに文字を入力するときは
マウスで十字マークをぬゅ~んって持って行ってカチってやったら
指定できますよね。

VBAではぬゅ~んって持って行ってカチってのを文字で記載する必要があります。



下の図で黄色い部分はA1でオレンジの部分はB3となります。

























VBAで指定するとき、
メジャーな方法では主に2通りの方法があります。

CellsプロパティRangeプロパティです。

ざっくり説明すると
Cellsプロパティは縦と横の番地をそれぞれ指定するやり方で
Rangeプロパティは直接セルの番地を指定するやり方です。

多分7割くらいの方がはっ?ってなっているかもしれません。

ちょっとコード書いてみますね。

--------------------------------------------
Sub test()

’Cellsプロパティ
Cells(1, 1).Select ’A1を選択
Cells(3, 2).Select ’B3を選択

’Rangeプロパティ
Range("A1").Select ’A1を選択
Range("B3").Select ’B3を選択

End Sub
--------------------------------------------
なんとなく違いが分かりますでしょうか。

Cellsプロパティで選択をする場合、列と行の並びが逆になります。
→Cells(3, 2).Selectは上から3番目左から2番目の場所って書き方になります。
最初は混乱しますが、記述し続けると慣れてきます。
Cellsプロパティのメリットですが
カッコ内、数字を記載してますが、この数字の代わりに
変数を埋め込むことが出来ます。
そのメリットも変数を使い慣れてきた時、
また、For文やIf文使うようになった時に実感できるようになるともいます。
最初は縦横逆だし、ただ煩わしいだけなんですよね。

Rangeプロパティはそのままセルの値を記述します。
その時はダブルクォーテーションで囲ってください。
Rangeプロパティのメリットはコロンを間に挟むことで
広い範囲を簡単に選択することが出来ます。
こんな感じです→Range("A1:C10").Select
Cellsプロパティでも出来ないことはないんですが、いささか面倒なんです。


さて、ここまでは選択するという記述Selectですが
その部分から先を変えると値を入れることが出来ます。
--------------------------------------------
Sub test()

Cells(1, 1).Value = "こんにちわ" 'A1にこんにちはと入力
Cells(3, 2).Font.Color = vbRed  'B3の文字の色が赤くなる

Range("A2").Value = 1 + 2  'A2に1+2の結果つまり3が入る
Range("B4").ClearContents  'B4に文字が入っていたら消去される

End Sub
--------------------------------------------

その他の指定方法でR1C1ってやり方もあるんですが
これがかなりややこしいので、今回の説明は見送ります。

まずは、いろいろ入力して遊んでみて
是非セルの値の操作に慣れてみてください。

0 件のコメント:

コメントを投稿