Excel VBA質問箱 IV

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

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


58709 / 76732 ←次へ | 前へ→

【22746】Re:配列データの引用
回答  G-Luck  - 05/3/2(水) 9:00 -

引用なし
パスワード
   ▼kan さん:
>初歩的な質問でしたら申し訳ございません。
>悩んでいるので、ご教授いただければと思います。
>
>仮に・・・
>sub sample1()
>
>  data(10,10)・・・・この配列にはデータを格納済み  
>
>end sub
>sub sample2()
>
>  newdata(1,10)=data(1,10)・・・・格納済みの配列を加工したい
>
>end sub
>
>上記の様に、既存の配列を基に再加工等したい場合は
>どのような処理をすればよろしいのでしょうか?

G-Luckといいます。

ひとつは、グローバル変数で渡す方法
Private data(10,10) As Variant
>sub sample1()
>  data(10,10)・・・・この配列にはデータを格納済み  
>end sub
>sub sample2()
>  newdata(1,10)=data(1,10)・・・・格納済みの配列を加工したい
>end sub

変数で渡す
>sub sample1()
>  data(10,10)・・・・この配列にはデータを格納済み  
  Call sample2(data)
>end sub
sub sample2(data As Variant)
>  newdata(1,10)=data(1,10)・・・・格納済みの配列を加工したい
>end sub

変数で渡し保持させておく
>sub sample1()
>  data(10,10)・・・・この配列にはデータを格納済み  
  Call sample2(data,True)
>end sub
sub sample2(Optional data As Variant, Optional flg As Boolean = False)
  Static newdata as Variant

  If flg = True Then
    newdata=data
    Exit Sub
  End If

  '実際の処理 flg=Falseの時の処理
>end sub

セルに保持させておく
>sub sample1()
>  data(10,10)・・・・この配列にはデータを格納済み  
  Range("A1:K11") = data
>end sub
>sub sample2()
  data = Range("A1:K11").Value
>  newdata(1,10)=data(1,10)・・・・格納済みの配列を加工したい
>
>end sub
といったところでしょうか?

簡単なのは、グローバル変数です。ただ、エラーが出た時とかにリセットされてしまう時があるので長く保持するのであれば、確実にセルに保存する方がいいです。
そのセルを表示させたくない場合は、SheetのVisibleを2(xlSheetVeryHidden)にして、シートごと非表示にするといいですよ。

0 hits

【22732】配列データの引用 kan 05/3/1(火) 18:57 質問
【22733】Re:配列データの引用 IROC 05/3/1(火) 20:21 回答
【22746】Re:配列データの引用 G-Luck 05/3/2(水) 9:00 回答
【22748】Re:配列データの引用 kan 05/3/2(水) 9:43 お礼

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