変数に値を入れるには「=」記号を使います。次のマクロは、文字列型の変数 tmp に "yugien" という文字列を格納します。
Sub Sample1()
Dim tmp As String
tmp = "yugien"
MsgBox tmp
End Sub
このように、変数に値を格納するときは「変数名 = 値」とします。これは、右辺を左辺に代入するという意味で「変数名 ← 値」のようなイメージです。
ところが、ときおり「Set 変数名 = 値」のように、Setという命令を使って変数に"何か"を代入しているコードがあります。
Sub Sample2()
Dim ws As Worksheet
Set ws = Sheets("Sheet1")
MsgBox ws.Name
End Sub
Set ws = Sheets("Sheet1") は、変数wsにシート[Sheet1]を代入する命令です。この変数wsの型は、宣言時に「As Worksheet」と指定されています。長整数型(Long)や文字列型(String)とは違い、この変数wsはオブジェクトを格納するオブジェクト変数です。オブジェクト変数は「As オブジェクト名」のように、オブジェクト名を使って型指定をします。ワークシート(Worksheetオブジェクト)を格納する変数なら「As Worksheet」、ブック(Workbookオブジェクト)を格納する変数なら「As Workbook」、セル(Rangeオブジェクト)を格納する変数では「As Range」のように型指定をします。また、すべてのタイプのオブジェクトを表す総称Objectを使って、どんなオブジェクトでも格納できるオブジェクトの変数は「As Object」と指定します。
オブジェクト型で宣言したオブジェクト変数に、オブジェクトを格納するときは、Setを使わなければなりません。