人の書いたコードを直すのは大変なので。。(^^;;;
以下のコードと入れ替えてください。
'--------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
Dim myStr As String
Dim i As Long
Const 行間隔 As Long = 3
Const 行桁数 As Integer = 20
myStr = Target.Value
For i = 0 To (Len(myStr) - 1) \ 行桁数
Target.Offset(i * (行間隔 + 1)).Value = Mid(myStr, i * 行桁数 + 1, 行桁数)
Next i
Application.EnableEvents = True
End Sub
'----------------------------------------------
(説明)
●If Target.Count > 1 Then Exit Sub
これは、複数セルに同時に値を入力した場合には処理の対象にしないため。
例えば、A1~A10を選択して、Delキーを押して消去したときなど
●Const 行間隔 As Long = 3
行をあける間隔です。上記の場合は、3行空きます。
間隔を変えるためには、この数値を変えてやります。
●Const 行桁数 As Integer = 20
一行の最大桁数です。
●上記コードでは全セルが処理の対象になります。
もし、A列だけ対象にしたければ
先頭に、
If Target.Column <> 1 Then Exit Sub
を追加してください。
以上です。
お礼
早速のご回答ありがとうございます。 汎用性のあるコードでしたので大変便利に使わせていただきました。ありがとうございました。 また、解説を加えていただき改めて御礼申し上げます。 ついでで申し訳ないのですが、文章を入力し実行した後に次行にセルが移動しますが、これを分割した最終行に合わせることは可能でしょうか。 おそらく可能だと思うのですが・・・。この場合どのようなコードを追加したらよろしいのでしょうか。