- ベストアンサー
エクセルのセルの入力文字数固定方法を解説
- エクセルでセルの入力文字数を固定する方法を解説します。
- 質問では、指定した文字数を超える場合には次の行ではなく1行空けて分割させる方法についても説明します。
- また、空白行を2行にした場合の変更方法も紹介します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
人の書いたコードを直すのは大変なので。。(^^;;; 以下のコードと入れ替えてください。 '-------------------------------------------------- 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 を追加してください。 以上です。
その他の回答 (1)
- myRange
- ベストアンサー率71% (339/472)
またまた登場、myrangeです。 >これを分割した最終行に合わせることは可能でしょうか。 1 あああ 2 いいい 3 ううう 4 と分割されたと仮定して 最終行は、3行目ですから、そこをアクティブにするには Target.Offset((i - 1) * (行間隔 + 1)).Select 最終行の次の行、上記例では、4行目をアクティブにするには Target.Offset((i - 1) * (行間隔 + 1) + 1).Select を次の位置に入れてやります。 '------------------------------- Next i ●●●ここに入れる Application.EnableEvents = True End Sub '-------------------------------- 以上です。
お礼
打てば響くようなご回答ありがとうございます m(_ _)m 。 完璧に希望どおりの動きをしてくれました。 また汎用性があるようにご回答していただけると、私のような初心者には非常に助かります。 早速ご回答をいただいたのですが、動作の確認が遅れて申し訳ありませんでした。 今後も機会がありましたらよろしくお願いいたします。
お礼
早速のご回答ありがとうございます。 汎用性のあるコードでしたので大変便利に使わせていただきました。ありがとうございました。 また、解説を加えていただき改めて御礼申し上げます。 ついでで申し訳ないのですが、文章を入力し実行した後に次行にセルが移動しますが、これを分割した最終行に合わせることは可能でしょうか。 おそらく可能だと思うのですが・・・。この場合どのようなコードを追加したらよろしいのでしょうか。