環境: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を使わない別の方法があればそれでも結構です
とにかく困っています
>【モジュールではなく、変数またはプロシージャを指定してください】
プロシージャ名が、モジュール名と同じなのではありませんか?
もしくは、その逆なのかと思います。
>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
お礼
モジュール名にSplitを使っていました モジュール名を変えたら動きました それと strArとWith ActiveSheetは勉強になりました ありがとうございます