Excel VBA質問箱 IV

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

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


11537 / 13645 ツリー ←次へ | 前へ→

【15596】配列の宣言 ごーはら 04/6/30(水) 12:10 質問[未読]
【15598】Re:配列の宣言 Asaki 04/6/30(水) 12:45 回答[未読]
【15601】Re:配列の宣言 Asaki 04/6/30(水) 12:54 回答[未読]
【15608】Re:配列の宣言 ごーはら 04/6/30(水) 13:37 お礼[未読]
【15599】Re:配列の宣言 Jaka 04/6/30(水) 12:50 回答[未読]
【15609】Re:配列の宣言 ごーはら 04/6/30(水) 13:39 お礼[未読]

【15596】配列の宣言
質問  ごーはら E-MAILWEB  - 04/6/30(水) 12:10 -

引用なし
パスワード
   お世話になっています。

  Dim FlogArray As Variant
   FlogArray = Array(WS1.Range("AL2:AL9"))

と、セルの範囲を配列に格納しようとしたのですが、
  MsgBox (FlogArray(1))
で1番目のデータを見ようとすると、「インデックスの有効範囲にありません」というようなエラーが出ます。記述の仕方が間違っていると思うのですが、、、

基本的な質問ですみません。
よろしくお願いします。


因みにその後は次のように続きます。
   For j = 0 To 7
    If FlogArray(j) = FnameFull Then
    MsgBox ("選択したファイルはすでにインポートされています。")
    Exit Sub
    End If
    
    If FlogArray(j) = "" Then
    FlogArray(j) = FnameFull
    Exit For
    End If
   Next j


【15598】Re:配列の宣言
回答  Asaki  - 04/6/30(水) 12:45 -

引用なし
パスワード
   こんにちは。

Array() を利用した場合は、その要素必ず0番目から始まります。

さて、FlogArray には、"AL2:AL9"の範囲を表すRangeオブジェクトが格納されていることになりますが、これは意図と違うのではありませんか?
配列にするなら
Dim FlogArray As Variant
FlogArray = WS1.Range("AL2:AL9").Value
必ず2次元になりますので、
FlogArray(1,1) '<-- AL2 の値
FlogArray(2,1) '<-- AL3 の値

この場合は、各要素は1から始まりますので、ループは1から8までになります。

【15599】Re:配列の宣言
回答  Jaka  - 04/6/30(水) 12:50 -

引用なし
パスワード
   こんにちは。
病み上がりなので、こんなものですみません。

Sub nnms()
  Dim セルをぶち込む配列 As Variant
  セルをぶち込む配列 = Sheets("Sheet2").Range("AL2:AL9").Value
  For i = 1 To UBound(セルをぶち込む配列)
    MsgBox セルをぶち込む配列(i, 1)
  Next
  Erase セルをぶち込む配列
End Sub

【15601】Re:配列の宣言
回答  Asaki  - 04/6/30(水) 12:54 -

引用なし
パスワード
   >FlogArray には、"AL2:AL9"の範囲を表すRangeオブジェクトが格納されている
ちょっと補足します。
FlogArray の要素数は0番目の1個だけで、これがRangeオブジェクトになっています。

【15608】Re:配列の宣言
お礼  ごーはら E-MAILWEB  - 04/6/30(水) 13:37 -

引用なし
パスワード
   解決しました!

Array関数の使い方など全く違っていたんですね。
Rangeオブジェクトだと2次元配列で格納されることも知りませんでした。

Asakiさん、Jakaさん、どうもありがとうございました!

【15609】Re:配列の宣言
お礼  ごーはら E-MAILWEB  - 04/6/30(水) 13:39 -

引用なし
パスワード
   間違って深い場所にレスをつけてしまいました。
答えて下さったお二方、ありがとうございました!

>解決しました!

>Array関数の使い方など全く違っていたんですね。
>Rangeオブジェクトだと2次元配列で格納されることも知りませんでした。

>Asakiさん、Jakaさん、どうもありがとうございました!

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