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

このQ&Aに関連する最新のQ&A

A 回答 (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
    • good
    • 0

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を使用された方がいいでしょう。
    • good
    • 0

質問の意味が違ったらごめんなさい。


文字を入力したい部分全部に範囲選択。
文字を入力して、Enterすれば、いいのでは?

どこでもいいですけど、
たとえば、A4~A10までドラッグして範囲選択して
文字入力して漢字変換し終わったら、Enter、
漢字変換し終わったら、Enterです。

方向キーを押したりクリックしたりしたら、解除されてしまいますが、
この方法なら、別に、
漢字一文字二文字気にする必要なんてないと思いますが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/10/23 20:41

【Enter】の代わりに【Tab】キーを使用するか、


<ツール>→<オプション>→<編集>
で、入力後に移動するセルの方向を指定できますよ。

 如何でしょう。。。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/10/22 22:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで、セルの列幅内に収まらない桁があっても、全ての桁を表示する方法がありますか(列の幅を変えずに)。

初めまして。

文字入力と数値入力の量が半分半分くらいの資料をエクセルで作成しております。

資料の体裁を後で調整しやすいように、列の幅を全て【1】にして作業しております。

数値を入力する際、セルの列幅内に収まりきらない桁があると「####」と表示され困っております。

調べてみると、列の幅を桁数に応じて変更する方法は紹介されていましたが、列の幅は変更したくありません(列の幅は【1】にしておきたいです)。

列の幅を変えずに全ての桁を表示する方法を教えて下さい。

よろしくお願い致します。

Aベストアンサー

列の幅が1では、そもそも無理では?
文字を小さくしても収まらないと思います。
一番右の列以外は、次の列の表示が重なるので
見えなくなります。
【折り返して全体を表示】はしたくないのですよね?

ただ####とならない様にする方法ならあります。
※当然列の幅が足りない桁は隠れて見ることが
 出来ないです。

数字の前に【'】をつけるてみて

例)
   A列  B列  C列
1行 '1234 '1111 '0001
2行 '1111 '1111 '0001


また、これらの数字の計算結果も####にしたくない場合は、
TEXT関数を使ってください。

=TEXT(A1+A2,"標準") 等で

Qexcelの列幅とセル幅の違いと意味

最近excelを少し始めようかなぁと思ってますが、excelの列幅とセル幅の言葉の意味や違いが分かりません。どなたか詳しい方教えて下さい。よろしくお願いします。

Aベストアンサー

一般的にはセルの幅と列の幅は同じですが、
セルは隣のセルと結合することができるので、そうなると列の幅と異なる幅をもつことになります。

Qエクセル 関数 1と入力されたセルの隣の列の値から、一つ前に1と入力されたセルの隣の列の値の引き算

1と入力されたセルの隣の列の値から、一つ前に1と入力されたセルの隣の列の値の引き算をしたいです。
具体的に、添付した画像の表で説明します。
A列は、連続した数値が入っています。
B列には、ところどころに、1が入力されています。(空白のセルが多いです。)
C列には、B列で、1と入力されたセル(例:B6)と同じ行のA列のセル(A6)の値から、B列で、一つ前に1と入力されたセル(B2)と同じ行のA列のセル(A2)の値の引き算をしたいです。
いまのところ、C列の結果は、D列にしめしたような計算で、ひとつずつ計算しています。

C列を、自動的におこなってくれるように工夫したいのですが、どんな関数をつかったらよいかわからないので、教えてほしいです。
補足ですが、行の入れ替え(サイズを変える、等)はしたくないです。(列の挿入はもちろんOKです。)

どうぞよろしくお願いします。

Aベストアンサー

D列を作業用に使用します。D列を最終的には見えないように設定してください。(文字色を白にするなど)
D1セルに「=A1*B1」
D2セルに「=IF(B2<>1,D1,A2*B2)」
D3セルより下はD2セルをコピー
C1セルに「=IF(D1=0,"",D1)」
C2セルに「=IF(D1=D2,"",D2-D1)」
C3セルより下はC2セルをコピー

Qエクセル セルの結合(A列,B列→A列に結合)の操作

現在、大量の人名を編集しています。

A列に名字、B列に名前が入力されている状態なのですが、A列に名字と名前を一緒に表示させるためには、どのようにすればよいか教えて下さい。

Aベストアンサー

C列に「名字+氏名」を表示させるなら、C1セルに
 =A1&B1
と入力して、下方向にコピーすれば良いです。

名字が入力されているA列の値を「名字+氏名」で置き換えるのは関数ではできません。
どうしても置き換えたいなら上記で説明した方法で表示された「名字+名前」をコピーして、A1に「編集」→「形式を選択して貼り付け」→「値」で貼り付けるという方法はありますが…

QExcelで「A列で任意のグループ」「B列は空白以外」「C列は空白セル」の数

さきほど、質問をした者です。
回答を締め切った後で、追加質問がありますので、新たに質問させていただきます。(たびたびスミマセン)

Excelで「A列で任意のグループ」名、かつ、「B列は空白ではないセル」、かつ、「C列は空白セル」の件数を出したいのです。 (オートフィルタではなく。)

=SUMPRODUCT((A3:A271="グループ名")*(B3:B271="▲▲▲")*(C3:C271=""))

という式を作ったのですが、「B列の空白以外」という条件にする"▲▲▲"の部分はどうすればいいのでしょう?

Aベストアンサー

B3:B271<>""


人気Q&Aランキング

おすすめ情報