![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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
CheckBoxの配列化
Access(アクセス)
-
6
DATE型変数を初期化する方法
Visual Basic(VBA)
-
7
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
8
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
9
エクセル・VBA CheckBoxのオブジェクト名に変数を使うことは可能でしょうか?
Excel(エクセル)
-
10
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
11
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
12
VBAで配列引数を値渡しできない理由
Visual Basic(VBA)
-
13
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
14
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
15
vba 時間の引き算 例えば 15:00から16:15の間の時間は1時間15分ですが、vbaのコード
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlで配列の要素が空なのを知...
-
Perl 文字列を配列に直す方法
-
二次元配列における要素数のは...
-
perl 初等プログラミングについて
-
HTML::Parserの解析結果
-
Processing言語 listの配列数
-
DoEventsが必要な理由について
-
GIFアニメをループさせたくない
-
VBAでの一時停止と再開の方法
-
UWSCに制限時間を付けたいです
-
VB.NETで素因数分解のプログラ...
-
Escキーを押すと、中断する時と...
-
流れ図(フローチャート)が分か...
-
Javaの質問です。 この問題の答...
-
C#の勉強を始めたばかりの者です。
-
.htaccessがループしてる?それ...
-
WinAPI「MsgWaitForMultipleObj...
-
エクセルの当番表を作っていま...
-
UWSCの終了の仕方
-
VBのReturnの使い方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dim flag(4) as boolean で配列...
-
VBAのautofilter、criteriaの配...
-
二次元配列のインデックスについて
-
二次元配列における要素数のは...
-
エクセルVBAでTransposeの不思議
-
クラスに配列を渡す方法
-
リストボックスに縦スクロール...
-
マクロ Publicでの配列定義
-
Excel VBA ユーザーフォームの...
-
文字の整列(printf)
-
perl 配列の要素数について
-
perlで配列の要素が空なのを知...
-
Strawberry Perl for Windows ...
-
VBA 二次元配列の1つ目を増...
-
チェックボックスのperlでの値...
-
perl 初等プログラミングについて
-
DBIを使ってSelect文 複数のカ...
-
複数のキーで配列をソートする...
-
Excel(VBA)で配列の要素数を...
-
newで個別に生成した配列にNULL...
おすすめ情報