第17回.セルにブック・シートを指定する(Workbooks,Worksheets,With,Set)
ExcelマクロVBAで自動化する時に、シートが1つという事はむしろ稀でしょう。
多くの場合は複数のブック、複数のシートを扱う事になります。
そうなると、
どのブックのどのシートなのか、
どのシートのどのセルなのか、
これらを指定する必要が出てきます。
RangeやCellsだけを書いた場合には、アクティブブックのアクティブシートのセルになります。
つまり、手前に見えているブックの選択されているシートのセルという事です。
・ブックの指定
・シートの指定
これらを明確に指定します。
これらの書き方を順に解説します。
ブックの書き方
空白文字・全角半角文字等も含めて正確に指定します。
大文字小文字は区別されませんが、実際の文字に合わせて指定するようにします。
Workbooks("Book1.xlsm")
このように書きます。
ブックを開いた順番になります。
Workbooks(2)
このように書きます。
主に全ブックに対する処理を書くときに使います、それ以外ではあまり使いません。
見た目で、一番手前のブックになります。
特にブック指定しなければActiveWorkbookになります。
つまり、マクロを書いているブックです。
シートの書き方
その複数のシートから特定のシートを指定するVBAの書き方です。
大文字小文字は区別されませんが、実際の文字に合わせて指定するようにします。
Worksheets("Sheet1")
このように書きます。
ブックの左からの順番で、一番左のシートが1、次が2となります。
Worksheets(2)
このように書きます。
主に全シートに対する処理を書くときに使います、それ以外ではあまり使いません。
特にシート指定しなければActiveSheetになります。
セルにブック・シートを指定する方法
・Withを使う
・Setを使う
直接指定
Worksheets("Sheet1").Range("A1") = "値"
上記どちらでも同じになります。
ActiveSheet.Range("A1") = "値"
Range("A1") = "値"
上記いずれでも同じになります。
Withを使う
Withを使う事で一括指定できるようになります。
'ここに書くセルは、.(ドット)から書き始める事で、
'その前にWithの後に書いたブックやシートを省略することができます。
End With
それぞれ、実際に書いてみましょう。
Withの行を書いたら、Enter2回で先にEnd Withを書き、Tabでインデントを付けてから内部を書くようにして下さい。
Setを使う
マクロVBAでは複数のブック、複数のシートを扱う事が多いので、
Withで指定するブック・シート以外の指定が面倒になります。
Setを使う事で短い名称で簡単に指定できるようになります。
Set 変数 = ブックやシート
データ型(WorkbookやWorksheet)は省略可能です。
Dim 変数
これだけでも動作に問題はありません。
データ型はVariantになり、何でも入れられます。
Workbooks("Book1.xlsm").Worksheets("Sheet1")に短縮名称(別名)のwsを付けたと考えて下さい。
Setで変数に入れることで、そのブックやシートを変数で指定できるという事です。
Setで変数に入れた後は、
Workbooks("Book1.xlsm")をwbに、
Workbooks("Book1.xlsm").Worksheets("Sheet1")をwsに書き換えられるようになるという事です。
SetとWithを組み合わせて使う
悩まないように、以下のように使いましょう。
・一番よく使うシートをWithで指定
どうしようかと悩むくらいなら全部Setで変数に入れてしまいましょう。
もちろん、ブックが1つならブックの指定を省略して構いません。
ExcelマクロVBA入門の対応ページ
第37回.ブック・シートの指定
第51回.Withステートメント
第52回.オブジェクト変数とSetステートメント
同じテーマ「マクロVBA再入門」の記事
第14回.セルの書式を設定する(NumberFormatLocal,Font,Borders,Interior)
第18回.シートをコピー・挿入・削除する(Worksheets,Copy,Add,Delete)
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。