• 締切済み

Excelでセルに文章を入力する

Excelでセルに文章を入力する時印刷可能範囲を超えると次のセルに移動(下)は出来ないですか? 折り返して表示ではセル幅が変わります.同一幅の何行かのセルにWordの様に文章を入力する方法お願いします。

みんなの回答

noname#9284
noname#9284
回答No.5

工夫次第でExcelの機能を使ってご希望の事は出来ます。だまされたつもりで下記をお試しください。 念のためにそのセルには何も書式を設定しないでください。 印刷範囲横幅一杯にセルを広げます。 ここに文章を最後まで入力します。 下のセルには何も入力しないで下さい。 文字数が異様に多かった場合のためにセルの書式設定で「折り返して全体を表示」にします。 高さが思いっきり高くなっても気にしないで下さい。 このセルを選択して編集→フィル→文字の割付 をします。 先ほど折り返して表示されていたセルが通常の高さになります。 それと同時にセル幅からはみ出した文字は下へ下へと流し込まれます。

yocihara
質問者

お礼

お世話に成りました.参考になります。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

質問のような機能はないので、作るしかないでしょう。 下のコードで質問にあることを行っているはずです。入力済みのセルの再編集も機能するはずです。 セルに収まらなかった文字部分はその下のセルに移動します。下のセルでまたあふれを調べて調整します。その繰り返しをコードに書いています。 コードを短くするため、前提条件として、   ●特定範囲でこの機能を使うために、セル範囲を登録しておきます。(必須)     Const myArea = "G1:H100" の部分   ●この範囲の行高を設定しておきます。(必須)   ●この範囲のセルの書式設定、配置を『折り返して全体を表示する』にしておきます。(必須)   ○この範囲は文字列属性にしておきます。これは必須ではありませんが、    全角数値が半角数値になる可能性があるためです。 機能を使いたいシートのコードウインドウに貼り付けます。Sheet1で行う場合、 ツール→マクロ→Visual Basic Editor でVBE画面に移り、 表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示します。プロジェクトエクスプローラのSheet1をダブルクリック。出てきたコードウインドウに下記マクロをコピーして貼り付けます。 ここから ↓ '// この範囲(myArea)を対象にする '// この範囲は、書式を『文字列』、『折り返して全体を表示する』にしておく。   Const myArea = "G1:H100" '// この範囲のセルの行高   Const myHeight = 14.25 Private Sub Worksheet_Change(ByVal Target As Range)   Dim txt1 As String  '// 処理する文字列   Dim txt2 As String  '// 処理する文字列(下のセル)   On Error GoTo ErrorHandler   '// 単一セルの操作の場合   If Target.Count = 1 Then     '// 想定したセル範囲の編集の場合     If Not Intersect(Range(myArea), Target) Is Nothing Then       '// このChangeイベントを再呼び出ししないようにする       Application.EnableEvents = False       '// 行高が変更になったら元に戻るまで文字列を減らしていく       txt2 = Target.Offset(1, 0)       If Target.Height <> myHeight Then         txt1 = Target.Text         While Target.Height <> myHeight           Target = Left(txt1, Len(txt1) - 1)           txt2 = Right(txt1, 1) & txt2           txt1 = Target.Text         Wend         '// 下のセルを書き換える(まだChangeイベントは発生しない)         Target.Offset(1, 0) = txt2       End If     End If     '// 再度イベントを発生させて、このChangeイベントを呼ぶ     Application.EnableEvents = True     Target.Offset(1, 0) = "" & Target.Offset(1, 0)   End If   Exit Sub ErrorHandler:   MsgBox "Error!!!"   Application.EnableEvents = True End Sub

yocihara
質問者

お礼

色々有難う御座います.

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

書式-セル-配置-文字の制御-で「折り返して全体を表示する」で、予め列幅を決めて入力すると、幅に達したら 次行に復帰改行します。 勿論行高は増えます。これでだめですか。 >折り返して表示ではセル幅が変わります これは事実誤認か、「セル幅」は「セル行高」の言い間違いでしょう。 次行の直下セルに移って入力させるには、例えVBAでも、1文字入力を捉える「イベント」が用意されてないので、結構難しいと思いますよ。Changeイベントではだめのよう。

yocihara
質問者

お礼

行高を同じにして次のセルに移りたいです。お世話に成りました。

  • zebrabody
  • ベストアンサー率37% (17/45)
回答No.2

行高が変わって欲しくないってことで良いんですよね?もし自動的に次の行に移ることを望んでいるのであれば、Excelにそのような機能はありません。 そうすると何故行高が変わると困るのかということになりますが、大抵はフォームの体裁を崩したくないといったケースだと思います。 そうすると、テキストボックスを活用するのが一般的ではないでしょうか。 でなければ、あらかじめ10行なら10行分をセル結合しておけば行高は変わらずにテキストボックスのようなオブジェクトを使用しないで済みます。 まぁ、これはこれで不便なことも出てきますので、作成しているフォーマットによって臨機応変に使い分けるといったところでしょうか。

yocihara
質問者

お礼

お世話になります.行高が固定され罫線が引かれた決められた用紙に文章を入力しますので表示されるのに 印刷すると消えている部分が出来ます.セル結合で表示されますがWordの様に文字数が揃いません. Excelにそのような機能はないのですね

  • Traja
  • ベストアンサー率19% (107/546)
回答No.1

どうもイメージが掴みにくいですが セル幅を変えないために、セル内で折返しに設定するのでは無いでしょうか? その代わり、セルの高さは変わりますが。 ご質問は、セルの幅(特定の位置)に達したら 勝手に隣or下のセルにアクティブセルが移動して欲しい と言う意味でしょうか? 通常は無理なんじゃ無いでしょうか? マクロとか使えば出来なくはなさそうですが、融通が利かないと思うし 他の方の意見を待ちましょう

yocihara
質問者

お礼

マクロについてはぜんぜん駄目ですからお恥ずかしいかぎりです。

関連するQ&A

専門家に質問してみよう