- ベストアンサー
VBA Splitで引数の数が一致していません。
- Excel2007でA列に複数の数字が入っており、これを空白でSplitしてB,C,D列に入れたい。
- VBAのコードを実行すると、引数の数が一致していないというエラーメッセージが表示される。
- 変更したコードでも同じエラーが発生し、解決策を求めています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Sub Split() とプロシージャに既存のVBA関数と同じ名前を付けているからです。 同じ名前があるときは、近いところから参照しますので、 Split(.Cells(行, 1), " ") で自分自身を参照してしまってます。 Sub MySplit() というように既存関数と違う名前にするか、 temp = VBA.Split(.Cells(行, 1), " ") というようVBAのSplitを参照するように明示するかですね。 ちなみに、結果をB,C,D列に入れたいのなら、 .Cells(行, 列 + 2) = temp(列) ですね。配列のインデックスは 0 起点ですので。
その他の回答 (2)
- MSZ006
- ベストアンサー率38% (390/1011)
他の方がおっしゃるとおり、マクロ名に予約語であるSplit()を使っているからエラーになります。 ついでに、最後から2行目は、 Application.ScreenUpdating = True にしないとエラーになります。
お礼
どうもありがとうございます!!m(_ _)m (締め切り後もお礼できるんですね、今知りました^^;) 締め切るとほぼ同時にご回答をいただいたようで、お礼をしたかったなー、と考えておりました。遅れて大変失礼いたしました。 >Application.ScreenUpdating = True ご指摘いただきどうもありがとうございます。気づきませんでした^^; このたびはご親切に誠にありがとうございました!!m(_ _)m
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
Splitっていう予約語を使ってユーザー関数を作っているのがダメでしょうね。
お礼
naktak様 どうもありがとうございます!!m(_ _)m No.1様からもご指摘いただいて解決いたしました。 この度はご閲覧・アドバイスいただき誠にありがとうございました!^^
お礼
hatena1989様 どうもありがとうございます!! 解決いたしました。なるほどサブルーチンを呼び出しに行っておりましたわけですか。。。^^; 全く原因が分かりませんでしたorz あと >配列のインデックスは 0 起点ですので。 についてもご指摘いただき誠にありがとうございました。 お教えいただいたお陰で一瞬で解決いたしました。 誠にありがとうございました!!m(_ _)m