アプリ版:「スタンプのみでお礼する」機能のリリースについて

クラスモジュールの宣言領域で、ユーザ定義型を使おうとしました。
Type AA
AA.a as string
Aa.b as string
End type
エラーメッセージ オブジェクトモジュール内ではパブリックユーザ定義型は定義できません。

クラスモジュールを複数作り、共通で使うユーザ定義型を作ろうとしてました。どう対策したらいいでしょうか?全部1つのモジュールに入れたら出来ますか?見やすくするためにも出来れば複数モジュールで使えるようにしたいのです。

A 回答 (3件)

No.1です。



> 標準モジュールで宣言出来ました。しかし、今度は型宣言にてエラーです。

> コンパイルエラー 名前が適切ではありません。AA
> Private mAA As AA ←AAが反転表示

クラスモジュール内で記述して、ってことですよね?
No.1で記載した内容は実際に動作確認したものを張り付けました。それをコピペしてもダメですか?

あと、ユーザ定義がちゃんとできていれば
"Private mAA As” まで入力した段階で入力候補にAAが表示されるはずですのでご確認下さい。


最後に一般論ですが
エラーが発生した行のご提示だけでは原因が追えない場合もありますので、入力したプログラムコードを全て手入力ではなくコピーしてご提示いただいた方が良いと思います。
    • good
    • 0
この回答へのお礼

再度ありがとうございます。
あれから色々と試してますが、何かする度に色々なエラーが出てます。おそらくかなりマズイことをやってるのでしょう。もう少し整理して出直します。

お礼日時:2018/02/10 08:37

あまり、こういうスタイルで書くことは少ないような気がしますが、意味を取り違えていたらすみません。

Class 内で、全部、Private にしたら、標準モジュールには何も出てこないと思います。

'//
''標準モジュール
Dim myClass As Class1
Public mAA As AA
Type AA
 a As String
 b As String
End Type

Sub Test1()
Dim c, d
Set myClass = New Class1
c = mAA.a
d = mAA.b
End Sub

Class 側は、

Private Sub Class_Initialize()
 mAA.a = "A"
 mAA.b = "B"
End Sub
    • good
    • 0
この回答へのお礼

いつもありがとうございます。
お試しでなく実際に使うクラス作るのは初めてで、かなり難航してます。ひとつ対策したと思ったら、変更部分に起因する別エラーが、しかもほとんどコンパイルエラーです。もう少し整理して出直します。

お礼日時:2018/02/10 08:40

ユーザー定義型を標準モジュールで定義すれば良いです。



Module1モジュール
-----
Public Type AA
 a As String
 b As String
End Type
-----

Class1モジュール
-----
Private mAA As AA

Private Sub Class_Initialize()
 mAA.a = "a"
 mAA.b = "b"
End Sub
-----
    • good
    • 0
この回答へのお礼

ありがとうございます。
標準モジュールで宣言出来ました。しかし、今度は型宣言にてエラーです。

コンパイルエラー 名前が適切ではありません。AA
Private mAA As AA ←AAが反転表示

AAの名前は予約語等ではない筈です。クラス化する前に標準モジュールだけで動かしていた時は使えてました。ただ、私自身クラスの使用は初めてなので、凡ミスの可能性はあります。

お礼日時:2018/02/04 20:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A