こりずに はてなの質問
q.hatena.ne.jp
https://q.hatena.ne.jp/1576623097
にチャレンジしてみた↑質問が載ってます。
※他の回答やコメント含めてみてください。
いつものデバッグ風景・・・ミスしまくりで恥ずかしいけど・・・
www.youtube.com
https://www.youtube.com/watch?v=g3KKlVqscDE
↑失敗したデバッグ解説最初から※失敗を時間のある時に見て笑ってください・・・
やったこと
1.VBAのSplit関数を使用して、セル内改行された文字列を vbLf で区切り取得
strBOX = Split(objRANGE.Cells(1, 1), vbLf)
2.Characters(Start:=開始位置, Length:=文字数).Font.Size = フォントサイズ
セル内のフォントを部分的に変更したかったので、
マクロ記録された .Characters を使用する
3.エラーチェックで分割された文字列の数を数える
必ず固定の改行があると決めつけると痛い目みるので、
UBound(strBOX) などで、改行の行数をチェックしてみた。
Option Explicit Sub main() Dim y As Integer For y = 3 To 30 'a3からA30までループ Call test_font_resize(Cells(y, "A")) Next y End Sub 'セル Rangeを受け取り 改行で区切られた文字列のフォントを変更するテスト Sub test_font_resize(objRANGE As Range) Dim strBOX As Variant '改行vbLfで分割後に入れる配列 Dim nSTART As Integer 'フォント変更位置 Dim nLEN As Integer '文字数 Dim i As Integer 'ループのカウンター '分割後のフォントサイズ Dim nSIZE(3) As Integer nSIZE(0) = 20 '文字のサイズ、一行目 nSIZE(1) = 14 '2行目 nSIZE(2) = 16 '3行目 'セル内改行 vbLfで区切られているので、分割しstrBOXへ格納 strBOX = Split(objRANGE.Cells(1, 1), vbLf) 'ubound(strBOX) で↑の結果、カズがわかります 'フォントのサイズを変更する nSTART = 1 For i = 0 To 2 '三行目までサイズ変更 If i > UBound(strBOX) Then Exit For '配列、改行の数をチェック nLEN = Len(strBOX(i)) objRANGE.Cells(1, 1).Characters(Start:=nSTART, Length:=nLEN).Font.Size = nSIZE(i) nSTART = nSTART + nLEN + 1 '↑上の文字数と改行の文字一つを+ Next i End Sub
まだまだ、運用時にエラーがあるかもしれませんが、
解決の糸口、サンプルとなれば幸いです。