こんにちは、Ryoです。
VBAで処理する過程において文字列を入力することは多々ありますが、様式などによっては右上がり/右下がりの角度を付けたり、縦書きにしたいこともありますよね。
そんな時に使えるセル内での文字列角度操作について今回は書いてみたいと思います。
1.サンプル概要
先ず安直な画像で申し訳ないのですが、実行前として以下とします。

記された文字通りとなるように今回紹介するサンプルコードを実行すると、こうなります。

ちなみに処理する際にはセルの文字に対して幅や高さを自動調整する記述も入れておかないと
こんな感じになってしまいますので、ご注意を。

2.サンプルコード
◆定数を使って角度を操作する
Sub Sample1()
For i = 3 To 6
With Cells(i, 2)
Select Case i
Case Is = 3
.Orientation = xlUpward '右上がり
.Rows.AutoFit '行高さの自動調整
Case Is = 4
.Orientation = xlDownward '右下がり
.Rows.AutoFit
Case Is = 5
.Orientation = xlVertical '縦書き
.Rows.AutoFit
Case Is = 6
.Orientation = xlHorizontal '横書き(標準)
End Select
End With
Next i
End Sub
このコードを実行すると上述の結果になります。
先ず文字列角度を変更するには、
オブジェクト.Orientation = 値または定数
このように指定します。
サンプルコードではWithを使ってるのでわかりにくいかもしれませんが、指定しているのは
以下の形になっています。
セルB3は、Cells(3, 2).Orientation = xlUpward
セルB4は、Cells(4, 2).Orientation = xlDownward
セルB5は、Cells(5, 2).Orientation = xlVertical
セルB6は、Cells(6, 2).Orientation = xlHorizontal
この記述に加えてセルの行高さを自動調整する為にAutoFitを使っています。
例えばセルB3の行高さ自動調整なら、
Cells(3, 2).Rows.AutoFit
列幅を自動調整したいなら、こう記述すればOKです。
Cells(3, 2).Columns.AutoFit
≪ 定数 ≫
xlUpward ⇒ 右上がり
xlDownward ⇒ 右下がり
xlVertical ⇒ 縦書き
xlHorizontal ⇒ 横書き(規定)
◆数値で設定し文字列角度を操作する
定数だけではなく、数値で設定することも出来ます。
縦書きは定数で設定するしかありませんが、右上がり/右下がりは数値で設定し、
横書き(規定)を35°の角度を付けてみます。
Sub Sample2()
For i = 3 To 6
With Cells(i, 2)
Select Case i
Case Is = 3
.Orientation = 90 '右上がり
.Rows.AutoFit '行高さの自動調整
Case Is = 4
.Orientation = -90 '右下がり
.Rows.AutoFit
Case Is = 5
.Orientation = xlVertical '縦書きは定数で!
.Rows.AutoFit
Case Is = 6
.Orientation = 35 '「規定」を35°に変更
.Rows.AutoFit
End Select
End With
Next i
End Sub
このコードを実行した結果は以下になります。

右上がりは90、右下がりは-90と設定することで同様になります。
縦書きはそのまま定数を使用しているので良しとして、規定の部分は35°として記述しましたので画像の様な形になります。
数値として設定できる範囲は「90から-90」の範囲です。
3.まとめ
記述も簡単でオブジェクト.Orientation = 値または定数ですから使いやすいですよね。
個人的にここでポイントなのはAutoFitを有効活用することだと思いますので、機会があれば合わせて使ってみてもらえればと思います。
以上、セル内の文字列角度を操作する方法についてでした!
今回の記事が何かの参考になれば幸いです。
Ryo

