Excel VBA質問箱 IV

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

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


10446 / 13644 ツリー ←次へ | 前へ→

【21810】preserve宣言に関して たま 05/1/31(月) 13:24 質問[未読]
【21811】Re:preserve宣言に関して kazu 05/1/31(月) 13:33 発言[未読]
【21812】Re:preserve宣言に関して たま 05/1/31(月) 13:50 お礼[未読]
【21814】Re:preserve宣言に関して G-Luck 05/1/31(月) 14:04 発言[未読]

【21810】preserve宣言に関して
質問  たま  - 05/1/31(月) 13:24 -

引用なし
パスワード
   最近、VBAを利用することが多く、よく利用させてもらっています。

以下が作成したプログラムなのですが、ReDim Preserve TempD(x - 1, 2)で
エラーが表示されてしまいます。一次元配列にした場合はReDim Preserve TempD(x - 1)問題なく動き、値も取れます。

何が問題なのでしょうか?

Set fsObj = CreateObject("Scripting.FileSystemObject")

For FiloX = 0 To UBound(FSet)
 FName = LiDirPath & "\" & FSet(FiloX)
 Set sOf = fsObj.opentextfile(FName, 1, False)

 '各ライセンスの最終行を取得する
 x = 0 '初期値
 Do While sOf.atEndofLine <> True
  Gets = sOf.ReadLine
  
  If x <> 0 Then
   ReDim Preserve TempD(x - 1, 2)
   Temp = Split(Gets, ",")
   TempD(x - 1, 0) = Temp(0)
   TempD(x - 1, 1) = Temp(1)
   TempD(x - 1, 2) = Temp(2)
  Else
   License_Int(FiloX) = Gets 'License_Int()にLICENSE数格納
  End If
  x = x + 1
 Loop
 
 MsgBox (UBound(TempD) & ";" & TempD(UBound(TempD, 2)))
  
 sOf.Close
 
Next FiloX

【21811】Re:preserve宣言に関して
発言  kazu  - 05/1/31(月) 13:33 -

引用なし
パスワード
   ▼たま さん:
こんにちは。

2次元以降の配列の場合、最後の要素以外は変動不可になってしまう為です。
詳細はヘルプを参照してみて下さい。

【21812】Re:preserve宣言に関して
お礼  たま  - 05/1/31(月) 13:50 -

引用なし
パスワード
   ありがとうございました。HELPを見て確認致しました。

無理なんですね...残念です!!。
他の方法を考えてみます。

【21814】Re:preserve宣言に関して
発言  G-Luck  - 05/1/31(月) 14:04 -

引用なし
パスワード
   WorksheetFunction.Transpose
で、行列を入れ替えてから、
Redim して、再び
WorksheetFunction.Transpose
を実行して戻してみては?
最初の配列の設定を、逆にできるならそのほうがよさそうですが。

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