Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


25314 / 76736 ←次へ | 前へ→

【56763】Re:取り消し線の引かれている文字だけ削除
回答  ハチ  - 08/7/3(木) 17:58 -

引用なし
パスワード
   ▼勉強中 さん:

>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
1 hits

【56751】取り消し線の引かれている文字だけ削除 勉強中 08/7/3(木) 14:54 質問
【56752】Re:取り消し線の引かれている文字だけ削除 ハチ 08/7/3(木) 15:06 回答
【56756】Re:取り消し線の引かれている文字だけ削除 勉強中 08/7/3(木) 16:37 質問
【56763】Re:取り消し線の引かれている文字だけ削除 ハチ 08/7/3(木) 17:58 回答
【56855】Re:取り消し線の引かれている文字だけ削除 勉強中 08/7/8(火) 16:30 お礼
【56865】Re:取り消し線の引かれている文字だけ削除 ハチ 08/7/9(水) 9:19 回答
【56916】Re:取り消し線の引かれている文字だけ削除 勉強中 08/7/10(木) 15:36 お礼

25314 / 76736 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free