午後わてんのブログ

ベランダ菜園とWindows用アプリ作成(WPFとC#)

選択セル範囲を図形のテキストボックスにするマクロその5、テキストボックスの余白と行間隔

 
 
列幅の自動調節
イメージ 2
普通は調節したい列の右側をダブルクリックで調節するか
Columns("b").AutoFit
これだと一番長い文字列に合わせられるけど
短い文字列の幅に合わせたいときもある!
 
 
B列の幅の調節でB3の「いいい」に合わせたいとき
イメージ 1
Range("b3").Columns.AutoFit
これを実行するとピッタリになる
 
 
B3とB4の文字列に合わせたいとき
イメージ 4
Range("b3:b4").Columns.AutoFit
このときはB3より長い文字列のB4の方に合わせられる
こんな感じで指定したセル範囲の文字列に合わせることもできる
これを使って
 
 
セル幅があっていない範囲をテキストボックス化すると
イメージ 3
見やすいものができる
 
イメージ 5
いいねえ
 
 
 
 
イメージ 21
セル範囲の大きさ、余白、文字の配置
これらを調整してセル範囲そっくりなテキストボックスを作ってみたい
文字の配置は前回までで終わっているので
 
 
テキストボックスの余白設定
イメージ 6
図形の書式設定からできる
 
マクロだと
テキストボックスの
TextFrame2の4つのMarginプロパティに値を指定する
この値はセンチメートルじゃなくてポイントかなあ
0.25cmは7.2,0.13cmは3.6になる
選択したテキストボックスの余白を初期値にするマクロ
Sub yohaku()
    Dim s As Shape
    Set s = Selection.ShapeRange.Item(1)
    With s.TextFrame2
        .MarginBottom = 3.6
        .MarginLeft = 7.2
        .MarginRight = 7.2
        .MarginTop = 3.6
    End With
End Sub
 
イメージ 7
文字を選択状態にするとどこから余白扱いになっているのかわかりやすい
 
イメージ 8
余白0にしたところ
真ん中は文字の左と0を選択した状態、これだと左右の余白0ってのがわかる
右側の全選択したものは右側が枠の外側になっている、これは改行文字の分が外側に出ていて、改行文字は文字範囲には含まれないってことかなあ
上下の余白も0なんだけど余白があるようにみえるのは、行間のぶんが余白に見えているのかも
 
 
 
テキストボックスの行間の設定
イメージ 9
段落からできる
 
試しに全行選択して行間を1行から2行に変更してみる
イメージ 10
たしかに2倍くらいに広がった、文字の下側より上側のほうが広がっているなあ
一番下を見ると余白を無視して枠の外側に出ているように見える
 
 
行間、固定値
イメージ 11
行間を固定値にしたら間隔の数値が19.2ptと表示されて
この数値を変更できるようになった
19.2から40に変更
イメージ 13
さっきの行指定とは少し違う感じ
 
 
行間を倍数指定
イメージ 12
倍数指定したら初期値が3だったのでそのままOK押したら
大きく広がった、3行分て意味かなあ
それにしても上下均等じゃなくて文字の上側が大きく広がる
 
 
段落前後の間隔
イメージ 14
段落前を24pt
 
イメージ 15
段落後を24pt
これらの行間隔を
マクロの場合はどこを指定すればいいのか
テキストボックス全体に指定するなら
TextFrame2.TextRange.ParagraphFormatの中にある
行(段落)単位で指定するとき、1行(段落)目なら
TextFrame2.TextRange.Paragraphs.Item(1).ParagraphFormat
イメージ 16
SpaceAfterが段落後
SpaceBeforeが段落前
SpaceWithinが行間と間隔
 
LineRuleAfter、LineRuleBefore、LineRuleWithinの3つは指定数値をポイント単位にするか行単位にするかの切り替え用でmsoTrueかmsoFalseどちらかの値を指定
例えばLineRuleAfter = msoTrueのときSpaceAfter = 1は
段落後に1行分のスペースって意味になる
LineRuleAfter = msoFalseのときSpaceAfter = 1は
段落後に1ポイント分のスペースって意味になる
 
 
Sub 選択したテキストボックスの行間を07行にするマクロ()
    Dim s As Shape
    Set s = Selection.ShapeRange.Item(1)
    With s.TextFrame2.TextRange.ParagraphFormat
        .LineRuleWithin = msoTrue
        .SpaceWithin = 0.7
    End With
End Sub
イメージ 17
 
Sub 選択したテキストボックスの行間を15pointにするマクロ()
    Dim s As Shape
    Set s = Selection.ShapeRange.Item(1)
    With s.TextFrame2.TextRange.ParagraphFormat
        .LineRuleWithin = msoFalse
        .SpaceWithin = 15
    End With
End Sub
イメージ 18
 
 
 
Sub 選択したテキストボックスの段落前空間を1行にするマクロ()
    Dim s As Shape
    Set s = Selection.ShapeRange.Item(1)
    With s.TextFrame2.TextRange.ParagraphFormat
        .LineRuleBefore = msoTrue
        .SpaceBefore = 1
    End With
End Sub
イメージ 19
これは1行を指定しても表示はポイントに変換される
 
 
 
Sub 選択したテキストボックスの2行目の行間隔を50pointにするマクロ()
    Dim s As Shape
    Set s = Selection.ShapeRange.Item(1)
    With s.TextFrame2.TextRange.Paragraphs.Item(2).ParagraphFormat
        .LineRuleWithin = msoFalse
        .SpaceWithin = 50
    End With
End Sub
イメージ 20
 
以上で設定方法はわかったので設定値を調整してできたのが
イメージ 22
ほぼ同じだけど少しズレていて
テキストボックスの背景を透明にしてセルに重ねてみると
 
イメージ 23
ずれているのがわかる
 
テキストボックスの文字だけ赤にして重ねた
イメージ 24
約1ピクセル上にずれているかなあ
でもこれ以上調整できなかった
 
    'マージン(余白)設定
    With myTB.TextFrame2
        .MarginBottom = 0
        .MarginLeft = WorksheetFunction.RoundUp(myCells(1).Height / 10, 0)
        .MarginRight = .MarginLeft ' 2
        .MarginTop = 0
    End With
    
    '行間調整、セルの高さを再現
    With myTB.TextFrame2.TextRange
        For i = 1 To .Paragraphs.Count
            With .Paragraphs(i).ParagraphFormat
                .LineRuleWithin = msoFalse
                .SpaceWithin = myCells.Rows(i).Height * 0.98
            End With
        Next
    End With
セルの高さを基準に余白と行間隔を設定している
何か根拠があるわけじゃなくて調整しただけだからフォントやフォントサイズが違うともっとズレるかも
 
 
イメージ 25
今回ので3,4,5,6ができるようになったけど…見やすいのは列幅調整だけの2番かなあ、次に列幅調整と行間隔調整した6番。調整しまくっている3、4番はみやすさで言ったらイマイチだねえ
余白が大事なのがわかったw
 
 
4番を作るマクロのエクセルファイル
 
 
 
セル範囲のテキストボックス化は気が済んだので、次はどんなふうにアドインに入れるかだなあ
 
 
関連記事、前回
選択セル範囲を図形のテキストボックスにするマクロその4、フォントの取り消し線、下付き上付き文字、下線 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/14705381.html
 
これまで5回に渡って作ってきたマクロをアドインに登録した
午後ツールその55、選択セル範囲を図形のテキストボックスにする、印刷用の点線を消すマクロを追加 ( Windows ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/14715274.html