プロが教えるわが家の防犯対策術!

こんにちは。

エクセルで、どうしてもやり方がわからないものがあるので教えてください。

セル内で指定した文字列のみの書式を変更する方法です。

例えば
A1に 『ああいいううええおお』 と入っていたら、
『う』だけを太字にする。

調べてみると、書式変更したい文字の開始位置を指定するという方法がありました。
ですが毎回開始位置が違うので、直接文字列を指定する様な方法があれば教えてください。

宜しくお願いします。

A 回答 (3件)

こんにちは。



なるべく標準モジュールに登録してお使いください。
Main というプロシージャ名は、分かりやすい名前に変更しても良いです。

Sub Main()
 FontStyleChange Range("A1"), "う", True
 'FontStyleChange セルの範囲, 変更する文字(複数可能), 太字=True
End Sub
Private Sub FontStyleChange(rng As Range, _
              mChr As String, _
          Optional bStyle As Boolean = True)
  Dim i As Integer
  Dim j As Integer
  Dim c As Range
  Dim myStyle As String
  j = Len(mChr)
  If bStyle Then myStyle = "太字" Else myStyle = "標準"
  For Each c In rng
  If VarType(c.Value) = vbString Then
    For i = 1 To Len(c.Value)
      If Mid(c.Value, i, j) Like mChr Then
        With c.Characters(i, j).Font
          .FontStyle = myStyle
          ''.ColorIndex = 3 
        End With
      End If
    Next i
  End If
  Next c
End Sub
    • good
    • 0

InStrを使えばいいと思います。


---
Dim lngS As Long
Dim lngL As Long
With Worksheets("Sheet1").Range("A1")
lngS = InStr(.Value, "う") 'セル"A1"より"う"の位置を返す
lngL = Len("う") '"う"の文字数
With .Characters(Start:=lngS, Length:=lngL).Font
.name = "MS Pゴシック"
.FontStyle = "太字"
.Size = 14
End With
End With
    • good
    • 0

文字列をループし、開始位置を取得します。


位置取得のサンプルです。
最初に見つかった位置しか取得しません。

Function iti(ByVal mystr As String, sitei As String) As Integer
Dim i As Integer
For i = 1 To Len(mystr)
If Mid(mystr, i, 1) = sitei Then
iti = i
Exit For
End If
Next i
End Function
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!