dポイントプレゼントキャンペーン実施中!

エクセルの書式(フォント、太字、大きさ)を保持したまま、6列の文字列を1列に結合するVBAを作りたいと思っています。
同じような内容のご回答を参考にさせて頂き作成しましたが、以下のものですと1行目はうまく処理されるのですが、2行目以降の書式がずれてしまいます。
2行目以降の参照がダメなのかと思いますが、どう直せばよいか教えて頂けないでしょうか。

テストのため10行までの処理指定をしています。使用エクセルは2016です。

Sub CopyFont10()
Dim i As Long
For i = 1 To 10
Dim a As Range, b As Range, c As Range, d As Range, e As Range, f As Range
Dim z As Variant, k As Integer
Set a = Cells(i, 1)
Set b = Cells(i, 2)
Set c = Cells(i, 3)
Set d = Cells(i, 4)
Set e = Cells(i, 5)
Set f = Cells(i, 6)
With Cells(i, 7)
.Value = a.Value & b.Value & c.Value & d.Value & e.Value & f.Value
For Each z In Array(a, b, c, d, e, f)
With .Characters(k + 1, Len(z.Value) + k + 1).Font
.Bold = z.Font.Bold
.Name = z.Font.Name
.Size = z.Font.Size
End With
k = k + Len(z.Value)
Next
End With
Next i
End Sub


宜しくお願い致します。

質問者からの補足コメント

  • bonaron様からのアドバイスを追記した部分を補足いたします(挿入場所が適切でないかもしれませんがご了承ください)

    .Value = a.Value & b.Value & c.Value & d.Value & e.Value & f.Value
    k = 0
    For Each z In Array(a, b, c, d, e, f)

      補足日時:2018/11/04 16:26

A 回答 (1件)

変数 k が 初期化されていませんね。



z のループに入る前に 「k = 0」が必要だと思います。
    • good
    • 1
この回答へのお礼

ありがとうございます!ご指摘の場所に記載したら正常に動作致しました。
初期化が必要だと認識していませんでした。もっとしっかり基礎を勉強しなければと思います。

お礼日時:2018/11/04 16:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!