テキストボックスを180度回転して文字を倒立させるVBA

furikaemojihanteneyecatcha

テキストボックスに入力した文字列を180度回転させるVBAコードを紹介します。
振替用紙をプリンター印字するための必要なテクニックです。

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

今回も、180度回転表示方法についてです。

「文字列(文章)」を表示して、180度回転させる方法です。

今回の回転方法は、「数字」の時とは全く違った方法になります。

「文字列(文章)」を180度回転させる方法は、先回説明した数字の場合とは全く異なります。

結構、強引に回転させる的な方法になります。

テキストボックスを180度回転させるという方法です。

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

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

テキストを180度回転させる方法を考える

furikaemojihanten009

今回は、セルに入っている文字列(文章)を180度回転させるということですが、

先回の記事でも書きましたように、そのまま回転させようとすると90度回転が限界です。

先回の「数字」と同じ方法で回転させると”横書きが縦書き”になってしまいます。

解決策として

今回は、テキストボックスを使って180度回転表示させることにします。

例えば手動で、

エクセルでテキストボックスを挿入するには、

「挿入」タブから「テキストボックス」で「横書きテキストボックス」を選択します。

furikaemojihanten001a
矢印下001

「横書きテキストボックス」についているハンドルを掴んで180度回転させます。

furikaemojihanten002a

これを、VBAコードを使って自動化していきます。

そのVBAを実行すると、表示が180度回転しているという訳です。

文字列を180度回転させるVBA作成

furikaemojihanten010

それぞれ文字列になるデータの操作は、各項目セルごとに同じになります。

今回作業するシートのセル内容はこのようになっています。

furikaemojihanten004a
矢印下001

今回の目標は別のシートに移してこのように180度回転表示します。

furikaemojihanten005a

テキストボックスを挿入する

「入力シート」のデータ入力欄、セルC5に入っている「加入者名」で説明をしていきます。

まず、ここのデータを新しく挿入したテキストボックスに移します。

プロシージャー名を「テキスト反転加工a」とします。

「加入者名」の入力セルは、セルC5からP15までの連結セルになっています。

連結セルのデータを指定するには、連結セルの左上のセルを指定します。

テキストボックスを追加(サイズを調整)し、Textを指定、外枠を非表示にします。

VBA
Sub テキスト反転加工a()
    Dim TVa As Variant
        Worksheets("入力シート").Select
        TVa = Range("C5").Value
        ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
                        80.25, 568.5, 200, 28).Select
        With Selection.ShapeRange
            .TextFrame2.TextRange.Characters.Text = TVa
            .Line.Visible = msoFalse
        End With
vbawithstateeyecatch With~End Withの使い方。VBAコードを簡潔に記述する

テキストボックスを180度回転させる

上のVBAコードで作成したテキストボックスを切り取って「印刷用テンプレート」シートに張り付けます。

張り付ける場所は2か所です。貼り付け後、180度反転をします。

また貼り付けスペースの大きさが違いますのでサイズ調整をします。

VBA
        Selection.Cut
        Worksheets("印刷用テンプレート").Select
        Range("W11").Select
        ActiveSheet.Paste
        Selection.ShapeRange.IncrementRotation 180
        Range("C10").Select
        ActiveSheet.Paste
        With Selection.ShapeRange
            .TextFrame.AutoSize = True
        End With
        Selection.ShapeRange.IncrementRotation 180
        Worksheets("入力シート").Select
        Range("A1").Select
End Sub

全ての記入項目を180度反転移動する

それぞれの項目について、

「加入者名」についてのプロシージャー名は「テキスト反転加工a」

「通信欄」についてのプロシージャー名は「テキスト反転加工b」
「ご依頼人 おところ」についてのプロシージャー名は「テキスト反転加工c」
「ご依頼人 おなまえ」についてのプロシージャー名は「テキスト反転加工d」

とします。

「ご依頼人 お名前」の受領書側の貼り付けサイズは、貼り付け位置のセルの大きさを基にテキストボックスの大きさを指定しています。

「通信欄」については

VBA
Sub テキスト反転加工b()
    Dim TVb As Variant
        Worksheets("入力シート").Select
        TVb = Range("B8").Value
        ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
                    80.25, 568.5, 325, 66.75).Select
        With Selection.ShapeRange
            .TextFrame2.TextRange.Characters.Text = TVb
            .Line.Visible = msoFalse
        End With
        Selection.Cut
        Worksheets("印刷用テンプレート").Select
        Range("O8").Select
        ActiveSheet.Paste
        Selection.ShapeRange.IncrementRotation 180
        Worksheets("入力シート").Select
        Range("A1").Select
End Sub

「ご依頼人 おところ」については

VBA
Sub テキスト反転加工c()
    Dim TVc As Variant
        Worksheets("入力シート").Select
        TVc = Range("C14").Value
        ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
        80.25, 568.5, 225, 50).Select
        With Selection.ShapeRange
            .TextFrame2.TextRange.Characters.Text = TVc
            .Line.Visible = msoFalse
        End With
        Selection.Cut
        Worksheets("印刷用テンプレート").Select
        Range("U5").Select
        ActiveSheet.Paste
        Selection.ShapeRange.IncrementRotation 180
        Worksheets("入力シート").Select
        Range("A1").Select
End Sub

「ご依頼人 おなまえ」については

VBA
Sub テキスト反転加工d()
    Dim TVd As Variant
        Worksheets("入力シート").Select
        TVd = Range("C16").Value
        ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
                    80.25, 568.5, 225, 50).Select
        With Selection.ShapeRange
            .TextFrame2.TextRange.Characters.Text = TVd
            .Line.Visible = msoFalse
        End With
        Selection.Cut
        Worksheets("印刷用テンプレート").Select
        Range("U3").Select
        ActiveSheet.Paste
        Selection.ShapeRange.IncrementRotation 180
        Range("B6").Select
        ActiveSheet.Paste
        With Selection.ShapeRange
            .Height = Range("B6").Height * 4
            .Width = Range("B6").Width * 8
            .TextFrame2.WordWrap = msoTrue
        End With
        Selection.ShapeRange.IncrementRotation 180
        Worksheets("入力シート").Select
        Range("A1").Select
End Sub

テキストボックスを180度反転させるVBAのまとめ

furikaemojihanten011

それぞれの項目についてのVBAコードを纏めて行うプロシージャーを作ります。

プロシージャー名は「テキスト反転加工」とします。

VBA
Option Explicit
Sub テキスト反転加工()
        Call Module3.テキスト反転加工a
        Call Module3.テキスト反転加工b
        Call Module3.テキスト反転加工c
        Call Module3.テキスト反転加工d
End Sub
vbacalleyecatch 部品化プロシージャーでCallステートメントは必須

これで、「入力シート」でセットした、振替用紙(払込取扱票)へ印字したいデータを、

「印刷用テンプレート」に180度回転させて移動配置完了です。

作成されている「印刷用テンプレート」シートを確認チェックして下さい。

furikaemojihanten006a

後は、印刷準備のセッティングを行います。

次回は、印字ボタンの設置やプリンターの用紙サイズの設定などについてです。

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

furikaemojihanten012

エクセル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