[[20190322104415]] 『vbaで文字を追記すると色が初期化されてしまう』(みる) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『vbaで文字を追記すると色が初期化されてしまう』(みる)

vbaでセルに対して文字列を追記したいのですが、
追記すると、すでに入力してある内容の色が黒に戻ってしまいます。


あいうえお
かきくけこ
と入力されたセルがあって(あいうえおは黒、かきくけこは赤になっています)

このセルに対して
xxx.Cells( x, x ).Value = xxx.Cells( x, x ).Value & vbCrlf & "さしすせそ"

とすると、文字列は追記されるのですが、色の設定が初期化されてしまいます。

どのようにすれば
元の色情報を残したまま文字列を追記できますでしょうか。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 記録すると、、↓こんなコードが出来ますので、、
文字を入力した後にもう一度お好みの様にフォントを設定すればいいと思います。。。けど?

 すみません。。ヒントだけで、、、
 Sub Macro1()
'
' Macro1 Macro
'

'

    ActiveCell.FormulaR1C1 = "あいうえお" & Chr(10) & "かきくけど"
    With ActiveCell.Characters(Start:=1, Length:=6).Font
        .Name = "MS Pゴシック"
        .FontStyle = "標準"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
    With ActiveCell.Characters(Start:=7, Length:=5).Font
        .Name = "MS Pゴシック"
        .FontStyle = "標準"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .Color = -16776961
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
    Range("C3").Select
End Sub
(SoulMan) 2019/03/22(金) 11:02

 こちらの都合で分割ですまない。
 A1セルが対象だとして。
 Sub tst()
    Dim WK_STR()    As String
    Dim WK_LNG      As Integer
    Dim LOOP_CNT    As Integer
(ねむねむ) 2019/03/22(金) 11:12

    WK_LNG = Len(Range("A1"))
    ReDim WK_STR(WK_LNG)
    For LOOP_CNT = 1 To WK_LNG
        WK_STR(LOOP_CNT) = Range("A1").Characters(Start:=LOOP_CNT, Length:=1).Font.Color
    Next
    Range("A1").Value = Range("A1").Value & vbCrLf & "さしすせそ"
    For LOOP_CNT = 1 To WK_LNG
        Range("A1").Characters(Start:=LOOP_CNT, Length:=1).Font.Color = WK_STR(LOOP_CNT)
    Next
 End Sub

(ねむねむ) 2019/03/22(金) 11:13


 ではどうだろうか?
(ねむねむ) 2019/03/22(金) 11:13

 追加した文字列には手前文字の書式が引き継がれるので、

 Sub test()
     With Range("a1").Characters(Len(Range("a1")) + 1)
         .Text = vbLf & "さしすせそ"
         .Font.ColorIndex = xlAutomatic
     End With
 End Sub
(seiya) 2019/03/22(金) 11:21

 seiyaさんのVBAでセルの1行目の頭から色がついている(自動になっていない)場合にどうなるか試してみてもらえないだろうか?
 私のところでは(Windows10+Excel2010)その場合に色が黒に戻ってしまっている。
(ねむねむ) 2019/03/22(金) 11:36

 こちら xl2013 Win10

 A1に あいうえお Font Color 赤
 で実行すると

 あいうえお
 さしすせそ

 となり、一旦全て赤になり、追加分を黒に戻す。

 となりますが?
(seiya) 2019/03/22(金) 11:45

 すまない。
 言葉が足らなかった。
 例のような文字列の一部色付けで先頭から途中まで色を付けた状態で試してみてくれ。
(ねむねむ) 2019/03/22(金) 11:48

 >試してみてくれ

 ふざけんなよ。
(seiya) 2019/03/22(金) 11:50

 そうか。
 じゃあとりあえずseiyaさんのVBAは一部色付けで先頭から色を変えている場合はうまくいかないようだ。
(ねむねむ) 2019/03/22(金) 11:53

 >xxx.Cells( x, x ).Value = xxx.Cells( x, x ).Value & vbCrlf & "さしすせそ" 

    With Cells(x, x)
        .Characters(1, 0).Insert " "
        With .Characters(Len(.Value) + 1)
            .Text = vbLf & "さしすせそ"
            .Font.ColorIndex = xlAutomatic
        End With
        .Characters(1, 1).Delete
    End With
(seiya) 2019/03/22(金) 12:05
 コード編集: 13:28

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.