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

エクセル2002のVBAで太文字を検索したいのですが、

<状況>
B列にチェックしたい文字が入力されています
<やりたいこと>
B列に入力されている文字の中から、太文字のみを抜き出して、
太字の見つかった行のG列に太文字のみを抜き出して複写したい

<自作マクロの現状>
セル全体の太文字検索は下記のマクロ「太字検索チェック1」で完成しましたが、
セルに記載してある文字の中で「一部は普通文字、のこり一部は太文字」と混在
しているセルの中身から太文字部分のみを別のセルに抜き出したいのですが、
そのマクロを「太字検索チェック2」のように書きました。

しかし「太字検索チェック2」の「 If dat.Font.Bold = True Then」の部分で
「型が違う・・・」のエラーで先に進みません。

どなたか、セルの中身の太文字のみを抜き出すマクロを教えてください
よろしくお願いします


 
Sub 太字検索チェック1()

i = 3

Worksheets("テスト").Activate

For Each myRng In Range("B:B")

セル = "b" & i

If Range(セル).Font.Bold = True Then
Cells(i, 7) = Cells(i, 2) ’太字のCells(i, 2)を Cells(i, 7) にコピー
End If

i = i + 1

If i = 1703 Then ’1703番地で終了
Exit For
End If

Next

End Sub

Sub 太字検索チェック2()

i = 3
Worksheets("テスト").Activate

For Each myRng In Range("B:B")

内容 = Cells(i, 2)
文字数 = Len(内容)

For p = 1 To 文字数
dat = Mid(内容, p, 1)
      X=8+P

If dat.Font.Bold = True Then  ’1文字づつ太字を検索
Cells(i, X) = dat        ’太字なら→Cells(i, X) にコピー
End If

Next

i = i + 1

If i = 1703 Then
Exit For
End If

Next

End Sub

A 回答 (2件)

For P = 1 To 文字数


X = 8 + P
If Cells(i, 2).Characters(P, 1).Font.Bold = True Then
Cells(i, X) = Cells(i, 2).Characters(P, 1).Text
End If
Next

に変更してください。
    • good
    • 0
この回答へのお礼

ご指導ありがとうございました

お礼日時:2010/05/09 14:06

変数の宣言部分が無いようですね。


Option Explicitを宣言する習慣付けしたほうが良いですよ。

問題が生じるのは、
> dat = Mid(内容, p, 1)
と代入した変数 dat に Font がぶら下がって無いから。

過去問の「Excel文字列中の太字(Bold)部分のみ文字色を一括して変換する方法」が
参考になると思います。

参考URL:http://oshiete.goo.ne.jp/qa/2965758.html
    • good
    • 0

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