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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
本当にPublicな変数(配列で)
Visual Basic(VBA)
-
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
-
4
エクセル・VBA CheckBoxのオブジェクト名に変数を使うことは可能でしょうか?
Excel(エクセル)
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
VBAで別モジュールへの変数の受け渡し方法
Visual Basic(VBA)
-
7
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
8
CheckBoxの配列化
Access(アクセス)
-
9
ブック名、シート名を他のモジュールからも参照可能にする方法
Access(アクセス)
-
10
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
11
VBAのTextBoxに半角数字のみ入力したい
Visual Basic(VBA)
-
12
ListViewの行選択について
Visual Basic(VBA)
-
13
Excel VBA 動的に作成したチェックボックスにイベントを追加したい
Excel(エクセル)
-
14
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
15
配列の参照渡しで型が一致しません。
Visual Basic(VBA)
-
16
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
17
エクセルVBAのテキストボック、Exitイベント
その他(プログラミング・Web制作)
-
18
変数を動的に作るには?
Visual Basic(VBA)
-
19
エクセルVBAでフォームのListboxをスクロールするには?
その他(Microsoft Office)
-
20
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlで2次元配列をサブルーチ...
-
Excel VBA ユーザーフォームの...
-
VBAのautofilter、criteriaの配...
-
マクロ Publicでの配列定義
-
二次元配列のインデックスについて
-
リストボックスに縦スクロール...
-
配列を初期化する時ってどうす...
-
Excel(VBA)で配列の要素数を...
-
perlで配列の要素が空なのを知...
-
Dim flag(4) as boolean で配列...
-
ファイル名に日付・時刻を付与...
-
エクセルVBAでTransposeの不思議
-
VBA 多次元配列を用いてグルー...
-
perl 配列の要素数について
-
重複しない乱数発生
-
二次元配列における要素数のは...
-
fortran
-
perl このテキストファイルを簡...
-
jcode->jfold で禁則処理
-
可変長配列を、動的確保した固...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
二次元配列のインデックスについて
-
VBAのautofilter、criteriaの配...
-
Excel VBA ユーザーフォームの...
-
二次元配列における要素数のは...
-
マクロ Publicでの配列定義
-
Strawberry Perl for Windows ...
-
リストボックスに縦スクロール...
-
クラスに配列を渡す方法
-
Dim flag(4) as boolean で配列...
-
エクセルVBAでTransposeの不思議
-
perlで2次元配列をサブルーチ...
-
perlで配列の要素が空なのを知...
-
perl 配列の要素数について
-
組み合わせについての質問です...
-
隣同士の数字を足し合わせる
-
複数の配列の全ての組み合わせ...
-
perl 初等プログラミングについて
-
jcode->jfold で禁則処理
-
一致する要素が格納されている...
-
チェックボックスのperlでの値...
おすすめ情報