こんにちは!Lenocoです。本日も見てくださりありがとうございます。
今回はワークシートについてのTips回です!!!
以前、「Withとオブジェクト変数を使ってコードを見やすくシンプルに!」というブログを書いたのですが、
その中で、ワークシートをオブジェクト変数にいれて使用する方法を紹介しました。
今回は、ワークシートをオブジェクト名で使用する方法をご紹介します。
とても便利ですので、是非参考にしてみてください!
ワークシートをオブジェクト名で使用する方法
ワークシートのオブジェクト名とは
オブジェクト名はワークシートに定められている固有名称のようなものです。
シート名とは異なりますが、コードの中でオブジェクト名を使うことでワークシートを表現することができます。
オブジェクト名は、「プロパティウィンドウ」から確認できます。
Alt+F11でVBEの画面を開き、VBEメニューから「表示」→「プロパティウィンドウ」を選択するとプロパティウィンドウが表示されます。
任意のシートを選択すると、プロパティウィンドウ内に「(オブジェクト名)」という項目が確認できると思います。
これがオブジェクト名です。
デフォルトでは、シート名とオブジェクト名は同じ名称になっています。
オブジェクト名を編集する
初期設定では「Sheet1」「Sheet2」というような名称になっているので、これを分かりやすい名称に変えていきましょう。
編集方法は簡単で、プロパティウィンドウの「(オブジェクト名)」の欄にカーソルを当て、書き換えます。
※「s_Sagyo」としました。
前回使用したコードとコードの説明
では、前回使用したコードを使って、
オブジェクト名を使用したコードに変更していきましょう。
シート名を使用した元のコード(おさらい)
Sub ChangeSheetAndCell()
ThisWorkbook.Sheets("Sheet15").Tab.ColorIndex = 3
ThisWorkbook.Sheets("Sheet15").Name = "作業用シート"
ThisWorkbook.Sheets("作業用シート").Range("A1") = "AAA"
ThisWorkbook.Sheets("作業用シート").Range("A1").Font.ThemeColor = xlThemeColorAccent1
ThisWorkbook.Sheets("作業用シート").Range("A1").Font.Name = "Meiryo UI"
ThisWorkbook.Sheets("作業用シート").Range("A1").Font.Size = 20
End Sub
コードの説明(おさらい)
「Sheet15」という名前のシートのシート見出しの色を赤に変更します。
そして、そのシートのシート名を「作業用シート」とします。
そのシートのA1セルに「AAA」と入れ、フォントカラーを青色、フォント名を「Meiryo UI」、フォントサイズを20とします。
オブジェクト変数バージョンのコード(おさらい)
以下、オブジェクト変数を使用した場合です。
Sub ChangeSheetAndCell2()
Dim ws As Worksheet
Dim tCell As Range
Set ws = ThisWorkbook.Sheets("Sheet15")
ws.Tab.ColorIndex = 3
ws.Name = "作業用シート"
Set tCell = ws.Range("A1")
tCell = "AAA"
tCell.Font.ThemeColor = xlThemeColorAccent1
tCell.Font.Name = "Meiryo UI"
tCell.Font.Size = 20
End Sub
オブジェクト名バージョンのコード
上記のコードを、オブジェクト名を使用して書き換えてみましょう。
オブジェクト名は「s_Sagyo」としました。
Sub ChangeSheetAndCellObjectName()
Dim tCell As Range
s_Sagyo.Tab.ColorIndex = 3
s_Sagyo.name = "作業用シート"
Set tCell = s_Sagyo.Range("A1")
tCell = "AAA"
tCell.Font.ThemeColor = xlThemeColorAccent1
tCell.Font.name = "Meiryo UI"
tCell.Font.Size = 20
End Sub
どうでしょうか。動きとしては全く同じですが、オブジェクト変数の定義と設定の行が省けたので、少しすっきりしましたね。
さいごに
ワークシートをオブジェクト名で使用することで、
プロジェクト全体でシートをオブジェクトとして指定することができ、
変数定義や設定の行を省くことができるというメリットがあります。
Withやオブジェクト変数と合わせ、
オブジェクト名でワークシートを取り扱う方法も選択肢にいれておくと、さらにVBAの幅が広がりそうですね!
Lenoco