アプリ版:「スタンプのみでお礼する」機能のリリースについて

 今日は、質問させていただきます。どうぞよろしくお願いいたします。

 Excel2007でございます。
A列に
13.3483288757881 9.55166445333847 24.8030876776544
17.7550944828646 9.55166445333847 24.8030876776544
8.9415632687115 13.9584300604151 24.8030876776544
 :
 :
といった数字(空白2つで3つに別れております)が入っております。
これを空白でSplitして、それぞれをB,C,D列に入れたい次第でございます。
    B               C               D
13.3483288757881     9.55166445333847     24.8030876776544
17.7550944828646     9.55166445333847     24.8030876776544
8.9415632687115     13.9584300604151     24.8030876776544
のような感じでございます。


 そこでVBAで
Sub Split()
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets(1)
  Do
    行 = 行 + 1
    temp = Split(.Cells(行, 1), " ")
    For 列 = LBound(temp) To UBound(temp)
      .Cells(行, 列 + 1) = temp(列)
    Next
  Loop While .Cells(行, 1) <> ""
End With
Application.WorksheetFunction = True
End Sub
といたしましたところ、「コンパイルエラー: 引数の数が一致していません。または不正なプロパティを指定しています。」とエラーメッセージが出てしまいます。
 ネット上を検索いたしましたが、引数の数には問題ないようですので、
試しにtemp = Split(.Cells(行, 1), " ") → temp = Split(.Str(Cells(行, 1)), " ")
などと変更いたしましても同じエラーが出てまいります。

 もし何か怪しそうな箇所を思いつかれる方がいらっしゃいましたら、是非アドバイス頂きたくお願いいたします。
お詳しい方がいらっしゃいましたら、どうぞよろしくお願いいたします。

A 回答 (3件)

Sub Split()



とプロシージャに既存のVBA関数と同じ名前を付けているからです。
同じ名前があるときは、近いところから参照しますので、
Split(.Cells(行, 1), " ") で自分自身を参照してしまってます。

Sub MySplit() というように既存関数と違う名前にするか、

temp = VBA.Split(.Cells(行, 1), " ")

というようVBAのSplitを参照するように明示するかですね。


ちなみに、結果をB,C,D列に入れたいのなら、

      .Cells(行, 列 + 2) = temp(列)

ですね。配列のインデックスは 0 起点ですので。
    • good
    • 0
この回答へのお礼

 hatena1989様

 どうもありがとうございます!!
解決いたしました。なるほどサブルーチンを呼び出しに行っておりましたわけですか。。。^^; 全く原因が分かりませんでしたorz

 あと
>配列のインデックスは 0 起点ですので。
についてもご指摘いただき誠にありがとうございました。

 お教えいただいたお陰で一瞬で解決いたしました。
誠にありがとうございました!!m(_ _)m

お礼日時:2013/09/06 10:33

他の方がおっしゃるとおり、マクロ名に予約語であるSplit()を使っているからエラーになります。



ついでに、最後から2行目は、
Application.ScreenUpdating = True

にしないとエラーになります。
    • good
    • 0
この回答へのお礼

どうもありがとうございます!!m(_ _)m
(締め切り後もお礼できるんですね、今知りました^^;)
締め切るとほぼ同時にご回答をいただいたようで、お礼をしたかったなー、と考えておりました。遅れて大変失礼いたしました。

>Application.ScreenUpdating = True
 ご指摘いただきどうもありがとうございます。気づきませんでした^^;
 このたびはご親切に誠にありがとうございました!!m(_ _)m

お礼日時:2013/09/08 18:05

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

    • good
    • 0
この回答へのお礼

 naktak様

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

お礼日時:2013/09/06 10:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています