投稿日 | : 2003/09/13(Sat) 12:42 |
投稿者 | : kuro |
Eメール | : |
URL | : |
タイトル | : Re^2: 変数について |
> 変数を固定配列の要素指定にすることは出来ません。
> 固定長の配列宣言の要素指定にはリテラル(定数)を指定しなければなりません。
>
> エラーダイアログのヘルプボタンで表示されるヘルプを参照してください。
> ヘルプにはこのように書いてあります。
>
> >配列の宣言で、要素数を変数で指定しようとしています。
> >プロシージャ内で動的配列を宣言するには、ReDim で配列を宣言してから、変数で要素数を指定します。
>
> 正し次のようなケースではコンパイルは成功します。
> Const BB As Long = 5
> Type aaa
> E As Long
> F(0 To BB - 1) As Long
> End Type
> これは冒頭にも書きましたが、定数を指定しているからです。
>
> 動的に配列を確保する場合は関数内で行う必要があります。
> なぜなら、ReDimステートメントを使用できるのはプロシージャ レベルだけだからです。
> 詳しくはヘルプ参照して下さい。
>
> 動的に配列要素を指定する場合は以下のようにします。
> Type aaa
> E As Long
> F() As Long
> End Type
> Dim a As aaa
>
> Sub XXX()
> Dim BB
> BB = 1
> Redim a.F(0 To BB - 1)
> End Sub
>
> また、このコードで注意しなければならないのは、変数 BB が 0 以下の場合エラーとなるので注意してください。
********************************************
有難う御座いました。
説明不足だったかも知れません。
BBには他の関数から得た値を入れたかったのです。
結局、For・・・Nextを使ってコードを変更しました。
Type aaa
E As Long
F As Long
End Type
Dim a As aaa
Sub XXX()
BB = ff 'ff関数からの値
For i = 0 To BB - 1
CopyMemory a ,gg ,a
Debug.Print F
Next i
End Sub