No.5ベストアンサー
- 回答日時:
#4です。
若干手直しさせていただきました。下記は20文字に設定した時の実行例です。半角全角混在の時は、やはり見苦しいですね。下記の通りマクロを登録した後、ワークシートの画面に戻って(再度ALT+F11)、Sheet1の任意のセルに、20文字以上の文を入力してみてください。
A列
1 数値入力の時におかしくなるので若干修正し
2 ました。下記は20文字区切りに設定した時
3 の実行例です。例えば、A1セルにズラズラ
4 と入力すると、20文字毎に区切って下のセ
5 ルに書込み、最終セルを編集状態にします。
6 マクロの登録の仕方を念のために説明すると
7 、ALT+F11を押すと、VBEdito
8 r画面に切り替わります。画面左下に、プロ
9 ジェクト VBA projectというフ
10 レーム?が表示されていてその中に、She
11 et1(Sheet1)とあるので、そこに
12 マウスカーソルを当てて右クリックし、コー
13 ドの表示を実行すると、広いフレームにカー
14 ソルが移動しますので、下記のコードを貼り
15 付けてください。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim targetString As String
Dim divResult As Long
Dim remain As Long
Dim i As Long
Const limitLength As Long = 20
If TypeName(Target.Value) <> "String" Then Exit Sub
Application.EnableEvents = False
targetString = Target.Value
If Len(targetString) > limitLength Then
divResult = Len(targetString) \ limitLength
remain = Len(targetString) Mod limitLength
For i = 1 To divResult
If i = 1 Then
Target.Value = Left(targetString, limitLength)
Else
Target.Offset(i - 1, 0).Value = Mid(targetString, limitLength * (i - 1) + 1, limitLength)
End If
Next i
If remain > 0 Then
Target.Offset(divResult, 0).Value = Mid(targetString, limitLength * divResult + 1, limitLength)
Target.Offset(divResult, 0).Activate
Else
Target.Offset(divResult, 0).Activate
End If
SendKeys "{F2}"
End If
Application.EnableEvents = True
End Sub
#4 mitarashi様
本日無事実行できました!うれしい!
ありがとうございます。
また丁寧な作業方法までレクチャしていただきまして
お礼の言葉もありません。
多くの方々のご指導により
作業時間が大幅に縮小できそうです。
また新しいメニューコマンドも知ることができました。
この場をお借りして質問の回答を下さいました方々に
心よりお礼申し上げます。
No.4
- 回答日時:
Excelに多くを望みすぎる発想が面白かったので、試しに作ってみました。
10文字単位に分割して、余りの文字のセルに移動し、編集状態にします。
全角も半角も一文字扱いですので、実用的ではないと思います。
また、新規入力の場合に限ります。既存の文字まで考慮しようとすると、エディターを開発(大げさ)することになってしまいそうです。
Excel2000のコードですので、上位バージョンでの動作は?です。
シートモジュールに記述してください。
エラーが発生したらとにかく抜けるいい加減な作りです(^^;)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim targetString As String
Dim divResult As Long
Dim remain As Long
Dim i As Long
Const limitLength As Long = 10
Application.EnableEvents = False
On Error GoTo ErrorHandle:
targetString = Target.Value
If Len(targetString) > limitLength Then
divResult = Len(targetString) \ limitLength
remain = Len(targetString) Mod limitLength
For i = 1 To divResult
If i = 1 Then
Target.Value = Left(targetString, limitLength)
Else
Target.Offset(i - 1, 0).Value = Mid(targetString, limitLength * (i - 1) + 1, limitLength)
End If
Next i
If remain > 0 Then
Target.Offset(divResult, 0).Value = Mid(targetString, limitLength * divResult + 1, limitLength)
Target.Offset(divResult, 0).Activate
Else
Target.Offset(divResult, 0).Activate
End If
SendKeys "{F2}"
End If
ErrorHandle:
Application.EnableEvents = True
End Sub
まったくもって素人の思いつきでお恥ずかしい限りです(^^;)
入力しながら改セルができると、文字数を意識しながら作業できそうなので便利そうです。
しかし、関数といえば「合計」しか使ったことがないものですから、
結果はもうしばらくお待ち下さい。必ず結果を報告させていただきます。
とりいそぎ、回答のお礼まで。
ありがとうございます。
No.3
- 回答日時:
#1です。
作業列が必要ですが、関数でのやり方もあります。
A1に該当の文字列があるとして、例えば10文字単位で区切りたい場合。
=MID($A$1,10*(ROW(A1)-1)+1,10)
これを下にフィルすると10文字単位で区切れるはずです。
#1の回答のお礼につけてくださった、「1ラインずつ…」という意味がちょっと分からなかったのですが、区切り位置は列に対して有効です。
※A1:A5を選択で区切り位置の指定は可能という意味です。
10文字単位で区切る場合は、区切り位置を10,20の場所に入れればOKです。
フォローありがとうございます。
ご推察の通りの問題で躓いておりましたが、
区切り位置は複数指定できたんですね。
まったくもって頭が固かったです。
また、関数ですが、関数を使ったことがないので現在トライしております。取り急ぎお礼まで。
No.2
- 回答日時:
データー入力規則ー文字列(身次数指定)
でより小さいー文字数
でセルの文字数のオーバーを監視できます。
これ以上は、質問のニーズは特殊すぎて適応した操作設定はありません。
エクセルは文章作成ソフトではないのでやむをえないでしょう。
入力文字数を入力の瞬間に捉えるのもVBA(APIを使わぬ範囲)などでは難しいと思う。
早速の回答、ありがとうございます。
質問しておいてなんですが、やはりおっしゃるとおり、文章作成ソフトの仕事ですね。
しかし、エクセルをスケジュールと既存の見積書にしか使わない者にとって、「データ」というメニューコマンドは大変勉強になりました。
本当にありがとうございます。
No.1
- 回答日時:
入力文字に対して、自動的に下セルへ…というのは残念ながら不可能だと思います。
マクロを組めば何とかなるかもしれませんが。
少し手間はかかりますが、何回か作業工程が分かれてもいいなら
データ→区切り位置で、
「スペースによって…」を選択して、固定長でセルを分割した後、
該当のセルを選択→編集→切り取り→形式を選択して貼り付け→
「行列を入れ替える」にチェックを入れて貼り付け
とかはどうでしょう?
早速の回答本当にありがとうございます。
そうですね、文字送りが必要ならば、ワードを使うべきですよね。
しかし、固定長でセルを分割 というコマンドは非常に興味深いもので、今後に応用がききそうですね。
残念ながらこの方法だと1ラインごとにやらないといけないようですが(エクセル2002だからでしょうか?)、応用できるかどうか検討させていただきます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) エクセル セル内の文字数を超えたら自動的に折り返して表示 2 2023/07/24 05:32
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Excel(エクセル) エクセルでシート保護のかかり方の違いとセルの非保護の設定 3 2022/08/09 10:02
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- Excel(エクセル) Excelについて▶あるセルに文字を入力すると、別のセルに色がつく(条件付き書式) 1 2022/03/27 16:43
- Excel(エクセル) エクセルの数式で教えてください。 5 2023/02/10 15:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAについての質問です
-
Excelにいついて質問です。
-
CSVファイルについて質問です。
-
エクセルの「入力規則」のプル...
-
一つのセルに(例えばA1)入力...
-
Excelの関数について教えてくだ...
-
エクセルファイルがファイルの...
-
【マクロ】名前を保存する際に...
-
エクセル共有したが、アクセス...
-
エクセル vbaについて教えてく...
-
Excel 複数列 A列B列C列一致 D...
-
エクセルであるセルに数字を入...
-
エクセルのデーターが2か月前の...
-
UNIQUE関数が使えないバージョ...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
Excelでセルの値が同じか...
-
Excelはなんで先頭の0を消すん...
-
【Excel】数字を3倍にし、なお...
-
エクセルで年休を管理する方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報