
エクセル2003です。
いつもお世話になります。
以下のコードを実行すると「配列の型が一致しません。」というエラーが出ます。
typeNameで確認しても配列の型はvariant()で正しいと思うのですが。。。
皆様のお知恵を拝借させていただけないでしょうか。
--------------------------------------
Sub main()
Dim e As Variant
e = fuN()
Call pRo(e) '←ここでエラーになる。
End Sub
Function fuN() As Variant
Dim a(0) As Variant
a(0) = "zero"
fuN = a
End Function
Sub pRo(ByRef c() As Variant)
'処理っす
End Sub
--------------------------------------
No.4ベストアンサー
- 回答日時:
簡単にいっていまうと、Variantは小難しい事を考えなくてもそういう風に使えるよ、っていうことです。
イメージ的にはVriant型のでっかい変数の中にVariantの配列が入ってるみたいな感じですかね。
参考URL:http://pc.nikkeibp.co.jp/article/NPC/20070803/27 …
なるほど。わりました。
これはVriant型だから成り立つようですね。
その辺が混乱してたみたいです。
どうもありがとうござました。
No.3
- 回答日時:
エラーが出るのは、mainで
Dim e As Variantと、eを配列で宣言してないのに
Sub pRo(ByRef c() As Variant) の引数を c() と配列にしてるからです。
e = fuN()
これで初めて、eは配列になりますが、eに()を付けることができるのは
A=e(0)
e(0)=100
のように、eの配列要素に値を代入したり取り出したりするときだけで
今回のように、eの配列全体を表すときなどは、()を付けることはできません。
よって、
'-----------------------------------------
Sub pRo(c As Variant) '●c()の()を外す
MsgBox c(0)
End Sub
'---------------------------------------
のように、c()の()を外さなければいけません。
ありがとうござます。
>のように、eの配列要素に値を代入したり取り出したりするときだけで
>今回のように、eの配列全体を表すときなどは、()を付けることはできません。
ただhimajin100000様のおっしゃるように、配列を定義する際に、()をつけることでも
OKのようです。結局どちらがいいのか良く分かりません。
引き続きよろしくお願いします。
No.2
- 回答日時:
Sub main()
Dim e() As Variant
e = fuN()
Call pRo(e) '←ここでエラーになる。
End Sub
Function fuN() As Variant()
Dim a(0) As Variant
a(0) = "zero"
fuN = a
End Function
Sub pRo(ByRef c() As Variant)
'処理っす
End Sub
'コレでも通るっぽい
'質問文が何故通らないのかは解らん。
ああ神様!
動きました。どうもありがとうございました。
ただ配列の()が必要なときと必要ないときが違いが
分からないので、質問は継続します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) IBM Notes9のメールをExcelVBAにて送信するコードについての質問です。 以下のコードを 3 2023/06/21 17:58
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 配列にしたセル範囲でのコメントがあるかどうかを取得するコードの書き方 2 2022/09/17 05:09
このQ&Aを見た人はこんなQ&Aも見ています
-
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
配列をループでたくさん宣言したいのですが、配列名や変数名を変数で宣言することはできませんか?
Visual Basic(VBA)
-
VBA 配列で型がエラーになります。
Excel(エクセル)
-
-
4
VBA 1次元配列を2次元に追加する
Visual Basic(VBA)
-
5
動的配列が存在(要素が有る)か否かを判定できますか?
Visual Basic(VBA)
-
6
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
7
VBAで配列引数を値渡しできない理由
Visual Basic(VBA)
-
8
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
11
表にフィルターをかけ、絞ったデータ(可視化セルのみ)を一次元配列として変数に入れるという動作を書きた
Visual Basic(VBA)
-
12
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
13
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
14
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
15
Variant型で宣言してるのにEmptyになる
Visual Basic(VBA)
-
16
VBA 連続行データを5行ずつ隣の列に貼り付ける
Excel(エクセル)
-
17
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
18
Changeイベントでの複数セルのクリアの処理について
Visual Basic(VBA)
-
19
Access VBAで行ラベルが定義されていないというエラーが出ます
Access(アクセス)
-
20
Excelで数値→文字列変換で指数表示になったものをいっぺんに直したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 配列の長さの上限
-
【C言語】配列の中に配列を入れ...
-
C# Listを使わずに2次元配列の...
-
先頭アドレスとは何ですか?
-
mallocの確保要素数の限界は?
-
配列を使わずに、変数名を動的...
-
C言語初心者 構造体 課題について
-
複数のボタンを配列で扱う方法...
-
C言語初心者 ポインタについて...
-
配列内の文字間を排他的論理和...
-
C言語で特定列だけを抽出して配...
-
std::listの代入について
-
配列で格納したものをmsgboxで...
-
計算結果がものすごく多いんで...
-
乱数ってなんですか?
-
MFC、ダイアログベースでのモー...
-
配列を含む構造体の初期値について
-
自販機での金銭収受を想定した...
-
ガウスの消去法のプログラム
-
配列の制限について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
C# Listを使わずに2次元配列の...
-
【速いブラインドタッチ】手を...
-
配列をEraseしてもメモリが開放...
-
テキストファイルから文字列を...
-
先頭アドレスとは何ですか?
-
配列で格納したものをmsgboxで...
-
複数の選択範囲の行番号を個別...
-
C# 配列の変数宣言について。
-
C++ vectorに配列をプッシュしたい
-
配列を含む構造体の初期値について
-
VBで構造体の配列を関数に渡す...
-
C言語で特定列だけを抽出して配...
-
キーボードのキー配列について
-
ExcelVBAで質問です。離れた二...
-
2次元配列を戻り値とする関数?
-
unsigned char配列への入力の仕方
-
【C言語】配列の中に配列を入れ...
-
Redimした動的配列はEraseする...
おすすめ情報