
エクセル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も見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
おすすめの美術館・博物館、教えてください!
美術館・博物館が大好きです。みなさんのおすすめをぜひお聞きしたいです。
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
あなたなりのストレス発散方法を教えてください!
自分なりのストレス発散方法はありますか?
-
集中するためにやっていること
家で仕事をしているのですが、布団をはじめ誘惑だらけでなかなか集中できません。
-
VBA 配列で型がエラーになります。
Excel(エクセル)
-
エクセルエラー13型が一致しませんの直し方教えて下さい。
その他(Microsoft Office)
-
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
-
4
Variant型で宣言してるのにEmptyになる
Visual Basic(VBA)
-
5
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
6
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
7
動的配列が存在(要素が有る)か否かを判定できますか?
Visual Basic(VBA)
-
8
VBAで配列引数を値渡しできない理由
Visual Basic(VBA)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
VBAのFind関数で結合セルを検索するとヒットしない
Visual Basic(VBA)
-
11
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
12
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
13
ACCESS VBAの実行時エラーなんですが
PowerPoint(パワーポイント)
-
14
2つ以上の変数を比較して最大数を求めたい
Word(ワード)
-
15
Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はあり
Visual Basic(VBA)
-
16
String だと「 ByRef引数の型が一致しません 」というエラーが出ます。なぜ?
Visual Basic(VBA)
-
17
配列でデータが入っている要素を求める方法
Visual Basic(VBA)
-
18
配列を関数に渡す方法
Visual Basic(VBA)
-
19
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
20
array関数で格納した配列の型を変更する
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 配列の長さの上限
-
C# 配列の変数宣言について。
-
ExcelVBAで質問です。離れた二...
-
C# Listを使わずに2次元配列の...
-
テキストファイルから文字列を...
-
VBでC言語のポインタみたい...
-
複数の選択範囲の行番号を個別...
-
VB.NET 構造体の配列の検索機能...
-
配列同士の文字列の比較
-
2次元配列を戻り値とする関数?
-
ポインタの配列のコンマについて
-
配列を使わずに、変数名を動的...
-
C言語で特定列だけを抽出して配...
-
unsigned char配列への入力の仕方
-
Functionの戻り値を2次元配列...
-
市販のビンゴカードについて
-
銀行ATMの数字キーの配列
-
VBで構造体の配列を関数に渡す...
-
C++ テンプレートを使った配列...
-
C言語の配列番号が"0"から始ま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
配列で格納したものをmsgboxで...
-
テキストファイルから文字列を...
-
C# 配列の変数宣言について。
-
C# Listを使わずに2次元配列の...
-
先頭アドレスとは何ですか?
-
C言語で特定列だけを抽出して配...
-
【速いブラインドタッチ】手を...
-
配列の参照渡しで型が一致しま...
-
unsigned char配列への入力の仕方
-
ExcelVBAで質問です。離れた二...
-
VBで構造体の配列を関数に渡す...
-
複数の選択範囲の行番号を個別...
-
C++ vectorに配列をプッシュしたい
-
【C言語】配列の中に配列を入れ...
-
配列をEraseしてもメモリが開放...
-
Excel、VBAのユーザーフォーム...
-
Redimした動的配列はEraseする...
-
VB.NET 構造体の配列の検索機能...
おすすめ情報