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