|
▼勉強中 さん:
>256文字以内のセル
> →OK
>257文字以上のセル
> →取り消し線の引かれた文字を削除しないでマクロが正常に終了してしまいました。(マクロの最後にMsgboxで「終了」と出るようにしています。)
>
>257文字以上は無理なんでしょうか?
これは、1セルの文字数の制限である256文字を、
超えているから発生しているようです。
こういった場合は、セルの中身を編集するのではなくて、
値を置き換えるコードにすると上手くいきます。
考え方を変えて・・・
1.取り消し線が引かれていない文字を変数に集める。
2.最後に変数の値を、セルの値に置き換える。
こんな感じでどうでしょう?
先にセル自体の.Font.Strikethroughを判定し、
該当セルに処理が必要か、分岐させると、全体の処理をもっと早くできると思います。
必要なら考えてみてください。
Sub Test2()
Dim c As Range
Dim i As Long
Dim buf As String
For Each c In Selection.Cells
buf = ""
For i = 1 To Len(c.Value)
If Not c.Characters(Start:=i, Length:=1). _
Font.Strikethrough = True Then
buf = buf & c.Characters(Start:=i, Length:=1).Text
End If
Next
c.Value = buf
Next
End Sub
|
|