「数字」の180度回転表示をエクセルVBAでコード化する方法を紹介します。
振替用紙(払込取扱票)への印字方法の中でのVBAコードですが、
このVBAコードだけでも他に色々と応用可能だと思います。
こんにちは、じゅんぱ店長(@junpa33)です。
先回、振込用紙(払込取扱票)に印字するデータを選択できるようにしましたが、
この記事では、印刷用テンプレートに転送したときの「数字」の表示を倒立表示させるVBAを組み立てます。
普通ではあまり、倒立文字を利用する場面や機会もないかと思います。
セルの書式設定で90度まで文字の回転表示できることは皆さんもご存じだと思います。
ただ今から行いたい目標は、その回転表示だけでは実現できません。
90度の回転表示から先180度の回転は、まさに、ウラ技、KnowHowの披露です。
その前に前回の記事の読み返しをするには、こちら↓になります。
必要なデータを転記するVBAコードを組む。払込取扱票への印字
コンテンツ
「数字」180度回転表示させる。
セルの書式設定の回転では不可能!
エクセルでは、セルの文字の表示について、直接に180度回転させる機能は設定されていません。
(「テクストボックスに入れて、それを180度回転させる」というのは次回の記事でやります。)
今回の記事内容は、振替用紙(払込取扱票)の口座記号・番号と振替金額を180度回転して表示できるようにするという内容です。
しかも1つのマス(セル)には、数字1文字ずつを分けて入れて表示できるようにするということです。
180度回転表示させるには、まず90度回転させて、さらにそれを90度回転させる、
つまりダブルの90度回転操作をさせる必要があります。
「な~んだ簡単簡単!」とパッと見 思いますが、
実はそれ程、エクセルは甘くありません。
書式設定でセルにある文字を最初に90度回転するとこのような↓表示になります。
一度「OK」をクリックして、
再度2回目の同じ操作をしようとしても、「すでに90度になっています。」ということで、それ以上の操作はできなくなっています。
ですので、セル内の数字を180度回転表示させるためには、
1度目の90度回転させる操作方法と、次(2度目)の90度回転させる方法は、それぞれに違う方法で行わなければいけないということです。
これから組み立てて行くエクセルVBAは、このような2段階の異なる方法での90度回転するプログラムとなります。
数字を180度回転させることが出来る裏技VBAコード
VBAコードを順番に頭から作成していきます。
作業するシートはこのような内容です。
「印刷用テンプレート」にはこのように表示されます。
Subプロシージャー名を「数字反転加工」とします。
Sub 数字反転加工()
End Sub
データを「印刷用テンプレート」に移す
変数の宣言をします
今回の「数字」については、1セル1文字がはまっていきますので、各セルの値を変数にしていくと多量になりますので、
配列を使って対応します。
変数の宣言を行います。
Dim SV(25) As String
Dim i As Long, t As Long, s As Long
Dim x As Long, ya As Long, yb As Long
Dim wa As Long, p As Long, wb As Long
Dim j As Long, k As Long
データの変数セットと移動
「入力シート」のデータを変数にセットします。
「For~Next」文の使い方はこちら↓の記事を参考にしてください。
エクセルVBA!For~Nextのループと入れ子構造をVBA最速理解
「If条件文」の条件設定の方法についてはこちら↓の記事が参考になります。
「If条件文」のVBAコードの組み方。条件の絞り方を最速に理解。
1次元配列変数についてはこちら↓を参考にしてください。
For i = 2 To 25
If Cells(4, i).Value <> “★” Then
SV(i) = Cells(4, i).Value
Else
SV(i) = “”
End If
Next i
「印刷用テンプレート」に移動させます。
Worksheets(“印刷用テンプレート”).Select
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)
180度回転させるためのVBA
90度を回転させる方法2つ
セルにある数字を回転させるのは、90度までしかできません。
この90度まで回転させることが出来る方法は、先ほど説明した「書式設定」の「配置」による方法です。
しかし、これだけだと問題が解決しません。
もう1つの方法が必要です。
この「数字」の「表示形式」をデフォルトの「標準」や「数値」ではなく「文字列」に変更します。
そしてさらに「半角」表示から「全角」表示へと変更します。
まさに「数字」を日本語特有の全角表示にしてしまうということです。
この「数字」の表示設定と表示を変更した上で、
この数字の「フォント設定」を変更します。「半角@」をフォント名の前につけます。
このもう一つの方法で、90度回転を行うことが出来ます。
With ~ End With の使い方については、こちらを参考にしてください。
With~End Withの使い方。VBAコードを簡潔に記述する
セルのフォントについてはこちらを参考にしてください。
セルの文字配置についてはこちらを参考にしてください。
①.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
②.2つ目の90度の回転方法
最初に説明した「書式設定」からの「配置」の中での方法。
.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文字のみ入っていることが前提です。
2文字以上入ると縦書きに配置されますので、今回のような使い方には不適になります。
何桁かの数字を180度回転表示したいときには、その「何桁かの数字」ごと文字列として、
テキストボックスに入れ込んで処理する必要があります。
これについては、次回の記事で扱いたいと思います。
この記事の持ち出しはこちらです。
ねこ氏
「数字」180度回転表示させるVBAコードのまとめ
今回作成したVBAコードはこのようになります。
エクセルシートで、文字文章を回転表示するということについては、
ツールのサポートもあまりなく、今できる方法での合わせ技で解決していくことになります。
そういったことで、
今回のテーマ「振替用紙(払込取扱票)への印字エクセルソフトの作成」を記事にしているこの場面でちょうど、
この作成に必要なテクニック「180度回転を作る方法」を記事にすることになりました。
結構、「180度回転表示方法」については、どのような方法があるのかと探しておられる方もおられるようですので、
そういったことでも、この記事がお悩みの問題に対して何かの解決の手助けになればいいなとも思っています。
次回は、文字列の180度回転表示についての記事になります。
短期間でエクセルVBAの独学習得を目指したいなら
エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。
けれども、
出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。
独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。
先人が行った勉強方法をあなたがそのまま利用すればよいということです。
独習のための大切な7つのポイントは、上記記事にて解説しています。
独習によるVBA習得のキーワードは、
出来るだけ多くの実例に触れること!
です。
正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。
ハッキリ言って、
本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、
手っ取り早く短期間習得できるというのは間違いないでしょう。
エクセルVBAを使って業務効率を上げて行くのに、始めのうちに知っておきたいテーマを纏めてみました。
ここまでお読みいただきありがとうございました。