
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
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
6
Excel VBAで、ユーザーフォームの値を、モジュールで使用したい。
Visual Basic(VBA)
-
7
VBAで別モジュールへの変数の受け渡し方法
Visual Basic(VBA)
-
8
VBAの配列サイズとメモリに関して
Visual Basic(VBA)
-
9
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
-
10
読み込みで一行おきに配列に格納
Visual Basic(VBA)
-
11
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
12
Excel VBAにて、2GB超の点群データ(CSVファイル,改行コードLF)を高速で解析したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バイナリデータの操作
-
perlで配列の要素が空なのを知...
-
VBAのautofilter、criteriaの配...
-
リストボックスに縦スクロール...
-
エクセルVBAでTransposeの不思議
-
マクロ Publicでの配列定義
-
Dim flag(4) as boolean で配列...
-
クラスに配列を渡す方法
-
二次元配列のインデックスについて
-
Strawberry Perl for Windows ...
-
VBScript 配列
-
プロシージャとは
-
Perl実行時のメモリ不足について
-
VBAでスロットを作る
-
ActivePerl がハングアップ
-
COBOLから呼ばれる時
-
画面を強制的に再描画させる方法
-
範囲指定したセルを1つずつ飛...
-
Null判定がきかない
-
VBA:For構文のエラー、対策教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
クラスに配列を渡す方法
-
二次元配列のインデックスについて
-
文字の整列(printf)
-
Dim flag(4) as boolean で配列...
-
マクロ Publicでの配列定義
-
エクセルVBAでTransposeの不思議
-
複数の配列の全ての組み合わせ...
-
Excel VBA ユーザーフォームの...
-
リストボックスに縦スクロール...
-
バイナリデータの検索(VB.NET2008)
-
可変長配列を、動的確保した固...
-
Strawberry Perl for Windows ...
-
perlで配列の要素が空なのを知...
-
if文条件式で配列を使用したい
-
VBScript 配列
-
VBA 二次元配列の1つ目を増...
-
二次元配列における要素数のは...
-
配列の各要素に文字列結合
-
Powershell $変数 = @()の空配...
おすすめ情報