[[20070831100952]] 『関数の入れ子?』(Null) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『関数の入れ子?』(Null)
 VBAで関数やクラスの入れ子って可能でしょうか??
 例えば
 Function test(){
   this.Add = function{
    ・
    ・
   }
   this.Claer = function{
    ・
    ・
   }
 }

 こういうのは可能でしょうか??また変わりになりそうな手段はないですか??

 [何をしたいか]
 Block.Item(1).Key.Add("ID0001")
 みたいな階層の深いクラスを作りたいんです。
 構造体ならTypeをたくさん書けばいいのですが、クラスの階層を深くする場合って、クラスモジュールを大量に生成する?とかですかね??
 どなたか詳しい方いましたらご教授願います><;

OS[WindowsXP] Excel[2003]


 > どなたか詳しい方
 詳しくはありません。興味を持った者です。m(__)m

 ROMしたかったのですが、レスが入らないようなので、、、 

 > [何をしたいか]
 > Block.Item(1).Key.Add("ID0001")
 > みたいな階層の深いクラスを作りたいんです。
  言葉のアヤでこのような表現になったのだと思いますが、額面どおりですと、
 手段が目的となっているので少し変だと思います。

 「何がしたいかは別のところにあり、それを実現するには、結果的に上のような
 表記にならざるを得ないが、それは可能か?」と云うことなら分ります。

 恐らく出来ると思いますが、やったことがないので絶対ではありません。

 >クラスの階層を深くする場合って、クラスモジュールを大量に生成する?とかですかね??
  何をしたいかが明確でない限り、クラスの設計はできないですし、
 延いては「大量に生成する」ことが必要か否かも、回答側には分らないと思います。

  プロパティ/メソッド名からして、既存のCollectionオブジェクトとかDictionaryオブジェクトを
 利用すれば、自作クラスは少なくて済むような気がします。

 (半平太)

  >Block.Item(1).Key.Add("ID0001")
  ↑
  とにかく、この形になればよい、と云う方針でやってみました。
  プログラムに意味は全くありません。 m(__)m

 <クラスモジュール>            | <標準モジュール> 
  クラス名 = MyClass1            | 
                                          | Sub main()
 Dim MyName As String                |  Dim Block As New MyClass1
                                          |    Block.Item(1).Key.add ("ID0001") 
   Function Item(nn As Long) As MyClass1 | End Sub
       MyName = "半平太" & nn             |
       Set Item = Me                      |
   End Function                           |
                                          |
   Function Key() As MyClass1             |
       Set Key = Me                       |
   End Function                           |
                                          |
   Sub add(mm As String)                  |
       MsgBox MyName & mm                 |
 End Sub                                 |

 (半平太)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.