機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > Excel 2010レビュー

マクロで罫線を引けないバグ



先日のセミナーに参加されたKさんに教えてもらいました。話を聞いたとき、正直「んなわきゃ〜ないだろ」って思いました。でも、試してみると確かにおかしいし、事務所で再度確認しても、やはり変。どう見てもバグです。本当にありがとうございました。

VBAのバグです。手動操作では問題ありません。
RangeオブジェクトのBorderAroundメソッドは、指定したセルまたはセル範囲の周囲に罫線を引く命令です。書式は次の通り。

Range.BorderAround LineStyle, Weight, ColorIndex, Color, ThemeColor

引数はすべて省略可能ですが、すべて省略すると何も起こりませんので、Weightくらいは指定した方がよろしいかと。それぞれの引数は、次の意味です。

引数 説明
 LineStyle  罫線の種類を指定します
 Weight  罫線の太さを指定します
 ColorIndex  罫線の色をカラーパレットのインデックス番号指定します
 Color  罫線の色を示すRGB値を指定します
 ThemeColor  テーマの色を配色テーマのインデックス番号で指定します

引数ThemeColorは、Excel 2007で追加された引数です。それ以外の引数は、Excel 2003でも使用できます。さて、Excel 2007で試してみましょう。

Sub Sample1()
    Selection.BorderAround Weight:=xlMedium
End Sub





何も問題ないですね。では、同じコードをExcel 2010で。





「なんじゃ、これ?」って結果です。
Excelのバグって、何となく想像できるんです。「あぁ、なるほど、あそこの機能がこう変わったから、ここに影響が出たんだな」みたいに。でも、これはちょっと信じられないです。しかも、3行または2列までなら問題ないようです。









おかしいのはBorderAroundメソッドです。個別に指定すれば問題ないです。

Sub Macro1()
    With Selection
        .Borders(xlEdgeLeft).Weight = xlMedium
        .Borders(xlEdgeTop).Weight = xlMedium
        .Borders(xlEdgeBottom).Weight = xlMedium
        .Borders(xlEdgeRight).Weight = xlMedium
    End With
End Sub





まぁ、BorderAroundメソッド自体、あまり認知度が高くありませんけど、これは困ったバグですね。




このエントリーをはてなブックマークに追加