Categories: VBA基礎

EXCEL VBA セルの文字配置(横書き・縦書きの指定・折り返しの指定・セルの書式設定)

 

 

EXCEL VBA セルの文字配置(横書き・縦書きの指定・折り返しの指定・セルの書式設定)

 

 

●はじめに
セルに文字列を入力し、その文字列をEXCELのセルの書式設定を行いますが、VBAでもセル内の文字列に対して様々な配置設定等を行う事ができます。今回説明するセルの書式設定は、セル内の文字列の縦書き・横書きの設定と折り返しの指定です。横書き・縦書きの設定では、向きを設定する方法とー90~90の範囲を数値の角度で指定する事ができます。セル内の文字列の折り返しについては、セル内の文字列を折り返すのか折り返さないのかを指定する事ができます。それでは、セルの文字列の横書き・縦書き・折り返しの設定方法を順番に説明いたします。

 

 

●書式の説明 セルの書式設定(横書き/縦書き:Orientation)
(クリックで拡大)

オブジェクト.Orientation = 設定(方向を設定)
横書き・縦書きの設定定数(設定)
横書きxlHorizontal
縦書きxlVertical

 

 

セルの書式設定 文字列の横書き・縦書きの設定(Orientation)

 

 

●プログラム説明 (サンプル①)
下記のサンプルプログラムは、セルの書式設定の文字列に対して横書き・縦書きの設定を行うサンプルプログラムです。シートのセル全体の書式設定を縦書き・横書きに切り替えます。

 

Sub セルの書式設定_横書き縦書き()

    With Cells
            .Orientation = xlVertical  'シート全体を縦書きにします。
    End With

    MsgBox "セルの書式設定を縦書きにしました。"

    With Cells
            .Orientation = xlHorizontal  'シート全体を横書きにします。
    End With
    
    MsgBox "セルの書式設定を横書きにしました。"

End Sub


 

 

●実行前~実行後 ※プログラム実行後、シート全体のセルに対して縦書き・横書きを順番に切り替えました。
(画面クリックして拡大)

 

 

セルの書式設定 文字列の横書き・縦書きの設定(向き・角度を設定) (Orientation)

 

 

●プログラム説明 (サンプル②)
下記のサンプルプログラムは、表示されているシートのセル全体に対するセルの書式設定の表示角度を-90~90へ1ずつ変更表示させるサンプルプログラムです。日常業務では、今回の様なサンプルプログラムは、利用する事は、ありませんが表示させる文字に対して細かく角度を変えられる事が分かります。

 

Sub セルの書式設定_角度変更()
    
    Dim I, L As Long

    For I = -90 To 90  'セルの書式設定の角度を-90⇒90へ1ずつ角度を変えます。

        For L = 1 To 100000 '処理時間を遅らせるループ処理
        
        Next L
        
        With Cells
                .Orientation = I  'シート全体の角度変更します。
        End With

    Next I

End Sub

 

 

●実行前~実行後 ※プログラム実行後、全てのセルに対して、セルの書式設定の表示角度が-90~90へ変化します。
(画面クリックして拡大)

 

 

セルの書式設定 データ一覧から縦書きのスケジュール表に転記 (スケジュール表の作成)

 

 

●プログラム説明 (サンプル③)

下記のサンプルプログラムは、横書きのデータ一覧から縦書きのスケジュール表に転記するサンプルプログラムです。データ形式から表形式に転記します。

 

Sub セルの書式設定_横書きから縦書きへ転記()

        Dim ws01, ws02 As Worksheet
        Dim L, I, M, lRow, mRow, xRow As Long
        
        Set ws01 = Worksheets("業務一覧")
        Set ws02 = Worksheets("スケジュール表")

        lRow = ws01.Cells(Rows.Count, "A").End(xlUp).Row 'シート「業務一覧」のA列の最終行を取得
        mRow = ws02.Cells(Rows.Count, "B").End(xlUp).Row 'シートスケジュール表」のB列の最終行を取得
        
        For L = 2 To lRow  'シート「業務一覧」のデータ2行目から最終行までループ

            xRow = 0
            On Error Resume Next
            xRow = WorksheetFunction.Match(ws01.Cells(L, "B"), ws02.Range("A2:A" & mRow), 0) + 1
            '※シート「業務一覧」の「B列」(社員番号)とシート「スケージュール表」の「A列」(社員番号)の一致する行を取得(xRow)
            
            On Error GoTo 0
  
            If xRow <> 0 Then
                    M = Day(ws01.Cells(L, "A")) + 2
                    'シート「業務一覧」からA列の日付の日+2をMへ代入。例:3/1は、1+2でMは、3となる。3は、3列目=C列
                    
                    ws02.Cells(xRow, M) = ws01.Cells(L, "D") 'シート「業務一覧」のD列「業務内容」を転記する。
                    With ws02.Cells(xRow, M)  'XRow一致した行とM=列
                        .Orientation = xlVertical  '縦書きに設定
                        .ShrinkToFit = True  '縮小して表示する
                        .VerticalAlignment = xlTop '上詰め
                        .Font.Size = 10  'フォントサイズを10に指定
                        
                    End With
                                        
            End If
            
        Next L

End Sub

 

 

●実行前~実行後 ※プログラム実行後、
(クリックして拡大)

 

 

セルの書式設定 文字列の折り返し・セルの値を折り返す。(WrapText)

 

 

●書式の説明 セルの書式設定(折り返しの指定:WrapText)
(クリックで拡大)
オブジェクト.WrapText = True / False
文字の制御
【押し返しの指定】
オブジェクト.WrapText = True折り返しの設定
オブジェクト.WrapText = False折り返しの解除

 

 

セルの書式設定 文字列の制御・文字列を折り返して全体を表示する (WrapText)

 

 

●プログラム説明 (サンプル①)
下記のサンプルプログラムは、シート「住所録」からシート「住所録(折り返し)」へ住所でデータを転記するサンプルプログラムです。別シートに転記する際に、「住所」部分を転記する際に、折り返して転記させます。
データを別のシートやセルに転記する際、転記先のセル幅の大きさが転記元より小さい場合は、文字列がセル内に入らないので、WrapTexTを使って文字列を折り返します。

 

Sub セルの書式設定_文字列の折り返し()

        Dim ws01, ws02 As Worksheet
        Dim L, I, lRow As Long
        
        Set ws01 = Worksheets("住所録")
        Set ws02 = Worksheets("住所録(折り返し)")

        lRow = ws01.Cells(Rows.Count, "A").End(xlUp).Row 'シート「住所録」のA列の最終行を取得

        For I = 2 To lRow 'シート「住所録」のデータを最終行まで転記します。
        
            ws02.Cells(I, "A") = ws01.Cells(I, "A") '管理番号を転記
            ws02.Cells(I, "B") = ws01.Cells(I, "B") '氏名を転記
            ws02.Cells(I, "C") = ws01.Cells(I, "C") '性別を転記
            ws02.Cells(I, "D") = ws01.Cells(I, "D") '郵便番号を転記
            ws02.Cells(I, "E") = ws01.Cells(I, "E") '住所を転記
                
            ws02.Cells(I, "E").WrapText = True '住所を転記したE列をセル内で折り返す
        
        Next I
        
                
End Sub

 

 

●実行前~実行後 ※プログラム実行後、転記先シートの住所が折り返し転記されましたので、セル幅内に表示されました。
(画面クリックして拡大)

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA