【VBAスタンダードに挑戦!】
本日の5分勉強の内容
********************************************************
オブジェクト変数
宣言
・オブジェクト(Range, Cell, Worksheet など)を格納する変数
・例)Dim WS As Worksheet、 Dim WB As Workbook
・Dim A As Object とすれば、Cell や Worksheet など、
固有のオブジェクトではなく、すべてのオブジェクトを対象に指定できる
※ Object ・・・物、目的、
オブジェ(仏語、展示物の意味として、なじみ があるかも)
格納方法
・「Set」という命令を使用して格納する
・例)Set A = Range("A1")、 Set WS = ActiveSheet
・「Nothing」を使用して、明示的に変数を破棄することができる
(何かが原因で変数に値が残ってしまい、続けてマクロを実行するときに
影響がないように変数を空っぽにします)
※Set・・・設定
Active・・・活動中(Excelの場合は最上位で開いているsheet(かな?))
Nothing・・・何もない、何でもない
********************************************************
Sub Sample()
Dim WS1 As Worksheet 'Worksheetを変数として定義
Dim WS2 As Worksheet
Set WS1 = Worksheets("July") 'シート名「July」(7月)を WS1 に格納
Set WS2 = Worksheets("Total") 'シート名「Total」(合計)を WS2 に格納
WS1.Activate 'シート July を一番上に表示
Range("A10").Copy 'シート July の Range("A10")の値をコピー
With WS2.Range("B2") 'シート Total の Range("B2")・・・
.PasteSpecial xlPasteValues 'に値貼り付け
.Font.ColorIndex = 3 'の、文字色を赤に変更
.RowHeight = 30 'の、行高を30に変更
End With
Application.CutCopyMode = False 'コピーを解除
Set WS1 = Nothing 'オブジェクト変数を空っぽにする
Set WS2 = Nothing
End Sub
********************************************************
シートやブックをまたいで、データのやり取りをするときなど、
Worksheets("Sheet2") とか、Workbooks("macro001").xlsm
などと、長い名前を何度も書かなくていいのでとっても便利。
以前、ネットで参考になるコードをまねして書いては見たものの、
エラーで動かない・・・
なぜなら、「Set」 を書いて格納していなかったから。
文字列とか、数値であれば不要なんですけどね。
これからは、Worksheet, Workbook 変数に入れて、
長いファイル名は最初に一回だけ記入してマクロを作れる!
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/