テキストボックスを180度回転したエクセルVBAコードを作成する

furikaemojihanteneyecatcha

新たに挿入したテキストボックスに変数化した文字列を表示し、さらに180度回転させるためのエクセルVBAのコードを紹介します。
振替用紙への印字のための必要テクニックです。

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

 

今回も先回同様に、180度回転表示についてです。

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

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

 

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

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

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

 

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

furikaehanteneyecatcha「数字」を180度回転表示させるエクセルVBAの裏技コード

 

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

 

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

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

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

解決策として

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

 

例えば手動で、

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

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

furikaemojihanten001a

 

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

furikaemojihanten002a

 

 

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

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

 

180度回転させるVBAコードの作成方法

 

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

 

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

furikaemojihanten004a

 

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

furikaemojihanten005a

 

テキストボックスを挿入するエクセルVBA

 

MEMO

With ~ End With の使い方については、こちらを参考にしてください。

vbawithstateeyecatchWith~End Withの使い方。VBAコードを簡潔に記述する

 

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

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

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

Sub テキスト反転加工a()
End Sub

 

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

その中に入っているデータを指定するには、仕様上連結セルの左上のセルに入っていることになっています。

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

 

  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

 

180度回転させるVBAコード

 

上の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

 

それぞれの項目に文字列を180度回転移動するVBA

 

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

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

「通信欄」のSubプロシージャー名は「テキスト反転加工b」
「ご依頼人 おところ」のSubプロシージャー名は「テキスト反転加工c」
「ご依頼人 おなまえ」のSubプロシージャー名は「テキスト反転加工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コードのまとめ

 

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

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

Sub テキスト反転加工()

 

テキスト反転加工a
テキスト反転加工b
テキスト反転加工c
テキスト反転加工d

 

End Sub

VBAコード参考記事

ここの説明で出てくるVBAコードの参考にしていただける記事です。

全体を通してこのようになります。

furikaemojihanten003a

 

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

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

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

furikaemojihanten006a

 

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

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

 

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

 

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

けれども、

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

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

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

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

重要ワード

独習によるVBA習得のキーワードは、

出来るだけ多くの実例に触れること!

です。

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

ハッキリ言って、

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

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

 

 

エクセルVBAを使って業務効率を上げて行くのに、始めのうちに知っておきたいテーマを纏めてみました。

「エクセルVBA最速理解」の記事一覧を開く

 

ここまでお読みいただきありがとうございました。

 

 

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