テキストボックスに入力した文字列を180度回転させるVBAコードを紹介します。
振替用紙をプリンター印字するための必要なテクニックです。
こんにちは、じゅんぱ店長(@junpa33)です。
今回も、180度回転表示方法についてです。
「文字列(文章)」を表示して、180度回転させる方法です。
今回の回転方法は、「数字」の時とは全く違った方法になります。
「文字列(文章)」を180度回転させる方法は、先回説明した数字の場合とは全く異なります。
結構、強引に回転させる的な方法になります。
テキストボックスを180度回転させるという方法です。
先に前回の記事の読み返しをするには、こちら↓になります。
![furikaehanteneyecatcha](https://shimaydo.com/wp-content/uploads/2020/04/furikaehanteneyecatcha-160x120.jpg)
コンテンツ
テキストを180度回転させる方法を考える
![furikaemojihanten009](https://shimaydo.com/wp-content/uploads/2020/04/furikaemojihanten009.jpg)
今回は、セルに入っている文字列(文章)を180度回転させるということですが、
先回の記事でも書きましたように、そのまま回転させようとすると90度回転が限界です。
先回の「数字」と同じ方法で回転させると”横書きが縦書き”になってしまいます。
解決策として
今回は、テキストボックスを使って180度回転表示させることにします。
例えば手動で、
エクセルでテキストボックスを挿入するには、
「挿入」タブから「テキストボックス」で「横書きテキストボックス」を選択します。
![furikaemojihanten001a](https://shimaydo.com/wp-content/uploads/2020/04/furikaemojihanten001a.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
「横書きテキストボックス」についているハンドルを掴んで180度回転させます。
![furikaemojihanten002a](https://shimaydo.com/wp-content/uploads/2020/04/furikaemojihanten002a.jpg)
これを、VBAコードを使って自動化していきます。
そのVBAを実行すると、表示が180度回転しているという訳です。
文字列を180度回転させるVBA作成
![furikaemojihanten010](https://shimaydo.com/wp-content/uploads/2020/04/furikaemojihanten010.jpg)
それぞれ文字列になるデータの操作は、各項目セルごとに同じになります。
今回作業するシートのセル内容はこのようになっています。
![furikaemojihanten004a](https://shimaydo.com/wp-content/uploads/2020/04/furikaemojihanten004a-1024x891.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
今回の目標は別のシートに移してこのように180度回転表示します。
![furikaemojihanten005a](https://shimaydo.com/wp-content/uploads/2020/04/furikaemojihanten005a-1024x889.jpg)
テキストボックスを挿入する
「入力シート」のデータ入力欄、セルC5に入っている「加入者名」で説明をしていきます。
まず、ここのデータを新しく挿入したテキストボックスに移します。
プロシージャー名を「テキスト反転加工a」とします。
「加入者名」の入力セルは、セルC5からP15までの連結セルになっています。
連結セルのデータを指定するには、連結セルの左上のセルを指定します。
テキストボックスを追加(サイズを調整)し、Textを指定、外枠を非表示にします。
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](https://shimaydo.com/wp-content/uploads/2020/12/vbawithstateeyecatch-160x120.jpg)
テキストボックスを180度回転させる
上のVBAコードで作成したテキストボックスを切り取って「印刷用テンプレート」シートに張り付けます。
張り付ける場所は2か所です。貼り付け後、180度反転をします。
また貼り付けスペースの大きさが違いますのでサイズ調整をします。
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」
とします。
「ご依頼人 お名前」の受領書側の貼り付けサイズは、貼り付け位置のセルの大きさを基にテキストボックスの大きさを指定しています。
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
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
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](https://shimaydo.com/wp-content/uploads/2020/04/furikaemojihanten011.jpg)
それぞれの項目についてのVBAコードを纏めて行うプロシージャーを作ります。
プロシージャー名は「テキスト反転加工」とします。
Option Explicit
Sub テキスト反転加工()
Call Module3.テキスト反転加工a
Call Module3.テキスト反転加工b
Call Module3.テキスト反転加工c
Call Module3.テキスト反転加工d
End Sub
![vbacalleyecatch](https://shimaydo.com/wp-content/uploads/2022/04/vbacalleyecatch-160x120.jpg)
これで、「入力シート」でセットした、振替用紙(払込取扱票)へ印字したいデータを、
「印刷用テンプレート」に180度回転させて移動配置完了です。
作成されている「印刷用テンプレート」シートを確認チェックして下さい。
![furikaemojihanten006a](https://shimaydo.com/wp-content/uploads/2020/04/furikaemojihanten006a-1024x888.jpg)
後は、印刷準備のセッティングを行います。
次回は、印字ボタンの設置やプリンターの用紙サイズの設定などについてです。
短期間でエクセルVBAの独学習得を目指したいなら
![furikaemojihanten012](https://shimaydo.com/wp-content/uploads/2020/04/furikaemojihanten012.jpg)
エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。
けれども、
出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。
独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。
先人が行った勉強方法をあなたがそのまま利用すればよいということです。
![vbastudyeyecatch002](https://shimaydo.com/wp-content/uploads/2022/01/vbastudyeyecatch002-160x120.jpg)
独習のための大切な7つのポイントは、上記記事にて解説しています。
正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。
ハッキリ言って、
本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、
手っ取り早く短期間習得できるというのは間違いないでしょう。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
![vbastudyeyecatch2](https://shimaydo.com/wp-content/uploads/2022/01/vbastudyeyecatch2-160x120.jpg)
今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。