Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7364 / 76732 ←次へ | 前へ→

【74956】クラスモジュール内のユーザ定義型変数について
質問  KJ  - 13/10/31(木) 17:37 -

引用なし
パスワード
   はじめまして。

現在、あるデータを(ある種の)ツリー構造にするため、
Excel2007のVBAでコーディングをしているのですが、
どうしても実現できないので、意見をお借りしたいと思い、
投稿させていただきました。

構築したいデータ構造とは、
各ノードに対して、左と右の要素をもち
親ノード(以下Rootとする)に対して
左の要素には、ユーザ定義型で準備した変数に、
右の要素には、Rootと同じ構造をもつか、データがない状態、
ということを行いたいのです。

また、データの追加は、新規のデータを左の要素にもち、
これまでのツリーを右の要素(子要素)にもつ、新たな


現在のコードを簡略化させたコードが以下になります

================ 標準モジュール Module1 =====================
Public Type SomeType
  num As Long
  chars As String
End Type

================ クラスモジュール Class1 ====================
Dim typeValue As SomeType

Dim childObj As Class1

Dim depth As Long

Private Sub Class_Initialize()
  depth = 0
  With typeValue
    .num = 0
    .chars = ""
  End With
End Sub

Public Function createNestObj(childValue As SomeType) As Class1
  
  Dim newValue As New Class1
  
  With newValue
    
    With .typeValue
      .num = childValue.num + 1
      .chars = childValue.chars & "a"
    End With
    .depth = Me.depth - 1
    Set .childObj = Me
    
  End With
  
End Function

========================= 以上 ==========================

このようにしたときに、
  With .typeValue
の箇所で、コンパイルエラー
「メソッドまたはデータ メンバが見つかりません」
が発生してしまいます。
宣言のDimをPrivateにしても同じコンパイルエラーが発生し、
また、Publicにすると
「定数、〜〜、ユーザー定義型および〜〜はオブジェクトモジュールのパブリックメンバとしては使用できません。」
と出てしまいます。


具体的なイメージとしては、
1+1+1+1

(1+(1+(1+(1_$))))
としたいです。
(+と_は2つの子要素をもつノード、$は要素なし:Nothing、
カッコ1組で1つのオブジェクト、"1"には実際には複数の情報をもっている)

現在でもクラスモジュールの数が多く、ごちゃごちゃしてきているのと、
(標準モジュールの量はまだすっきりしています、)
計算速度が求められる処理なので、
2つのクラスモジュールを費やして実現することはできるだけ避けたいです。
(基本はJava使いなので、まだJavaとのクラスの違いに馴染めずにいます。)

改善・改善策でなくとも、全然違うアプローチからでもよいですので、
意見をいただけたらと思います。

よろしくお願いいたします

448 hits

【74956】クラスモジュール内のユーザ定義型変数について KJ 13/10/31(木) 17:37 質問
【74957】Re:クラスモジュール内のユーザ定義型変数... γ 13/10/31(木) 21:42 発言
【74958】Re:クラスモジュール内のユーザ定義型変数... Abyss 13/11/1(金) 1:32 発言
【74979】Re:クラスモジュール内のユーザ定義型変数... KJ 13/11/5(火) 9:24 お礼
【74978】Re:クラスモジュール内のユーザ定義型変数... KJ 13/11/5(火) 9:06 お礼

7364 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free