• ベストアンサー

エクセルで文章作成

本日他の方が、「エクセルで文章作成できるか」質問されています。それに触発されて質問したく、ご存知でしたら、教えてください。  以前ソフトウエア会社の方が、各列の列幅を全角1文字分の幅にして、文章をエクセルのワークシートに書いている風に見えたことがありました。やって見ると、1文字を或るセルに入れた後、次ぎの(横書きなので)右セルに自動的に進まないことが(当然ですが)判り、そのときは諦めました。 この右セルに自動的にカーソルを進める対策は、本当にないのでしょうか。VBAを考えても無理でしょうか。

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

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

どんなものか作ってみました。 writeModeで横書き、縦書きを指定します。 maxColはA列からこの列数分、この機能が働きます。 maxRowは縦書きの時、折り返す最下段の行です。 シートのコードウインドウに貼り付けます。ご参考に。 Const writeMode = 1 '横書き=1、縦書き=2 Const maxCol = 10 '列(文字)数制限値 Const maxRow = 10 '行(文字)数制限値。縦書きで有効 Private Sub Worksheet_Change(ByVal Target As Excel.Range)   If Target.Column > maxCol Then Exit Sub   Dim moji As String '入力文字   On Error GoTo ErrorHandler   moji = Target.Value   With Application     .EnableEvents = False: Range(Target.Address) = Left(moji, 1)     .EnableEvents = True '2文字目以降があれば繰り返しChangeイベントを起こす     With Target       Select Case writeMode         Case 1 '横書き           If .Column < maxCol Then             Range(.Address).Offset(0, 1).Select '右のセル           Else             Range(.Address).Offset(1, 1 - maxCol).Select '次の行           End If         Case 2 '縦書き           If .Row < maxRow Then             Range(.Address).Offset(1, 0).Select '下のセル           Else             Range(.Address).Offset(1 - maxRow, -1).Select '前の列           End If         End Select       End With     If Len(moji) > 1 Then Selection = Right(moji, Len(moji) - 1)   End With   Exit Sub ErrorHandler:   Application.EnableEvents = True End Sub

その他の回答 (3)

  • TTak
  • ベストアンサー率52% (206/389)
回答No.3

VBAならこんな感じでしょうか。 動作確認 WIN98SE+EXCEL200 やってみるとおもしろいですね。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myLen As Integer, myRow As Integer Dim mySt As String On Error GoTo Errhand If Len(Range(Target.Address)) < 2 Then Exit Sub '1文字なら実行しない myLen = Len(Range(Target.Address)) '入力(変換後)文字数 mySt = Range(Target.Address).Value '入力済み(変換後)値 myRow = Range(Target.Address).Row '現在の行数 rtnCul = 100 '横マス上限 Application.EnableEvents = False For i = 1 To myLen Range(Target.Address).Offset(, i - 1).Value = _ Mid(mySt, i, 1) Next i Cells(myRow, rtnCul).End(xlToLeft).Offset(, 1).Select Errhand: Application.EnableEvents = True End Sub しかし、本来ならばWORDを使用された方がいいでしょう。

  • himehime
  • ベストアンサー率37% (133/354)
回答No.2

質問の意味が違ったらごめんなさい。 文字を入力したい部分全部に範囲選択。 文字を入力して、Enterすれば、いいのでは? どこでもいいですけど、 たとえば、A4~A10までドラッグして範囲選択して 文字入力して漢字変換し終わったら、Enter、 漢字変換し終わったら、Enterです。 方向キーを押したりクリックしたりしたら、解除されてしまいますが、 この方法なら、別に、 漢字一文字二文字気にする必要なんてないと思いますが。

imogasi
質問者

お礼

ご回答有難うございました。お手数をお掛けしました。 ただ私が思ったのは、例えばA4セルにカーソルを置いて 「あさひが」と入力し、「朝日が」と確定させるため、ENTERキーを押したとき、A4に「朝」、B4に「日」、C4に「が」と入力されカーソルがD4に移るといいな。桝目原稿として使えるし、罫線やエクセルの中の機能が使えて良いなと思っています。表の演算など、自由にできそうです。WORDの機能に不満があるということです。今後ともよろしく。

  • oresama
  • ベストアンサー率25% (45/179)
回答No.1

【Enter】の代わりに【Tab】キーを使用するか、 <ツール>→<オプション>→<編集> で、入力後に移動するセルの方向を指定できますよ。  如何でしょう。。。

imogasi
質問者

お礼

早速ご回答ありがとうございます。 質問の表現がまずかったと反省していますが、 (1)単漢字の変換のとき    ENTERやTABなしに、(漢字変換確定のEN   TER入力で次ぎの右隣列に移ること。 (2)2文字以上の語句等を変換のとき、確定のENTE   R入力でその語句を次ぎ次ぎと1列1文字に分解し   て自動的にセットして、次ぎの右隣列に移ること。 を出来ないかと思っていました。もし出来ればエクセルの シートがマス目原稿用紙+エクセル機能となるので便利です。

関連するQ&A

  • エクセルの文章入力についてです。

    エクセルの文章入力についてです。 「折り返して全体を表示する」のように一定の文字列の幅でセルごとに分ける事はできないでしょうか? 一つのセルにある文章を入力するのは容易です。 しかし、与えられた横書きの書式は一定の文字数を入力すると、わざわざ下のセルに移動して途切れの悪い文字からの入力を強いられることになります。 要は、一旦1つのセルに入力した文章を、「折り返して全体を表示する」のように行が変わる毎に一つ下のセルに移動して一定数の列幅まで文字を入力したら一つしたのセルに移動して…を繰り返す表示は可能でしょうか。 「長さ」がキーワードかと思い、vbaのlenやlenbで試してみましたが一定の列幅に対して文字列の長さが一定せず「折り返して全体を表示する」のようには綺麗に表示されません。 ちなみにLenB(StrConv(Cells("A1"), vbFromUnicode))も試して見ましたがイマイチです。 もしかしたら、vbaなど使わなくても簡単にできるものなのでしょうか? 「折り返して全体を表示する」のように一定の文字列の幅でセルごとに分ける事はできないでしょうか?

  • エクセルVBAで実行する対象を選択文字列にするには?

    エクセルVBAで文字列を半角や全角にするマクロをつくっています。 私は、”あるセルに対して”はできるんですが、 その対象文字列を、”カーソルで選択して反転したところに対して”実行できるようにしたのです。できるんでしょうか。 よろしくおねがいします。

  • EXCELで、自動実行

    お世話になります。 仕事でEXCELを使用しているのですが、毎回同じ作業をすることがあります 1.セルEを切り取って、セルBの前に「切り取ったセルを挿入」 2.セルHを切り取って、セルCの前に挿入 3.セルIを切り取って、セルEの前に挿入・・・ 4.セル1の文字を、中央揃えで、折り返し表示する 5.セル2~?(その時々で違います)の行の高さを15にする 6.セルAの列幅を6にする 7.セルBの列幅を15にする 8.セルCの列幅を25にする・・・ こんな感じです。毎回同じ作業なので、わざわざ手作業するというのが馬鹿々々しいです。 こういうことを、自動で出来るようにする方法があったような気がするのですが。それがマクロやVBAというものなのでしょうか。 (ちなみに、マクロとVBAの違いってなんでしょう?)

  • Excelで列幅を自動的に調整

    Excelで文字を入力していて、自動的に列幅を変更したいのですが、 その際、列と列の間にカーソルを持っていってダブルクリックすれば 変わることは変わりますが、それはあくまでも「手動」と思っています。 そうではなく、文字数に応じて勝手に列幅が広がるという やり方はないのでしょうか? よろしくお願い致します。

  • 印刷するとエクセルの「列」からはみだしてしまう

    基本的なことかもしれません。すいません。 WIN98,EXCEL2000を利用しています。 10列×1000行程度のデータをエクセルからA4の紙に印刷する必要があります。データはほとんど、文字(日本語)です。 各セルには各々30字~50字程度の文字(全角)が入っています。 [セルの書式設定]  で [文字の制御]-[折り返して全体を表示] に設定を行い、 かつ [書式]-[行]-[自動調整] で行間を整えると、ワークシート上はすべての文字を表示しています。 しかし印刷プレビューで確認すると、列幅の中にすべての文字がセル内に入らず、途中で切れてしまいます。折り返された、最後の文字は、印刷に表示されません。 どうすればよいでしょう? すごく困っているのです。 だれか助けてください。

  • エクセルの文章作成について教えてください。

    エクセルの文章作成について教えてください。 よろしくお願い致します。初心者です。 ワードは苦手ですのでエクセルで作成したいです。 現在、内容証明書を作成しよう思っております。 ↓↓内容証明書作成のルールを読むと↓↓ 謄本の字数・行数は1行20字(記号は、1個を1字とします。以下同じとします。)以内、1枚26行以内で作成していただきます。ただし、謄本を横書きで作成するときは、1行13字以内、1枚40行以内または1行26字以内、1枚20行以内で作成することができます。 とあります。 【質問】 例えば、一行に20文字以上打ち込むと自動的に改行してくれるようなことはできますか? 初心者で説明がヘタですみません。わかる方がいらっしゃいましたら、宜しくお願い致します。

  • VBAにてエクセルのセルを結合するには?

    VBAにて、エクセルのセルを結合したいのですが? やっていることは、Access97よりVBAで、 Excel97へファイルを落とし込んでいるのですが 罫線を引いたり、列幅等をかえることはできたのですが セルを結合する方法がわかりません。 よろしくおねがいします。

  • EXCELでセルの高さを変えずに縦書きしたい。

    エクセルで文章を書く場合、横書きでは隣のセルに次々と、文字が移っていって、しかも隣のセルの幅は、変わりませんが、縦書きにすると、最初のセルだけが高さが高くなって伸びていきます。 これでは他の所とのバランスが崩れるので、下のセルの高さを変えずに、セルの上に次々と文字を書いていくにはどうしたらいいでしょうか? きわめて幼稚な質問で申し訳ありませんが、よろしくお願いします。

  • エクセルでの列幅の自動設定

    何百行のデータがあるエクセルの表があります。ある列には文字列が入っているのですが、この文字列長が短いのから長いのまでいろいろあります。列幅を適当に決めて印刷してみると、文字が長くてその列幅からはみ出てしまし、再度列幅を設定して印刷してみるなんてことをやってます。これを全ての文字列がちゃんと入るような列幅を自動的に設定することはできないでしょうか?文字列は1行で表示したいので、書式→セルの「折り返して全体を表示する」は使いたくありません。よろしくお願いします。

  • word文章をexcelで…

    wordの文章をexcelで編集することは不可能でしょうか? word文章を切り取り、excelのセルに貼り付けるというのではなく、word文章で改行されている箇所が自動でexcelでも1つ下のセルに入力されるような方法はないでしょうか?詳しい方がいらしたら教えてください。

専門家に質問してみよう