
No.3ベストアンサー
- 回答日時:
これは変数のスコープの問題ではありません。
一度DimまたはRedimで定義した配列は
Redimで要素数を変更出来るのは最後尾にある次元の要素数だけです。
(Public pubTMP() の()付きで配列宣言しましょう)
上記の通り(2,2)から(3,3)へはRedim出来ません。
(2,2)から(2,3) 3次元配列だと(2,2,2)から(2,2,3)という具合です。
これらを踏まえると、必要なサイズ(1次元目の要素数)を何らかの方法で取得しておいて
初めのRedimで定義しましょう。2次元目の要素数は必要な時にRedimすれば良いでしょう。
i = 1次元目の必要なサイズ
Redim pubTMP(i,2)
2次元目の要素数を一つ上げる時
ReDim Preserve pubTMP(i, Ubound(pubTMP, 2) + 1)
どうしても1次元目を増やしたいんだ!という事であれば
配列に配列を格納するジャグ配列というものがあるので(使い方は難しいですけど)
興味があれば調べてみて下さい。うまくジャグ配列が使えればお望みの事は実現出来ます。
No.2
- 回答日時:
> この場合、test222の処理で「SubまたはFunctionが定義されていません」
> とエラーになってしまいます。
こちらの環境ではエラーにならないですけどね。。。
同じクラス内(Sheet1の中に全部書く)なら Private でも通ります。
標準モジュールに宣言してあっても通ります。
Sheet1に宣言してあって、Sheet2で使うのはエラーになります。
No.1
- 回答日時:
sub testでpubTMPの2次元配列を設定し直せば良いのではないでしょうか。
Public pubTMP(3, 3) As Stringにすれば上記のredimは不要ですが。
希望されてる方法で無い場合はご容赦下さい。
sub test()
ReDim pubTMP(3, 3) As String
pubTMP(2,2)="aaa"
test222
Msgbox pubTMP(2,2)
Msgbox pubTMP(3,3)
End Sub
この回答への補足
ご回答ありがとうございます!
この場合、test222の処理で「SubまたはFunctionが定義されていません」とエラーになってしまいます。
やはりPublicステートメントで定義しても、Subプロシージャ間での配列の共有はできないのでしょうか。
親プロシージャで"Dim pubTMP"と定義し、ByRefで子プロシージャに引数で渡し、"ReDim Preserve pubTMP(3,3)"と要素を増やしセットは可能なのですが、
親プロシージャで更に要素増"ReDim Preserve pubTMP(5,5)"することができません。
1つのプロシージャ内でしか要素を増やすことができないように感じています
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロについて教えてください。 4 2023/06/06 09:06
- Visual Basic(VBA) マクロについて教えてください。 1 2023/06/06 00:57
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Excel(エクセル) 【マクロ】リボン、行列、数式・ステータスバを非表示に 4 2022/12/12 07:32
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
VBA public変数はどのようなことをしたら解放されますか?
Visual Basic(VBA)
-
-
4
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
5
Excel-VBAの配列「Public Const」について
Visual Basic(VBA)
-
6
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
7
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
8
Excel VBAで、ユーザーフォームの値を、モジュールで使用したい。
Visual Basic(VBA)
-
9
VBAで別モジュールへの変数の受け渡し方法
Visual Basic(VBA)
-
10
VBAの配列サイズとメモリに関して
Visual Basic(VBA)
-
11
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
12
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
-
13
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
14
読み込みで一行おきに配列に格納
Visual Basic(VBA)
-
15
Excel VBAにて、2GB超の点群データ(CSVファイル,改行コードLF)を高速で解析したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
配列の重複削除について
-
クラスに配列を渡す方法
-
文字の整列(printf)
-
二次元配列のインデックスについて
-
エクセルVBAでTransposeの不思議
-
perlで2次元配列をサブルーチ...
-
HTML::Parserの解析結果
-
二次元配列における要素数のは...
-
perlで配列の要素が空なのを知...
-
バイナリデータの検索(VB.NET2008)
-
Strawberry Perl for Windows ...
-
リストボックスに縦スクロール...
-
画面を強制的に再描画させる方法
-
CSVファイルの特定の行だけを読...
-
VB2010でCSVファイルの読み込み
-
流れ図(フローチャート)が分か...
-
GIFアニメをループさせたくない
-
ハッシュ値が一致したデータは...
-
vb.netです。2次元配列の要素を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでTransposeの不思議
-
VBAのautofilter、criteriaの配...
-
マクロ Publicでの配列定義
-
Excel VBA ユーザーフォームの...
-
チェックボックスのperlでの値...
-
リストボックスに縦スクロール...
-
Strawberry Perl for Windows ...
-
クラスに配列を渡す方法
-
二次元配列のインデックスについて
-
二次元配列における要素数のは...
-
文字の整列(printf)
-
Dim flag(4) as boolean で配列...
-
perl 配列の要素数について
-
複数の配列の全ての組み合わせ...
-
バイナリデータの検索(VB.NET2008)
-
perlで配列の要素が空なのを知...
-
可変長配列を、動的確保した固...
-
perl このテキストファイルを簡...
-
VBScript 配列
-
VB6で配列の最大値を簡単に求め...
おすすめ情報