shiawasenataiyou「Excel」VBAでシートオブジェクトの記述コードを短くするツイートシェアはてブLINEPocketこんばんは、こんにちは、おはようございます。本日は、VBAでオブジェクト型のWorksheetの基本設定についてお話いたします!設定方法もいろいろありますが、注意しないと”が~んっ”ってなっちゃうかも。それはどんなものなのか!ワクワクしながらみてね。まとめオブジェクト型の変数ってなに?そもそもExcelVBAでオブジェクトとは何かと頭をよぎったときには、Workbook(ブック)・Worksheets(ワークシート)・Range(セル)など主な3つの操作される側と覚えておきましょう。この3つを代入するためにつくられた変数のことを「オブジェクト型変数」もしくは「オブジェクト変数」といいます。固有オブジェクト型と総称オブジェクト型の2種類があります。総称オブジェクト型は、Objectで宣言をします。objectで宣言された変数は、ブック・シート・セル・図形などすべてのオブジェクトを宣言できます。固有オブジェクト型は、Workbook・Worksheet・Rangeなどのような決められた範囲のオブジェクトをさします。Rangeで宣言したオブジェクト変数にはRangeオブジェクトのみが扱える変数になりますのでシートやブックを扱うことは出来ません。シートはWorksheetをブックはWorkbookを図形はShapeと与えられた固有のオブジェクトで宣言をしましょう。オブジェクト型になります。変数の名前は、誰が見ても何の変数か判断できる名前にしましょう。objectで作成すると便利かもしれませんが、一目でわかる宣言がわかりやすくて便利かもしれません。オブジェクト型の変数の使用例ワークシートを変数に宣言してみる。変数を宣言して変数にオブジェクトをセットするときは、VBAで使用するExcelのシートの名前の確認をしておきましょう。シートの名前の部分は、空白文字がある場合もあります、あと全角もしくは半角など見間違える場合があります。「なぜうごかないんだ~」って騒がないようにしておきましょう。「うごけ、うごけ」っていっても無理です。名前が違っていたら無理です。転記する際は最新の注意を払いましょう。コピペがいいかもしれません。※コピペとは、コピーアンドペーストの略語です。ちなみに上図のシートの宣言方法です。オブジェクト(セットする対象のオブジェクト)になります。上図のシートをセットする場合のオブジェクトの記述方法になります。オブジェクトは次のようにコードを記述します。空白文字になりますのでシート名を直してコードを作成するか、シート名にあわせてコードを作成するかを決めましょう。構文で変数にオブジェクトをセットしてみましょう。NORIMAKI=Worksheets(“のりまき”)※コードを綺麗にしたい場合は、シートの名前を修正しておきましょう。上記で変数にオブジェクトをセットすることが出来ました。ちなみに他にもシートオブジェクトを代入する方法はありますが・・・・。表示されているシートの順番に変数へセットする方法の説明になります。VBAを起動!実は、シーとの名前以外で変数にセットする方法は他にもあります。VBAを起動してみましょう。キーボードの「Alt」キーを押しながらファンクションキー「F11」を押してみましょう。VBAのアプリケーションが起動します。次にプロジェクトウインドウの1VBAProject()を右クリックしましょう。選択メニューが表示されます。その中の2挿入(N)を選択して左クリックして3表示されたメニューの中の3標準モジュール(M)を選択して左クリックしましょう。コードウインドウが表示されます。コードウインドウの確認3コードウインドウが表示されますので、1プロジェクトウインドウと2プロパティにオブジェクト名などが表示されていることを確認しましょう。名前()とコードを記述しています。」プロシージャとなり「Private」と違いすべてのモジュールから動作させることが出来るプロシージャになります。簡単に説明するとアローンかシェアかです。出来るだけ記述するように心がけましょう。私も略す癖があります。subから記述してみましょう。Subでも大丈夫です。2プロシージャ名を記述しましょう。判りやすくしましょう。Subが自動的に記述されます。Subの間に記述します。シート名を変数にセットしてメッセージボックスで表示するコードを記述してみるシート名をメッセージボックスダイアログを使用して表示させるプロシージャを作成してみましょう。1変数の宣言をしましょう。シートネームの記述を減らすために、オブジェクト型で変数宣言をしましょう。ワークシートはWorksheetのオブジェクトを宣言します。変数名を決めて宣言をしてみましょう。2オブジェクトを変数に代入する場合は、Set構文を使用して代入します。その際ワークシートネームを使用しなくても代入することが可能です。使用して変数に代入したシートネームの表示をさせるコードを記述しましょう。4コードの記述が終わったり途中で終了する場合などを含め、プログラムを実行する際は必ず、こまめに保存することをいたしましょう。プロシージャが暴走すると、前回保存した場所以降の記述には決して戻りません。コードを実行して動作確認をしてみましょう。実行する際はメニューから選択していく方法もあります。Subの間にカーソル(入力可能な状態の点滅しているもの)を表示させてプログラムを動かせてみましょう。プログラム(プロシージャ)を動作させる場合はVBAのツールバーのなかにある2若しくは3のマクロの3実行ボタンを左クリックしましょう。4メッセージボックスのダイアログが表示されます。シートと見比べながら「OK」ボタンを押してみましょう。向かって左側からのシートの並び順にメッセージボックスが表示されているのが確認できます。シートを並び替えて同様にプロシージャを実行して見ましょう。結果は同様にシートの左側から表示されたことが確認できると思います。Set構文でワークシートを代入する際に記述したコードをみてください。=Worksheets(“あられ”)と違う方法になります。Worksheets(3)まず変数宣言は、固有の名前を使用せず単に順番の入れ物が判るように変数にしてみました。変数に代入する場合に使用したオブジェクト名をご確認ください。Worksheets(1)Worksheetsのあとの()に数値が入っているのが確認できるかと思います。この数値が、先ほどの表示されているExcelのシートの左側からの順に相当します。この記述方式でコードを作成する場合は、シート固有の名前を代入するのではなくシートの順に代入することを覚えておきましょう。シートの順番が変更された場合には、シート内容が破壊されることを念頭にしようしましょう。まとめ今日は、シートオブジェクトの代入方法についてお話をしました。代入方法も色々ですが、シートの名前の空白に悩まされて”オブジェクトがありません”!って言われたくないですよ。パソコンに!そんなVBAでコードを作成するときにシートの名前に空白はいりませんよって、シートを作った誰かさんに吠えたいです。いつも同じだけどシートオブジェクトさん、よろしくって思いながら作ってみると、案外うまく出来るかも。