![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
本当にPublicな変数(配列で)
Visual Basic(VBA)
-
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
-
4
UserForm1.Showでエラーになります。
工学
-
5
DATE型変数を初期化する方法
Visual Basic(VBA)
-
6
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
7
CheckBoxの配列化
Access(アクセス)
-
8
エクセル・VBA CheckBoxのオブジェクト名に変数を使うことは可能でしょうか?
Excel(エクセル)
-
9
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
10
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
11
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
12
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
13
Excelのマクロ名の並び順の法則は?
Excel(エクセル)
-
14
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
15
VBAで配列引数を値渡しできない理由
Visual Basic(VBA)
-
16
vba 時間の引き算 例えば 15:00から16:15の間の時間は1時間15分ですが、vbaのコード
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
二次元配列における要素数のは...
-
エクセルVBAでTransposeの不思議
-
チェックボックスのperlでの値...
-
クラスに配列を渡す方法
-
フローチャートを教えてください
-
二次元配列のインデックスについて
-
リストボックスに縦スクロール...
-
文字の整列(printf)
-
perlで配列の要素が空なのを知...
-
MATLABの関数で配列の要素を返...
-
Perlで<select multiple>の複数...
-
perl qw(aaa bbb ccc)[$hoge]...
-
UWSCの終了の仕方
-
VBAでの一時停止と再開の方法
-
画面を強制的に再描画させる方法
-
【VBA】全て空白のセルの列の非...
-
DoEventsが必要な理由について
-
範囲指定したセルを1つずつ飛...
-
VBのReturnの使い方
-
フラグについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
Strawberry Perl for Windows ...
-
リストボックスに縦スクロール...
-
二次元配列のインデックスについて
-
文字の整列(printf)
-
エクセルVBAでTransposeの不思議
-
クラスに配列を渡す方法
-
二次元配列における要素数のは...
-
Excel VBA ユーザーフォームの...
-
perlで配列の要素が空なのを知...
-
perlで2次元配列をサブルーチ...
-
マクロ Publicでの配列定義
-
Dim flag(4) as boolean で配列...
-
参照配列の要素数の求め方は?
-
チェックボックスのperlでの値...
-
VB6で配列の最大値を簡単に求め...
-
jcode->jfold で禁則処理
-
DataGridViewに配列の値を表示...
-
VBScript 配列
-
配列を使わずに、数字(連番)...
おすすめ情報