• ベストアンサー

エクセル:罫線の置換

1本ずつマウスで罫線を引いていったシートがあるのですが、 この罫線の色を全てある別の色に変更したいです。 ちょっと量が多いので1本1本マウスを使って変更したい色で上書きしていくのは避けたいのですが、 (升目状に並んでいるわけでもないのでグリッドも使えない) エクセルの機能として罫線の(色お)置換なんてものはありますでしょうか。 というか無いと思うので、 全セルの罫線の状態を取得して色を変更するマクロを組みたいです。 流れとしては、  ・セルの罫線の色を取得する。  ・その罫線の色が青の場合、赤に変更(ColorIndex変えるだけですよね)。  ・これを決まったセル範囲分繰り返す(For文でもなんでも使えばいいかと)。 というのを考えているのですが(考えた内に入らないような)、 ここで最も重要な「セルの罫線の色を取得する」というのは、どのように記述すればよいでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.1

こんにちは。 これでどうでしょうか? ご参考までに。 Sub test()  Dim X As Range  For Each X In ActiveSheet.UsedRange   With X    If .Borders(xlEdgeRight).ColorIndex = 5 Then .Borders(xlEdgeRight).ColorIndex = 3    If .Borders(xlEdgeLeft).ColorIndex = 5 Then .Borders(xlEdgeLeft).ColorIndex = 3    If .Borders(xlEdgeTop).ColorIndex = 5 Then .Borders(xlEdgeTop).ColorIndex = 3    If .Borders(xlEdgeBottom).ColorIndex = 5 Then .Borders(xlEdgeBottom).ColorIndex = 3   End With  Next End Sub

rem_1982
質問者

お礼

回答ありがとうございます。 すごいです! 今まですんごい時間かかっていた(手動)のが10秒で終わりました! 「UsedRange」という範囲指定方法があるのですね。 色んなとこで今までかなり無駄な処理してました。

その他の回答 (1)

回答No.2

簡潔に言うと以下のようになります。 【設定】 ActiveCell.Borders.ColorIndex = (色値設定) 【取得】 (色値取得) = ActiveCell.Borders.ColorIndex

rem_1982
質問者

お礼

回答ありがとうございます。 言われてみれば、 Range("").Borders(xlEdgeBottom).ColorIndex = 5 などという設定は散々使ってました。 取得は逆にするだけでよかったんですね。 今選択してるセルならActiveCell.とつければよい、と。 ありがとうございます。

関連するQ&A