• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル セルの入力文字数固定2)

エクセルのセルの入力文字数固定方法を解説

このQ&Aのポイント
  • エクセルでセルの入力文字数を固定する方法を解説します。
  • 質問では、指定した文字数を超える場合には次の行ではなく1行空けて分割させる方法についても説明します。
  • また、空白行を2行にした場合の変更方法も紹介します。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

人の書いたコードを直すのは大変なので。。(^^;;; 以下のコードと入れ替えてください。 '-------------------------------------------------- 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 を追加してください。 以上です。  

syuuchan
質問者

お礼

早速のご回答ありがとうございます。 汎用性のあるコードでしたので大変便利に使わせていただきました。ありがとうございました。 また、解説を加えていただき改めて御礼申し上げます。 ついでで申し訳ないのですが、文章を入力し実行した後に次行にセルが移動しますが、これを分割した最終行に合わせることは可能でしょうか。 おそらく可能だと思うのですが・・・。この場合どのようなコードを追加したらよろしいのでしょうか。

その他の回答 (1)

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

またまた登場、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 '-------------------------------- 以上です。

syuuchan
質問者

お礼

打てば響くようなご回答ありがとうございます m(_ _)m 。 完璧に希望どおりの動きをしてくれました。 また汎用性があるようにご回答していただけると、私のような初心者には非常に助かります。 早速ご回答をいただいたのですが、動作の確認が遅れて申し訳ありませんでした。 今後も機会がありましたらよろしくお願いいたします。

関連するQ&A