VBAで引数をありでもなしでもできるようにするために
optionalというものがあります
例えば
sub aaa(bbb, optional ccc)
という使い方がされます。
sub aaa(bbb, optional ccc())
のようにして配列を引数として渡そうとするとエラーが発生してしまいます。
http://officetanaka.net/excel/vba/statement/Func …
このページによれば
ParmArrayを付けると、配列でも省略可能なものとして指定できるそうなのですが
functionではうまくいくのですが
subでやるとやはりエラーが出てしまいます。
VBAの仕様ではsubで配列を省略可能として使うことはできないのでしょうか?
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
上記参照URLによると、Paramarrayを使う場合はVariant型配列として宣言する必要があるそうです。
どこの誰が書いたかもわからんページですが。。。
No.2
- 回答日時:
こんばんは。
>VBAの仕様ではsubで配列を省略可能として使うことはできないのでしょうか?
既存の仕様そのものを変えようとするよりも、それに対応させればよいのではないでしょうか。
>Sub aaa(bbb, Optional ccc)
>という使い方がされます。
もちろん、パラメータ配列を引数にすることも可能ですから、パラメータ配列にするということもありますが、Variant型の引数で、配列も受けられるのですから、それで問題ということはないはずです。
それとも、何か不都合があるのでしょうか。
サンプル
'//
Sub Test1()
Dim a, b
a = 2
b = Array(1, 2, 3, 4)
TestArray a, b
End Sub
Sub TestArray(a, Optional b)
Dim c, n
If VarType(b) = vbArray Or vbVariant Then '配列の場合
For Each n In b
c = c + a * n
Next
MsgBox c
Else
'***** 'そうでない場合
End If
End Sub
'///
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Visual Basic(VBA) マクロについて教えてください。 4 2023/06/06 09:06
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) VBA。複数のChangeイベントをまとめる方法 2 2022/03/31 12:03
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
.NET - 配列変数を省略可能の引数にする方法
Visual Basic(VBA)
-
VBAで配列引数を値渡しできない理由
Visual Basic(VBA)
-
VB6でユーザー定義型がNothingかどうか調べるには?
Visual Basic(VBA)
-
-
4
Access サブフォームでの選択行の取得
その他(データベース)
-
5
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
6
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
7
VBAのエラー発生場所をメッセージBOXに表示
Visual Basic(VBA)
-
8
array関数で格納した配列の型を変更する
Visual Basic(VBA)
-
9
VBAの配列サイズとメモリに関して
Visual Basic(VBA)
-
10
VBAでワークシートを引数としてサンプル関数に渡したい
Visual Basic(VBA)
-
11
VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます
Visual Basic(VBA)
-
12
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
13
動的配列が存在(要素が有る)か否かを判定できますか?
Visual Basic(VBA)
-
14
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
15
プロシージャ名の取得
Visual Basic(VBA)
-
16
レコードセットにnullの場合
Visual Basic(VBA)
-
17
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
18
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
19
csvファイル 項目数取得
Visual Basic(VBA)
-
20
Accessのフィールド名に半角括弧を使ってしまった
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列数式の解除
-
エクセルで最小値から0を除く方法
-
えfor文とか使っちゃう時点で時...
-
ArrayListの初期値に二次元配列...
-
VBA 1次元配列を2次元に追加する
-
VBAで配列をまるごとコピー
-
for each の現在の配列ポインタ...
-
順列の作成
-
excel2010 VBAの修正をご指導い...
-
VBA:配列の中で文字列が何番目...
-
配列変数の添字が範囲外ですと...
-
Excel2003 条件付き中央値
-
VB6.0の配列に使用する「=」の意味
-
2つ以上の変数を比較して最大数...
-
《エクセル2000》A列・B列の商...
-
FORTRANのCOMMON文
-
Excel-VBAの配列「Public Const...
-
fortranのwrite文について
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
VBA 1次元配列を2次元に追加する
-
特定のセル範囲で4文字以上入力...
-
subの配列引数をoptionalで使う...
-
ListViewで、非表示列って作れ...
-
for each の現在の配列ポインタ...
-
配列変数の添字が範囲外ですと...
-
VBのFunctionで、配列を引数...
-
VB6 配列を初期化したい
-
2次元動的配列の第一引数のみを...
-
Excel-VBAの配列「Public Const...
-
配列内の内容を全て表示する方法
-
Dim は何の略ですか?
-
配列を任意の数値で埋める方法
-
VLOOKUP関数で、一番下...
-
アルゴリズム、配列のフローチ...
-
verilogで配列の任意の8bitを取...
-
えfor文とか使っちゃう時点で時...
-
VBA Match関数の限界
おすすめ情報