VBAのオブジェクト思考プログラミングについて

現在、VBAのプログラム(ものすごく長いもの)があります。

共通の処理があるのにも関わらず場合分けをして全てコーディングしてある状況です。
最終目標:処理のブロックにわけてプログラムの行数を削減、
     必要な処理のチェックボックスを作成して選択、
     チェックされた処理のみを適宜処理(もちろんエラー対応有り)

このようなプログラムに修正しようと思っております。
1.Public Sub …A… End Sub
  Public Sub …B… End Sub
  Public Sub …C… End Sub
という上記A、B、Cをまとめて呼び出す場合、
 Public Sub “任意の文字列”
  Call A
  Call B
  Call C
 End Subだけ(A、B、Cは処理の記載があるとします。)で動作するのでしょうか?
まだまだVBAを勉強中なのでわからないことばかりです。
ご教示よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/05/12 15:41:06
  • 終了:2014/05/19 14:36:18

ベストアンサー

id:sasada No.1

sasada回答回数1482ベストアンサー獲得回数1332014/05/12 16:19:51

Public Sub A()
  処理A
End Sub
Public Sub B()
  処理B
End Sub

と名前をつければ、

Public Sub なにがし()
  CALL A
  CALL B
End Sub

または、
Public Sub なにがし2()
  A
  B
End Sub

で、プロシージャの呼び出しは出来ます。
http://www.officepro.jp/excelvba/basic/index1.html
http://www.officetanaka.net/excel/vba/statement/Call.htm

 ただ、これは手続き型の処理で、オブジェクト指向とは別の次元の話ですが。。。

他3件のコメントを見る
id:sasada

 VBAはクラスモジュールを使って「プロパティとメソッドを名前空間で分離できる」ので、広い意味でのオブジェクト指向言語と言えます。言えますが。。。

 ただ、smalltalkに始まる、クラスの継承・オーバーロードなどを用いた概念はありません。JAVAなんかと似たコーティングは大変です。同じやり方をしようとするとソースコードが見にくくなったり、クラスモジュールが乱立した入りで、わややになります。

 VBAでオブジェクト指向の基礎を学ぶなら、まずは、

  1. 適切なモジュール化(オブジェクト化)←ここが難しい
  2. 各モジュールに適切なプロパティ(変数)とメソッド(関数)の設定

を心がけてみてはいかがでしょうか。

2014/05/13 22:40:51
id:keijun5145

VBの初期段階ではオブジェクト指向ではなかったことは知っています。
ただ.netになってから少しずつ変化してきていると思っています。
JAVAやC++とどの程度格差がなくなってきたのかと思って質問させていただきました。

プログラム自体は分割できて問題なく動いているのでこれで質問を閉めたいと思います。
ありがとうございました。

2014/05/18 11:23:30

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません