dポイントプレゼントキャンペーン実施中!

環境:Excel2002です

  Cells(1, 1)に(1)~(10),(13),(20)~(28)のような値があります
  Cells(1, 1)の値は別のプロシージャ求めていてその都度変わります

  Cells(j, 4)をスタート位置にして
  Cells(j, 4)に(1)~(10)
  Cells(j+1, 4)に(13)
  Cells(j+2, 4)に(20)~(28)を表示したいので
  以下のプロシージャにしました

Dim Str As String
Str = ActiveSheet.Cells(1, 1).Value

Dim i As Integer
Dim j As Integer

'◆カンマで区切った文字列をD列に格納
Dim tmp As Variant
tmp = Split(Str, ",")

j = 1
For i = 0 To UBound(tmp)
ActiveSheet.Cells(j, 4) = tmp(i)
j = j + 1
Next i

  あるブックでは正常に動作するのですが
  別のブックでは以下のエラーメッセージがでて動作しません

  【モジュールではなく、変数またはプロシージャを指定してください】

  何が原因なのでしょうか?ご教示願います

  Splitを使わない別の方法があればそれでも結構です
  とにかく困っています

A 回答 (1件)

>【モジュールではなく、変数またはプロシージャを指定してください】


プロシージャ名が、モジュール名と同じなのではありませんか?
もしくは、その逆なのかと思います。

>Cells(1, 1)の値は別のプロシージャ求めていてその都度変わります
意味が分かりませんが、それは無視します。

なお、(13)は、ワークシートでは、-13にキャストされてしまうはずですが、それも無視します。
他に、Str は、関数にありますから、使い方によって不具合が生じます。

'//
Sub Test1()
 Dim strAr As String
 Dim i As Long
 Dim j As Long
 Dim tmp As Variant
 j = 1
 With ActiveSheet
  strAr = .Cells(1, 1).Value
  '◆カンマで区切った文字列をD列に格納
  tmp = Split(strAr, ",")
  For i = 0 To UBound(tmp)
   .Cells(j, 4).Value = tmp(i)
   j = j + 1
  Next i
 End With
End Sub
    • good
    • 0
この回答へのお礼

モジュール名にSplitを使っていました
モジュール名を変えたら動きました

それと
strArとWith ActiveSheetは勉強になりました
ありがとうございます

お礼日時:2013/03/16 22:40

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