• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA Splitで「引数の数が一致していません。)

VBA Splitで引数の数が一致していません。

このQ&Aのポイント
  • Excel2007でA列に複数の数字が入っており、これを空白でSplitしてB,C,D列に入れたい。
  • VBAのコードを実行すると、引数の数が一致していないというエラーメッセージが表示される。
  • 変更したコードでも同じエラーが発生し、解決策を求めています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Sub Split() とプロシージャに既存のVBA関数と同じ名前を付けているからです。 同じ名前があるときは、近いところから参照しますので、 Split(.Cells(行, 1), " ") で自分自身を参照してしまってます。 Sub MySplit() というように既存関数と違う名前にするか、 temp = VBA.Split(.Cells(行, 1), " ") というようVBAのSplitを参照するように明示するかですね。 ちなみに、結果をB,C,D列に入れたいのなら、       .Cells(行, 列 + 2) = temp(列) ですね。配列のインデックスは 0 起点ですので。

MKT_
質問者

お礼

 hatena1989様  どうもありがとうございます!! 解決いたしました。なるほどサブルーチンを呼び出しに行っておりましたわけですか。。。^^; 全く原因が分かりませんでしたorz  あと >配列のインデックスは 0 起点ですので。 についてもご指摘いただき誠にありがとうございました。  お教えいただいたお陰で一瞬で解決いたしました。 誠にありがとうございました!!m(_ _)m

その他の回答 (2)

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.3

他の方がおっしゃるとおり、マクロ名に予約語であるSplit()を使っているからエラーになります。 ついでに、最後から2行目は、 Application.ScreenUpdating = True にしないとエラーになります。

MKT_
質問者

お礼

どうもありがとうございます!!m(_ _)m (締め切り後もお礼できるんですね、今知りました^^;) 締め切るとほぼ同時にご回答をいただいたようで、お礼をしたかったなー、と考えておりました。遅れて大変失礼いたしました。 >Application.ScreenUpdating = True  ご指摘いただきどうもありがとうございます。気づきませんでした^^;  このたびはご親切に誠にありがとうございました!!m(_ _)m

回答No.2

Splitっていう予約語を使ってユーザー関数を作っているのがダメでしょうね。

MKT_
質問者

お礼

 naktak様  どうもありがとうございます!!m(_ _)m No.1様からもご指摘いただいて解決いたしました。 この度はご閲覧・アドバイスいただき誠にありがとうございました!^^

関連するQ&A

専門家に質問してみよう