「数字」を180度回転表示させるVBAコードを紹介します。
振替用紙(払込取扱票)への印字方法の中でのVBAコードですが、裏技としてに別の場面でも利用することが出来ます。
こんにちは、じゅんぱ店長(@junpa33)です。
先回、振込用紙(払込取扱票)に印字するデータの選択を行なえるようにしました。
この記事では、印刷用テンプレートに転送したときの「数字」の表示を倒立表示させるVBAを組み立てます。
このソフトで行う振替用紙(払込取扱票)への印刷は、通常の印刷方向とは逆の「上下反対」で行います。
なので、その印刷に対応して、文字の倒立印字が必要となります。
普通ではあまり、倒立文字を利用する場面や機会もないかと思います。
セルの書式設定で90度まで文字の回転表示できることは皆さんもご存じだと思います。
ただ今回行う倒立回転は、デフォルトでエクセルが備えている回転ツールだけでは実現することができません。
90度の回転表示から先の180度までの回転は、まさに、ウラ技の披露となります。
その前に前回の記事の読み返しをするには、こちら↓になります。

コンテンツ
「数字」180度回転表示させる方法

エクセルでは、セルの文字の表示について、直接に180度回転させる機能は設定されていません。
(「テキストボックスに入れて、それを180度回転させる」というのは次回の記事でやります。)
今回の記事内容は、振替用紙(払込取扱票)の口座記号・番号と振替金額を180度回転して表示できるようにするという内容です。
しかも1つのマス(セル)には、数字1文字ずつを分けて入れて表示できるようにするということです。
180度回転表示させるには、まず90度回転させて、さらにそれを90度回転させる、
つまりダブルの90度回転操作をさせる必要があります。
「な~んだ簡単簡単!」とパッと見 思いますが、
実はそれ程、エクセルは甘くありません。
書式設定でセルにある文字を最初に90度回転するとこのような↓表示になります。

一度「OK」をクリックして、
再度2回目の同じ操作をしようとしても、「すでに90度になっています。」ということで、それ以上の操作はできなくなっています。
ですので、セル内の数字を180度回転表示させるためには、
1度目の90度回転させる操作方法と、次(2度目)の90度回転させる方法は、それぞれに違う方法で行わなければいけないということです。
これから組み立てて行くエクセルVBAは、このような2段階の異なる方法での90度回転するプログラムとなります。
数字を倒立表示させるVBA裏技コード

VBAコードを順番に頭から作成していきます。
作業するシートはこのような内容です。

「印刷用テンプレート」にはこのように表示されます。

プロシージャー名を「数字反転加工」とします。
Option Explicit
Sub 数字反転加工()
・・・・
End Sub
データを「印刷用テンプレート」に移す
今回の「数字」は、1セル1文字をはめていきます。各セルの値には配列を使って対応します。
変数の宣言を行います。
Option Explicit
Sub 数字反転加工()
Dim SV(25) As String
Dim i, t, s As Long
Dim x, ya, yb As Long
Dim wa, p, wb As Long
Dim j, k As Long
「入力シート」のデータを変数にセットします。



With Worksheets("入力シート")
For i = 2 To 25
If .Cells(4, i).Value <> "★" Then
SV(i) = .Cells(4, i).Value
Else
SV(i) = ""
End If
Next i
End With
「印刷用テンプレート」に移動させます。
With Worksheets("印刷用テンプレート")
s = 14
For t = 25 To 2 Step -1
.Cells(12, s).Value = SV(t)
s = s + 1
Next t
For x = 2 To 6
.Cells(12, 13 - x) = SV(x)
Next x
.Cells(12, 4) = SV(8)
For ya = 10 To 13
.Cells(11, 20 - ya) = SV(ya)
Next ya
p = 1
For yb = 14 To 15
.Cells(11, 20 - yb - p) = SV(yb)
p = p + 1
Next yb
.Cells(11, 2) = SV(16)
For wa = 18 To 22
.Cells(8, 29 - wa) = SV(wa)
Next wa
p = 1
For wb = 23 To 24
.Cells(8, 29 - wb - p) = SV(wb)
p = p + 1
Next wb
.Cells(8, 2) = SV(25)
End With
180度回転させるためのVBA
セルにある数字を回転させるのは、90度までしかできません。
この90度まで回転させることが出来る方法は、先ほど説明した「書式設定」の「配置」による方法です。
しかし、これだけだと問題が解決しません。
もう1つの方法が必要です。
この「数字」の「表示形式」をデフォルトの「標準」や「数値」ではなく「文字列」に変更します。
そしてさらに「半角」表示から「全角」表示へと変更します。
この「数字」の表示設定と表示を変更した上で、
この数字の「フォント設定」を変更します。「半角@」をフォント名の前につけます。
このもう一つの方法で、90度回転を行うことが出来ます。



「表示形式」を「文字列」に変更後、「数字」を全角表示に設定し、「フォント設定」を「@」付きにします。
Worksheets("印刷用テンプレート").Select
For j = 14 To 37
Cells(12, j).Select
Selection.NumberFormatLocal = "@"
Cells(12, j) = StrConv(Cells(12, j), vbWide)
With Cells(12, j).Font
.Name = "@MS Pゴシック"
.Size = 10
End With
最初に説明したエクセルに備え付けの90度回転。「書式設定」からの「配置」の中での方法。
With Cells(12, j)
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.Orientation = 90
.IndentLevel = 0
End With
Next j
①と②の90度回転を合体して、それぞれのセルの「数字」について実行する
VBAコードはこのようになります。
Worksheets("印刷用テンプレート").Select
For j = 14 To 37
Cells(12, j).Select
Selection.NumberFormatLocal = "@"
Cells(12, j) = StrConv(Cells(12, j), vbWide)
With Cells(12, j).Font
.Name = "@MS Pゴシック"
.Size = 10
End With
With Cells(12, j)
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.Orientation = 90
.IndentLevel = 0
End With
Next j
For k = 2 To 11
Cells(8, k).Select
Selection.NumberFormatLocal = "@"
Cells(8, k) = StrConv(Cells(8, k), vbWide)
With Cells(8, k).Font
.Name = "@MS Pゴシック"
.Size = 10
End With
With Cells(8, k)
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.Orientation = 90
.IndentLevel = 0
End With
Next k
For k = 2 To 11
Cells(11, k).Select
Selection.NumberFormatLocal = "@"
Cells(11, k) = StrConv(Cells(11, k), vbWide)
With Cells(11, k).Font
.Name = "@MS Pゴシック"
.Size = 10
End With
With Cells(11, k)
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.Orientation = 90
.IndentLevel = 0
End With
Next k
For k = 2 To 11
Cells(12, k).Select
Selection.NumberFormatLocal = "@"
Cells(12, k) = StrConv(Cells(12, k), vbWide)
With Cells(12, k).Font
.Name = "@MS Pゴシック"
.Size = 10
End With
With Cells(12, k)
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.Orientation = 90
.IndentLevel = 0
End With
Next k
End Sub
この180度回転表示方法については、セルには全角1文字のみ入っていることが前提です。

この記事の持ち出しはこちらです。

「数字」の180度回転表示のまとめ

エクセルシートで、文字文章を180度回転表示するということについては、今できる方法での合わせ技で解決していくことになります。
今回の「振替用紙(払込取扱票)へ印字するエクセルソフト」の作成の中で、180度回転(倒立文字)が必要になりました。
時々、文字の「180度回転方法」について、探しておられる方もおられるようですので、何かの解決のための参考にしていただければと思います。
次回は、文字列の180度回転表示についての記事になります。
短期間でエクセルVBAの独学習得を目指したいなら

エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。
けれども、
出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。
独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。
先人が行った勉強方法をあなたがそのまま利用すればよいということです。

独習のための大切な7つのポイントは、上記記事にて解説しています。
正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。
ハッキリ言って、
本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、
手っ取り早く短期間習得できるというのは間違いないでしょう。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。