[[20170223145253]] 『罫線の色を変たい』(TOM) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『罫線の色を変たい』(TOM)

このようなコードを書いたのですが範囲を変えて延々と続き困りました。
もう少し賢く実行したいと思います。
お知恵をお貸しください。
Sub KEISEN_W()

    Range("B9:C14").Borders(xlEdgeTop).ColorIndex = 2           
    Range("B9:C14").Borders(xlEdgeLeft).ColorIndex = 2         
    Range("B9:C14").Borders(xlEdgeBottom).ColorIndex = 2       
    Range("B9:C13").Borders(xlInsideHorizontal).ColorIndex = 2 
    Range("B9:C14").Borders(xlEdgeRight).ColorIndex = 2         

    Range("B16:C21").Borders(xlEdgeTop).ColorIndex = 2           
    Range("B16:C21").Borders(xlEdgeLeft).ColorIndex = 2         
    Range("B16:C21").Borders(xlEdgeBottom).ColorIndex = 2        
    Range("B16:C20").Borders(xlInsideHorizontal).ColorIndex = 2  
    Range("B16:C21").Borders(xlEdgeRight).ColorIndex = 2        

    Range("B23:C28").Borders(xlEdgeTop).ColorIndex = 2          
    Range("B23:C28").Borders(xlEdgeLeft).ColorIndex = 2
    Range("B23:C28").Borders(xlEdgeBottom).ColorIndex = 2       
    Range("B23:C27").Borders(xlInsideHorizontal).ColorIndex = 2  
    Range("B23:C28").Borders(xlEdgeRight).ColorIndex = 2             
End Sub

< 使用 Excel:Excel2013、使用 OS:Windows7 >


こんにちは

Sub test()

    Dim i As Long
    For i = 0 To 2
        Range("B9:C14").Offset(i * 7).Borders.ColorIndex = 2
    Next
End Sub

とか。

(ウッシ) 2017/02/23(木) 15:08


ウッシさん
ありがとうございます。
良い具合なんですが、黒に戻した時に不具合が出てしまいました。
Range("B9:C13").Borders(xlInsideHorizontal).ColorIndex = 2
この様に一列短いのと外枠が太線だったのが戻らないのです。

(TOM) 2017/02/23(木) 15:23


あ〜、済みません。

Range("B9:C13").Borders(xlInsideHorizontal).ColorIndex = 2

見落としてました。

Range("B9:C14")に希望の罫線を設定する作業をマクロに記録して提示して貰えますか?

(ウッシ) 2017/02/23(木) 15:52


横入り失礼。

一時的に白にするんですかね?
書式をコピペじゃだめですかね?

ついでに、
白と黒を切り替えるようにしてみました。

Sub test()

    Dim lngCNumber As Long

    Application.ScreenUpdating = False
    With Range("B9:C14")
        lngCNumber = IIf(.Borders(xlEdgeTop).Color = vbBlack, vbWhite, vbBlack)
        .BorderAround Color:=lngCNumber
        .Resize(.Rows.Count - 1).Borders(xlInsideHorizontal).Color = lngCNumber
        .Copy
    End With

    Range("B16,B23,B30").PasteSpecial xlPasteFormats
    Application.CutCopyMode = False
    Range("B9").Select
    Application.ScreenUpdating = True
End Sub
(まっつわん) 2017/02/23(木) 16:29

こんなのではどうでしょう? まず範囲全体に罫線を引いてから、不要な線を消しています。最後に外枠を太くします。線の色は引数で指定。

 Sub test()
    Dim i As Long

    For i = 0 To 2
        Call sKeisen(Range("B9:C14").Offset(i * 7), 2)
    Next
 End Sub

 Sub sKeisen(R As Range, iIndex As Long)
    R.Borders.ColorIndex = iIndex
    R.Borders(xlInsideVertical).LineStyle = xlNone
    R.Resize(5, 2).Borders(xlEdgeBottom).LineStyle = xlNone
    R.Borders(xlEdgeTop).Weight = xlMedium
    R.Borders(xlEdgeLeft).Weight = xlMedium
    R.Borders(xlEdgeBottom).Weight = xlMedium
    R.Borders(xlEdgeRight).Weight = xlMedium
 End Sub
(???) 2017/02/23(木) 17:03

ウッシさん・まっつわんさん・???さん
皆さんがご提示くださったコードを利用させていただき希望通りにできました。
本当にありがとうございました。
(TOM) 2017/02/24(金) 10:37

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.