「数字」を180度回転表示させるVBAコード

furikaehanteneyecatcha

「数字」を180度回転表示させるVBAコードを紹介します。
振替用紙(払込取扱票)への印字方法の中でのVBAコードですが、裏技としてに別の場面でも利用することが出来ます。

こんにちは、じゅんぱ店長(@junpa33)です。

先回、振込用紙(払込取扱票)に印字するデータの選択を行なえるようにしました。

この記事では、印刷用テンプレートに転送したときの「数字」の表示を倒立表示させるVBAを組み立てます。

なぜ、「数字」の倒立表示が必要なのか?

このソフトで行う振替用紙(払込取扱票)への印刷は、通常の印刷方向とは逆の「上下反対」で行います。

なので、その印刷に対応して、文字の倒立印字が必要となります。

普通ではあまり、倒立文字を利用する場面や機会もないかと思います。

セルの書式設定で90度まで文字の回転表示できることは皆さんもご存じだと思います。

ただ今回行う倒立回転は、デフォルトでエクセルが備えている回転ツールだけでは実現することができません。

90度の回転表示から先の180度までの回転は、まさに、ウラ技の披露となります。

その前に前回の記事の読み返しをするには、こちら↓になります。

furidataidoeyecatch 振替用データを選択転記するVBA。請求元と振込元に両対応

「数字」180度回転表示させる方法

furikaehantenp001

エクセルでは、セルの文字の表示について、直接に180度回転させる機能は設定されていません。

(「テキストボックスに入れて、それを180度回転させる」というのは次回の記事でやります。)

今回の記事内容は、振替用紙(払込取扱票)の口座記号・番号と振替金額を180度回転して表示できるようにするという内容です。

しかも1つのマス(セル)には、数字1文字ずつを分けて入れて表示できるようにするということです。

180度回転表示させるには、まず90度回転させて、さらにそれを90度回転させる、

つまりダブルの90度回転操作をさせる必要があります。

「な~んだ簡単簡単!」とパッと見 思いますが、

実はそれ程、エクセルは甘くありません。

書式設定でセルにある文字を最初に90度回転するとこのような↓表示になります。

furikaehanten001a

一度「OK」をクリックして、

再度2回目の同じ操作をしようとしても、「すでに90度になっています。」ということで、それ以上の操作はできなくなっています。

ですので、セル内の数字を180度回転表示させるためには、
1度目の90度回転させる操作方法と、次(2度目)の90度回転させる方法は、それぞれに違う方法で行わなければいけないということです。

これから組み立てて行くエクセルVBAは、このような2段階の異なる方法での90度回転するプログラムとなります。

数字を倒立表示させるVBA裏技コード

furikaehantenp002

VBAコードを順番に頭から作成していきます。

作業するシートはこのような内容です。

furikaemojihanten007a

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

furikaemojihanten008a

プロシージャー名を「数字反転加工」とします。

VBA
Option Explicit

Sub 数字反転加工()
・・・・
End Sub

データを「印刷用テンプレート」に移す

変数の宣言をします

今回の「数字」は、1セル1文字をはめていきます。各セルの値には配列を使って対応します。

変数の宣言を行います。

VBA
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

データの変数セットと移動

「入力シート」のデータを変数にセットします。

fornextirekoeyecatch For~Nextのループと入れ子構造をVBA最速理解 vbaifjyokeneyecatch If条件文のVBAコードの組み方。条件の絞り方を最速理解 vbahairetueyecatch 1次元配列とは。静的配列と動的配列 エクセルVBA
VBA
        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

「印刷用テンプレート」に移動させます。

VBA
        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度を回転させる方法2つ

セルにある数字を回転させるのは、90度までしかできません。

この90度まで回転させることが出来る方法は、先ほど説明した「書式設定」の「配置」による方法です。

しかし、これだけだと問題が解決しません。

もう1つの方法が必要です。

POINT

この「数字」の「表示形式」をデフォルトの「標準」や「数値」ではなく「文字列」に変更します。

そしてさらに「半角」表示から「全角」表示へと変更します。

この「数字」の表示設定と表示を変更した上で、

この数字の「フォント設定」を変更します。「半角@」をフォント名の前につけます。

このもう一つの方法で、90度回転を行うことが出来ます

vbawithstateeyecatch With~End Withの使い方。VBAコードを簡潔に記述する vbacellsfonteyecatch 「フォント」の操作を最速理解する エクセルVBA vbacellsplacementeyecatch 「配置」を最速理解する エクセルVBA

①.1つ目の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

②.2つ目の90度の回転方法

最初に説明したエクセルに備え付けの90度回転。「書式設定」からの「配置」の中での方法。

VBA
            With Cells(12, j)
                .HorizontalAlignment = xlGeneral
                .VerticalAlignment = xlCenter
                .Orientation = 90
                .IndentLevel = 0
            End With
        Next j

①と②の90度回転を合体して、それぞれのセルの「数字」について実行する

VBAコードはこのようになります。

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文字のみ入っていることが前提です。

MEMO

2文字以上入ると縦書きに配置されますので、今回のような使い方には不適になります。

何桁かの数字を180度回転表示したいときには、その「何桁かの数字」ごと文字列として、

テキストボックスに入れ込んで処理する必要があります。

これについては、次回の記事で扱いたいと思います。

ねこ氏
ねこ氏

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

QRfurikaeyoshi005

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

furikaehantenp003

エクセルシートで、文字文章を180度回転表示するということについては、今できる方法での合わせ技で解決していくことになります。

今回の「振替用紙(払込取扱票)へ印字するエクセルソフト」の作成の中で、180度回転(倒立文字)が必要になりました。

時々、文字の「180度回転方法」について、探しておられる方もおられるようですので、何かの解決のための参考にしていただければと思います。

次回は、文字列の180度回転表示についての記事になります。

短期間でエクセルVBAの独学習得を目指したいなら

furikaehantenp004

エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。

けれども、

出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。

独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。

先人が行った勉強方法をあなたがそのまま利用すればよいということです。

vbastudyeyecatch002 エクセルVBAを独学で習得する!ために大切な7つのポイントを解説します

独習のための大切な7つのポイントは、上記記事にて解説しています。

正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。

ハッキリ言って、

本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、

手っ取り早く短期間習得できるというのは間違いないでしょう。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

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

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min