- ベストアンサー
VBAでのFontStyle取得方法とエラー処理について
- エクセルVBAで特定の行が太字になっているかを確認するために、FontStyleを取得する方法について教えてください。
- FontStyleを取得する際に、行の中の一部が太字になっていない場合にエラーが発生し、処理が中断されます。エラーの処理方法についても知りたいです。
- 行や列のFontStyleを確認する際、ループ処理以外にも他の方法はあるのでしょうか?無駄なループ処理を避ける方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
セル1つ1つをチェックする必要があれば、ループでまわす必要があると思います。 指定の範囲が全て、太字かどうか。という状況だけ チェックしたいのであれば、IsNull()で確認すればどうでしょう。 ただし、罫線のチェック等になると、逆に、全てが指定の罫線で なくてもTrueになることがありますので、このような場合は、 やはりループでまわすしかないと思われます。
その他の回答 (1)
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。 > ループを使わずに処理をする方法 規定のメソッドやプロパティーで対応できないことであれば、ループ 処理は必須です。 したがって、「ループを使わずに処理をする」ではなく、いかに効率的に ループに処理をするかという点で回答してみます。 Excel2002 以降に限定されますが、FindFormat を使ってみては? ' // フォントが太字に設定されているセルを検索して選択する Sub Sample() Dim r As Range Dim rFound As Range Dim sFirstAddr As String With Application.FindFormat .Clear .Font.Bold = True End With Set r = Cells.Find(What:="", _ LookIn:=xlValues, _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ SearchFormat:=True) If r Is Nothing Then MsgBox "該当なし" Else Set rFound = r sFirstAddr = r.Address Do Set rFound = Union(rFound, r) ' FindNext は使わない XL2002 対策 ' http://support.microsoft.com/kb/282151/ja Set r = Cells.Find(What:="", _ After:=r, _ SearchFormat:=True) Loop Until r Is Nothing Or r.Address = sFirstAddr If Not rFound Is Nothing Then rFound.Select End If End If End Sub