Excel VBA質問箱 IV

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

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


1204 / 13645 ツリー ←次へ | 前へ→

【75695】「」で挟まれた部分のみの書式を変えたいです。 みつを 14/6/15(日) 17:09 質問[未読]
【75696】Re:「」で挟まれた部分のみの書式を変えた... γ 14/6/15(日) 20:45 発言[未読]
【75698】Re:「」で挟まれた部分のみの書式を変えた... γ 14/6/15(日) 21:42 回答[未読]

【75695】「」で挟まれた部分のみの書式を変えたい...
質問  みつを  - 14/6/15(日) 17:09 -

引用なし
パスワード
   Sheet1 内の
「」で挟まれているスペースや文字の書式を、下線部や太文字にしたりしたいのですが、
どのような記載をすればできるのでしょうか?

宜しくお願いします。

【75696】Re:「」で挟まれた部分のみの書式を変え...
発言  γ  - 14/6/15(日) 20:45 -

引用なし
パスワード
   ▼みつを さん:
>「」で挟まれているスペースや文字の書式を、下線部や太文字にしたりしたいのですが、
>どのような記載をすればできるのでしょうか?
手始めに、一つのセルでその動作をマクロ記録してみたらどうなりますか?

【75698】Re:「」で挟まれた部分のみの書式を変え...
回答  γ  - 14/6/15(日) 21:42 -

引用なし
パスワード
   返事がありませんので、勝手にコメントします。

Findメソッドで"「"を検索し、
正規表現を用いて、"「"と"」"で挟まれた文字列の位置を取得しています。
普通にInstrだけでもできると思いますが、勢いで正規表現を使いました。

「」そのものを入れるかどうかや、
Instrを使った解法など、修正はそちらでどうぞ。

Dim re As Object
Sub test()
  Dim c As Range
  Dim firstAddress As String
  
  Set re = CreateObject("VBScript.RegExp")
  re.Pattern = "「(.*?)」"
  re.Global = True

  With Worksheets(1).UsedRange
    Set c = .Find(What:="「", After:=.Range("A1"), LookIn:=xlFormulas, _
           LookAt:=xlPart, SearchOrder:=xlByRows, _
           SearchDirection:=xlNext, MatchCase:=False, _
           MatchByte:=False, SearchFormat:=False)
    If Not c Is Nothing Then
      firstAddress = c.Address
      Do
        Call do_replace(c)
        Set c = .FindNext(c)
      Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
  End With
End Sub

Function do_replace(c As Range)
  Dim s    As String
  Dim matches As Object
  Dim m    As Object
  Dim st   As Long
  Dim myLen  As Long

  s = c.Text
  Set matches = re.Execute(s)
  For Each m In matches
    st = m.FirstIndex + 2
    myLen = Len(m.SubMatches(0))
    With c.Characters(Start:=st, Length:=myLen).Font
      .FontStyle = "太字"
      .Underline = xlUnderlineStyleSingle
    End With
  Next
End Function

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