Erase関数のエラーを消すには?

解決


まねちんぼう  2003-06-24 14:03:31  No: 107607  IP: [192.*.*.*]

VBプログラミングを必死にこころみてる初心者です。
構造体の構造体宣言(とう言葉があるのかな?)を行い、
プロシージャで変数を初期化しようと試みたのですが、コンパイルエラーが出て
うまくいきません。以下に抜粋を記します。よろしければアドバイス頂けたら
うれしいです。

☆  標準モジュール    

  Public Type AMENUtyp  
      aa                As Byte  
      bb                As Byte  
    :
  End Type  

  Public Type BMENUtyp  
      cc                As Byte  
      dd               As Double  
    :
  End Type  

  Public Type CHENGEtyp  
      AMENU(4)           As AMENUtyp          
      BMENU(44)          As BMENUtyp          
    :        
  End Type          
  Public CHENGE       As CHENGEtyp          

☆  frm                  
  Private Sub sub_CCchenge()          
              
    Erase CHENGE.BMENU  ←  ここでおちる    
    Erase CHENGE.AMENU  
                    :

エラーの内容は以下のものです。
”コンパイルエラー:名前が適切ではありません  :BMENUtyp”  
文法的には間違ってないとは思うのです。根拠は、

 Erase CHENGE.BMENU  のステートメントをコメントにしたら

コンパイルは通りました。(Erase CHENGE.AMENUは、とおります)
アドバイスお願いします。

編集 削除
 2003-06-24 16:53:23  No: 107608  IP: [192.*.*.*]

ソースをコピペして、試してみましたが
自分の環境では特にエラーはでなかったです。

根本的なところでスペルミスとかないでしょうか?
たいした助言でなくて申し訳ないのですが(-_-;;

参考までに自分の実行ソースと動作内容を。

<Module1.bas>
Public Type AMENUtyp
    aa                As Byte
    bb                As Byte
End Type
Public Type BMENUtyp
    cc                As Byte
    dd             As Double
End Type
Public Type CHENGEtyp
    AMENU(4)           As AMENUtyp
    BMENU(44)          As BMENUtyp
End Type
Public CHENGE       As CHENGEtyp

<form1.frm>  (標準EXEにコマンドボタンを1つ貼り付けました)
Private Sub Command1_Click()
    CHENGE.AMENU(2).aa = 1
    CHENGE.AMENU(2).bb = 1
    CHENGE.BMENU(10).cc = 1
    CHENGE.BMENU(10).dd = 1
  Erase CHENGE.BMENU
  Erase CHENGE.AMENU
End Sub

フォーム中、問題の箇所で中断して、1行ずつ実行して
Erase前後での値を確認しましたが、Erase前に値1が設定され、
Erase後にクリアされていました。
コンパイルも問題なくできています。

以上、参考にならないかもで申し訳ないのですが、報告まで。

編集 削除
 2003-06-24 16:54:12  No: 107609  IP: [192.*.*.*]

ソースをコピペして、試してみましたが
自分の環境では特にエラーはでなかったです。

根本的なところでスペルミスとかないでしょうか?
たいした助言でなくて申し訳ないのですが(-_-;;

参考までに自分の実行ソースと動作内容を。

<Module1.bas>
Public Type AMENUtyp
    aa                As Byte
    bb                As Byte
End Type
Public Type BMENUtyp
    cc                As Byte
    dd             As Double
End Type
Public Type CHENGEtyp
    AMENU(4)           As AMENUtyp
    BMENU(44)          As BMENUtyp
End Type
Public CHENGE       As CHENGEtyp

<form1.frm>  (標準EXEにコマンドボタンを1つ貼り付けました)
Private Sub Command1_Click()
    CHENGE.AMENU(2).aa = 1
    CHENGE.AMENU(2).bb = 1
    CHENGE.BMENU(10).cc = 1
    CHENGE.BMENU(10).dd = 1
  Erase CHENGE.BMENU
  Erase CHENGE.AMENU
End Sub

フォーム中、問題の箇所で中断して、1行ずつ実行して
Erase前後での値を確認しましたが、Erase前に値1が設定され、
Erase後にクリアされていました。
コンパイルも問題なくできています。

以上、参考にならないかもで申し訳ないのですが、報告まで。

編集 削除
Loreley  2003-06-25 00:51:10  No: 107610  IP: [192.*.*.*]

そのエラーは名前が重複してたりすると
出るエラーだと思いましたが、

そういうことはありませんか?

私もためしましたが特にそういうエラーはでません。

編集 削除
まねちんぼう  2003-06-25 09:26:51  No: 107611  IP: [192.*.*.*]

Jさん、Loreleyさん、ありがとうございます。
どうもスペルミスではないようです。

もともと、このプログラムはVB4.0で書かれていたので、その辺が関係あるのかも
しれません。もう一度見直してみます。

編集 削除