Excel VBA質問箱 IV

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

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


12422 / 76734 ←次へ | 前へ→

【69833】Re:書式を保持したまま置換したい
回答  sasa  - 11/9/2(金) 13:09 -

引用なし
パスワード
   >例えば「このペンは赤ペンです」という文章がはいったテキストボックスで
>「このペンは」は「MS Pゴシック」「黒色の文字」
>「赤ペン」は「MS P明朝」「赤い文字」「太字」
>「です」は「MS Pゴシック」「青色の文字」
>というように、文字一つひとつに異なるフォントを設定しているとします。

示されたコードですが冗長すぎると思います。
書式を消すことなく置換すればいいでしょう。
あくまで一例です。詳細仕様はつめてください。

Sub CharacterInput()
 Dim BeforeStr$, AfterStr$
'  BeforeStr = InputBox("置換前の文字列を入力してください。")
'  AfterStr = InputBox("置換後の文字列を入力してください。")
  BeforeStr = "赤ペン": AfterStr = "私の物"
  If Len(AfterStr) = 0 Or Len(BeforeStr) = 0 Then Exit Sub
  CharacterSubstitution BeforeStr, AfterStr
End Sub

Sub CharacterSubstitution(ByVal BeforeStr$, ByVal AfterStr$)
 Dim ws, tb, bInStr&, dif&
 dif = Len(AfterStr) - Len(BeforeStr) 'ins
 For Each ws In Worksheets
  For Each tb In ws.TextBoxes
   bInStr = InStr(tb.Characters.Text, BeforeStr)
   If bInStr Then
    If dif > 0 Then tb.Characters(bInStr + 1, 1).Insert String(dif + 1, "*")
    If dif < 0 Then tb.Characters(bInStr + 1, Abs(dif)).Delete
    tb.Characters(bInStr, Len(AfterStr)).Text = AfterStr
   End If
  Next
 Next
End Sub

5 hits

【69827】書式を保持したまま置換したい めー 11/9/1(木) 17:57 質問
【69829】Re:書式を保持したまま置換したい UO3 11/9/2(金) 10:15 発言
【69831】Re:書式を保持したまま置換したい めー 11/9/2(金) 12:15 発言
【69833】Re:書式を保持したまま置換したい sasa 11/9/2(金) 13:09 回答
【69834】Re:書式を保持したまま置換したい めー 11/9/2(金) 13:27 発言
【69843】Re:書式を保持したまま置換したい n 11/9/2(金) 23:32 発言
【69847】Re:書式を保持したまま置換したい n 11/9/3(土) 12:31 発言
【69858】Re:書式を保持したまま置換したい めー 11/9/5(月) 18:19 お礼
【69849】Re:書式を保持したまま置換したい sasa 11/9/3(土) 16:50 回答
【69859】Re:書式を保持したまま置換したい めー 11/9/5(月) 18:24 お礼

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