[gtranslate]

固有オブジェクト型変数と総称オブジェクト型変数(Excel VBA)

オブジェクト変数が使えるのはWorksheetオブジェクトだけではありません。

 

次の例のように、Workbookオブジェクトや Rangeオブジェクトなどのさまざまなオブジェクトも扱うことができます。

 

 

Sub SetObject2()
    Dim myWBook As Workbook
    Dim myWSheet As Worksheet
    Dim myCell As Range

 

    Set myWBook = Workbooks(“Dummy.xlsx”)
    Set myWSheet = Workbooks(“Dummy.xlsx”).Worksheets(“Sheet2″)
    Set myCell = Workbooks(“Dummy.xlsx”).Worksheets(“Sheet2″).Range(“A1:D10″)
   
    myWBook.Activate
 myWSheet.Activate
    myCell.Value = “ABC”
End Sub

 

 
このマクロは、各オブジェクト変数を個別に定義したもので、前回のブログのマクロ「SetObject」とまったく同じ動作をします。

 

マクロ「SetObject2」では、データ型を「As Workbook」「As Worksheet」「As Range」のように、オブジェクトの種類を特定して宣言していますが、このように宣言された変数を「固有オブジェクト型変数」と呼びます。

 

その一方で、オブジェクト変数を宣言するときには、オブジェクトの種類を特定せずに、次のようにすべてObjectキーワードを使用して宣言することもできます。

 

 

Sub SetObjects3()
    Dim myWBook As Object
    Dim myWSheet As Object
    Dim myCell As Object

 

    Set myWBook = Workbooks(“Dummy.xlsx”)
    Set myWSheet = Workbooks(“Dummy.xlsx”) .Worksheets(“Sheet2″)
    Set myCell = Workbooks(“Dummy.xlsx”) .Worksheets(“Sheet2″).Range(“A1:D10″)
   
    myWBook.Activate
    myWSheet.Activate
    myCell.Value = “ABC”
End Sub

 

 

このように、Objectキーワードで宣言した変数を「総称オブジェクト型変数」と呼びます。

 

どちらも、機能的には大きな差異はありませんが、固有オブジェクト型には、マクロが読みやすい、エラーが発見しやすい、実行速度が若干向上するなどの利点がありますので、なるべく固有オブジェクト型変数を使ってください。

 

なお、固有オブジェクト型変数を使うことを、専門的には「事前バイディング」と呼びます。

 

一方、総称オブジェクト型変数を使うことを、専門的には「実行時バイディング」と呼びます。

 

事前バイディングと実行時バイディングの違いは、Excel VBAでFile System Objectを使うときや、ActiveXオートメーションでExcel VABからWordを遠隔操作するときなどには避けては通れないとても貴重な概念なので、これはまた機会があったら説明します。

 

→ 最初へ      → 次へ

 

 

毎日30分かかる事務作業のルーティンワーク。
エクセルのマクロなら1秒で!

その作業、VBAid(ブイビーエイド)にお任せしませんか?

top_design2

 

 

『新装改訂版 Excel VBA 本格入門』

~マクロ記録・If文・ループによる日常業務の自動化から高度なアプリケーション開発までVBAのすべてを完全解説~

 
Excel VBAのバイブルとして高い評価をいただいた『本格入門』が装いも新たに登場!
圧巻の質と量はそのままに、より読者視点に立ってかゆいところまで説明を行き届かせました。
プロのアナウンサーによるYouTube動画の特典付き(スマホ視聴可)。

 

マクロ記録やVBEの使い方といった基本のキから、関数、イベント、エラー処理まで、Excel VBAプログラミングにマストな22テーマを完全網羅。
Excelユーザーの方がExcel VBAプログラマーと名乗れるレベルに到達できること請け合い!
 
 
 
honkaku→ Amazonへ

 

 

【目次】
Part1 基礎編
Chapter1 マクロの記録とVisual Basic Editor
Chapter2 VBAの基本構文を理解する
Chapter3 ブックとシートをVBAで操作する
Chapter4 セルをVBAで操作する
Chapter5 変数を理解する
Chapter6 条件分岐を理解する
Chapter7 繰り返し処理(ループ)を理解する
Chapter8 対話型のマクロを作る
 
Part2 実践編
Chapter 9 変数の上級テクニックとユーザー定義定数
Chapter10 ユーザーフォーム
Chapter11 基本的な入力や表示を行うコントロール
Chapter12 選択を行うコントロール
Chapter13 そのほかの便利なコントロール
Chapter14 文字列を操作する関数
Chapter15 日付や時刻を操作する関数
Chapter16 そのほかの便利な関数
Chapter17 マクロの連携とユーザー定義関数
Chapter18 イベントマクロ
Chapter19 エラー処理
Chapter20 画面表示と組み込みダイアログボックス
Chapter21 グラフをVBAで操作する
Chapter22 ファイルの操作
 
 
【読者特典】
〇キーワード当てゲーム
Excel VBAで開発された『ロロナを救え! 』で楽しみながらVBAのキーワードが学べる
 
A-2 A-6

 

 

 

 

『いつもの作業を自動化したい人の Excel VBA 1冊目の本』

Excel VBAは、一人ひとりの作業のあり方、いえ、ひいてはあなたの時間の使い方、すなわち「人生すら変えてしまう」パワーがあります!

本書は、Excel VBAを使いこなしたい方がどこでつまずいてしまうのかを徹底的に研究して書き上げた「1冊目」の決定版です!

 

まずは第1章の立ち読みから(スマホ対応) こちら

firstbook→ Amazonへ

コメント (3件)

現在、この記事へのトラックバックは受け付けていません。

  1. 大村様
    すみません。解説お願いします。
    ここに記載されているsetobject2マクロを実際に作ってみて実行しても、どうしてもうまくいきません。うまくいかない点が、ABCが記入されるシートが、マクロを実行するときのシートになってしまう点です。例えばsheet1でマクロを実行すると、ABCが記入されるのがsheet1になってしまい、記入前にアクティブにしたはずのshhet2に記入されません。ただ、最終的にアクティブになるシートは、マクロ実行時のシートに関わらずsheet2にはなりますが。なぜこうなってしまうのでしょうか。どうしても理解できないため、ご教示いただけますと幸いです。
    実際には、「てっとり早く確実にマスターできるExcel VBAの教科書」P134を試しているのですが、うまくいかず、ネットで調べていてこのブログのページに行きつきました。

    • 申し訳ございません。
      私の解説ミスです。

      Set myWSheet = Workbooks("Dummy.xlsx").Worksheets("Sheet2")

      でお試しください。

      ご迷惑をおかけいたしました。

    • ブログを書き換えましたので、お読みいただけますと幸いです。

      それから、現在はYouTubeで配信しております。

      https://youtu.be/-Midd3oGLUU


コメントする

Diamondo Blog イチオシ芸能ニュースもっと見る

ピックアップブロガーもっと見る

インタビュー特集もっと見る

 

大村あつしプロフィール

プロフィール画像

大村あつし

1996年8月にエーアイ出版より『Excel95で作るVBAアプリケーション〜 VBAで作る販売管理システム〜』でITライターとしてデビューしたが、2007年6月にゴマブックスより出版された『エブリ リトル シング〜人生を変える6つの物語〜』で小説家に転身。まだ、IT書籍の執筆は一部、続けているが、現在の活動は小説が中心となっている。

プロフィール詳細 »

読者になる

このブログの更新情報が届きます。

無料で読めるweb小説

小説を読む
ブログモバイル版

携帯ではこちらのQRコードより ご確認ください

http://www.diamondblog.jp
/official/omura/

大村あつし最近の記事

大村あつし

大村あつしアーカイブス

大村あつしカレンダー

2015年8月
« 7月   10月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31