• 締切済み

クラスオブジェクトの参考書

標準モジュールやイベントについての参考書は 山ほどあるのですが、クラスモジュールについての 参考書がなく困っています。 クラスについての概念、インスタンスの作成の意味、そして 標準モジュールとの違いなどが解るお勧めの参考書を 教えて頂きたいです。 詳しい本でしたら、Excel・Accessとはず、そして バージョン2003以上でしたらOfficeソフトを持っています。 私個人のレベルは、仕事上小規模の基幹系システムを作成しています。 資格は、ACCESS・ExcelともVBAのStandardを持っています。 勝手なご質問ですが、ご存知の方おられましたらよろしく お願いします。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 VBAでは、VBAエキスパートの「仕様・設計・コーディング」の中に、クラス設計の項目を設けています。 概念的なことは、C++のほうが詳しいですが、VBAのテキストでは、簡単なことは、Moug の大村あつし氏の『かんたんプログラミング Excel VBA応用編』で多少触れていますが、これは入門・初級レベルですから、詳しくはないと思います。 Word や PowerPoint では、一部クラスを使わざるを得ない部分はあるものの、単独では、書籍としてはまとまらないと思います。Access では、ユーザー定義関数、Excel では、Application イベントを使うこともあるかと思います。 どちらかというと、必要に応じて、クラスモジュールを使うのであって、特別、取り上げた資料というほどには頻繁には出てこないように思います。一般的なマクロではクラス・モジュールを使うことはほとんどありません。 なお、私から、言えることといえば、クラス・モジュールは、Excelでは、8割程度は、既存のオブジェクトに対してイベントを設けます。 こちらも参考にしてみてください。 http://oshiete1.goo.ne.jp/qa5538901.html

関連するQ&A

  • VBAもしくはVB6:クラスの中でクラスは使える?

    EXCEL2010にて、VBAでプログラミングしております。 クラスモジュールを用いてクラスを自分で作成して、 作成したクラスを標準モジュール内で使用するのは普通ですが、 クラスモジュールを用いてクラスを自分で作成して、 作成したクラスを、更に別のクラスモジュールの中に記述することは可能ですか? このようなクラスの中に別のクラスが入っている状態(クラスの入れ子)で、 まともに動くものでしょうか? 詳しい方、御教授よろしくお願いいたします。

  • VBAのクラスのインスタンス化のタイミングについて

    こんにちはvbaのクラスのインスタンス化について質問があります。 私は普段使えないイベントを使用するときにクラスモジュールに WithEventsを使ってイベントを作成し それをプロシージャからインスタンス化して 作成したイベントを有効にするという手法をよく使います。 Excelのように最初からワークブックにイベントがある場合は、 ワークブックを開いたと同時にWorkbook_Openプロシージャから クラスをインスタンス化して作成したイベントを有効にするということが可能なのですが、 CATIAやInventorなど、一部のアプリケーションでは、 最初から使えるイベントが見つからず、 Subプロシージャでインスタンス化する方法しかみつかりません。 しかし、Subプロシージャを実行させるためには、 ボタンなどユーザー側に何らかのアクションとってもらうしかなく、 自動化するために作成したイベントなのに、そのイベントを有効にするために ユーザーにボタンを押してもらうという矛盾した構成になってしまいます。 クラスをインスタンス化する方法はSubプロシージャに記述するしかないのでしょうか? 自分がよく使っているコードを下に記述します。 下の例は、Excelで新しくブックを開いたときにメッセージを出すプログラムです。 アプリケーションレベルのイベントをクラスモジュールで作成しています。 これを有効にするためには標準モジュール内の Event_ONプロシージャを実行しなければなりません。 モジュールを実行する前まではいくら新しいブックを開いてもメッセージは出ません これをどのうようにしたらいいかご教授ください。 Excelの例 Classモジュール「Class1」に記述 -------------------------------------------------------------------- Private WithEvents APP As Application Private Sub APP_NewWorkbook(ByVal Wb As Workbook) MsgBox "新しいブックが開かれました" End Sub Private Sub Class_Initialize() Set APP = Application End Sub -------------------------------------------------------------------- 標準モジュール「Module1」に記述 -------------------------------------------------------------------- Dim CLS As class1 Public Sub Event_ON() Set CLS = New class1 End Sub --------------------------------------------------------------------

  • クラスモジュール

    私は5年位vbaをやっていますが 標準モジュールとフォームモジュールしか使った事が有りません。 エクセルだったらシートモジュールはあります。 クラスモジュールの存在は知って、 学ぼうと思ったのですが 意味がよくわからない為挫折しました。 でも今自分がやりたい事はクラスモジュールがなくても出来ています。 クラスモジュールを学んで使うと もっと作業が捗るのでしょうか? クラスモジュールを使う事のメリットを教えていただけますか?

  • クラスモジュールを使わないとできないこと

    エクセル、アクセスでvbaを利用しています。 現在はすべて標準モジュールに記載しているのですが 「クラスモジュールを使わないとできないこと」もあるのでしょうか? クラスモジュールの使い方、必要性がいまいちわかりません。 まだ初心者な為複雑なコードは作っていません。 よろしくお願いします。

  • php インスタンスとオブジェクトの呼び方

    new obj = new Test(); という一文は、 「Testクラスのオブジェクト、objを作成している」という考えを持っています。 オブジェクトは物という概念で、 「Testクラス を new して、objインスタンスを作成している」 というのが正しいのでしょうか? 【objを Testオブジェクトと呼ぶのは間違っているのでしょうか? objは Testインスタンスと呼ぶのがやはり正しいのでしょうか?】 知り合いにも、インスタンスではなくオブジェクトと呼んでる人が多いのでわからなくなってきました。 ご教授お願いします。

    • ベストアンサー
    • PHP
  • クラスモジュールの使い方が詳しく書かれたVBAの本

    VBAを勉強中のものです。 クラスモジュールを使いこなせるようになりたいのですが それについてよく書かれている本はありますでしょうか? VBAの勉強している際に読む本は、標準モジュールにコードを記載するよう書かれています。 ご存知の方がいらっしゃいましたらご回答お願いします。

  • 標準モジュールとクラスモジュールの違い

    マイクロソフトのAccess2000でVBAプログラミングを行なっておりますが、 基本的なことを教えてください。 「標準モジュール」と「クラスモジュール」の違いはなんですか? 例えば、どこからでも使えるプロシージャ Public Function getSum( i1 as integer, i2 as interger ) getSum = i1 + i2 End Function を定義したとして、標準モジュール内に書くのとクラスモジュール内に 書くのとでは、何が違ってきますか?その他とにかく「標準モジュール」 とクラスモジュールの違いを教えてください。

  • ユーザーフォームに最小化・最大化ボタンを付ける

    http://www.serpress.co.jp/excel/vba047.html を参考にエクセルのユーザーフォームに 最小化、最大化ボタンを付けたいのですがうまく出来ません。 バージョンは2003です。 リンク先の「作成するモジュール」の中身を標準モジュールにコピペしたら 「vbModeless」が「プロシージャの外では無効です。」になります。 なので、全てをフォームモジュールに貼り付けると Public Constがエラーになるので Public Constだけ標準モジュールに貼り付けました。 でもフォームモジュールでも 「vbModeless」 が「プロシージャの外では無効です。」になります。 なにを標準モジュールにはりつけて 何をフォームモジュールにはりつければいいか教えてください。

  • 【ExcelVBA】commandButtonをクラスモジュールで制御するには

    お世話になります。 エクセルVBAで、ワークシートに置いたコマンドボタンの制御を、クラスモジュールから 行いたいと考えています。 制御といっているのはボタンの使用可不可、イベントの実行などです。 いろいろ調べてみたのですが、フォームからのイベントをクラスモジュールで行っているのは 見つけたのですが、ワークシート上に直接配置したボタンなどの制御は見つけることが出来ませんでした。 使用しているEXCELにバージョンは2003です。 よろしくお願いいたします。

  • Dimensionクラスの使い方

    Javaを始めたばかりの者です。 参考書を読みながら進めていて下記のソースコードで Dimensionクラスを使用している箇所で行き詰まりました。 使われていたのは、以下のコード --------------------------------------------------------------------------------------------------------------------- import java.awt.*; import javax.swing.*; import java.util.*; class xxx{  static public void main(String[] argv){  /*標準入力からmsgに文字列を入力*/  String msg = scan.next();  /*JLabelクラス型のオブジェクト型変数を作成し、インスタンスを生成*/  JLabel label = new JLabel(msg);  /*JLabelのインスタンスのコンストラクタに入力されたmsgのサイズを取得*/  Dimension dim = label.getPreferredSize();  ・・・etc  } } ---------------------------------------------------------------------------------------------------------------------- 自分が今まで使ってきたクラスは下記のような感じで使っていましたが、ここではnewしていない。 これは、どういうことなんでしょうか? クラス名 dim = new クラス名(); インスタンス作成 = コンストラクタの呼び出し。 new演算子はクラスのコンストラクタを呼び出している理解ですが Dimension dim = label.getPreferredSize(); 上記のコードではDimentionクラスのインスタンスは作られていないということだと思います。 ということは、 ここでは何をしているのでしょうか? どなたか、教えて下さい。

    • ベストアンサー
    • Java

専門家に質問してみよう