|
▼マナ さん
丁寧に解説していただきありがとうございます。
教えていただいた方式だと、
1〜2文字目が斜体、取り消し線設定などされていると、
書式情報が壊れてしまう感じですね。
連続文字の際の方、ご指摘ありがとうございます。
検証が足りてませんでした。
連続して斜体になっている文字の検証をしてみたのですが、
結果として、連続文字として処理すればよいことが分かりました。
コードを以下に載せておきます。
ご助言ありがとうございました。
--------------------------------------------------------------
'連続文字かを判定
For 終端 = 2 To Len(Cells(行, 列))
If Cells(行, 列).Characters(1, 1).Font.Name = Cells(行, 列).Characters(終端, 1).Font.Name And _
Cells(行, 列).Characters(1, 1).Font.FontStyle = Cells(行, 列).Characters(終端, 1).Font.FontStyle And _
Cells(行, 列).Characters(1, 1).Font.Size = Cells(行, 列).Characters(終端, 1).Font.Size And _
Cells(行, 列).Characters(1, 1).Font.Strikethrough = Cells(行, 列).Characters(終端, 1).Font.Strikethrough And _
Cells(行, 列).Characters(1, 1).Font.OutlineFont = Cells(行, 列).Characters(終端, 1).Font.OutlineFont And _
Cells(行, 列).Characters(1, 1).Font.Shadow = Cells(行, 列).Characters(終端, 1).Font.Shadow And _
Cells(行, 列).Characters(1, 1).Font.Underline = Cells(行, 列).Characters(終端, 1).Font.Underline And _
Cells(行, 列).Characters(1, 1).Font.ColorIndex = Cells(行, 列).Characters(終端, 1).Font.ColorIndex And _
Cells(行, 列).Characters(1, 1).Font.TintAndShade = Cells(行, 列).Characters(終端, 1).Font.TintAndShade And _
Cells(行, 列).Characters(1, 1).Font.ThemeFont = Cells(行, 列).Characters(終端, 1).Font.ThemeFont Then
Else
Exit For
End If
Next
'
If 終端 > Len(Cells(行, 列)) Then
文字長 = 1
Else
文字長 = 終端 - 1
End If
'RangeのFontプロパティを上書き。Characters(1, 連続文字長)の情報を更新するとなぜか更新される。
With Cells(行, 列).Characters(1, 文字長).Font
.Name = Cells(行, 列).Characters(1, 文字長).Font.Name
.FontStyle = Cells(行, 列).Characters(1, 文字長).Font.FontStyle
.Size = Cells(行, 列).Characters(1, 文字長).Font.Size
.Strikethrough = Cells(行, 列).Characters(1, 文字長).Font.Strikethrough
.OutlineFont = Cells(行, 列).Characters(1, 文字長).Font.OutlineFont
.Shadow = Cells(行, 列).Characters(1, 文字長).Font.Shadow
.Underline = Cells(行, 列).Characters(1, 文字長).Font.Underline
.ColorIndex = Cells(行, 列).Characters(1, 文字長).Font.ColorIndex
.TintAndShade = Cells(行, 列).Characters(1, 文字長).Font.TintAndShade
.ThemeFont = Cells(行, 列).Characters(1, 文字長).Font.ThemeFont
End With
'NULLがあるため、入れ子ではなく独立して条件の確認を行う。
If Cells(行, 列).Characters(1, 文字長).Font.Superscript = True Then
Cells(行, 列).Characters(1, 文字長).Font.Superscript = Cells(行, 列).Characters(1, 文字長).Font.Superscript
End If
'NULLがあるため、入れ子ではなく独立して条件の確認を行う。
If Cells(行, 列).Characters(1, 文字長).Font.Subscript = True Then
Cells(行, 列).Characters(1, 文字長).Font.Subscript = Cells(行, 列).Characters(1, 文字長).Font.Subscript
End If
'斜体文字チェック→赤文字設定
For 開始文字位置 = 1 To Len(セル)
If Cells(行, 列).Characters(開始文字位置, 1).Font.Italic = True Then
Cells(行, 列).Characters(開始文字位置, 1).Font.ColorIndex = 3
End If
Next
|
|