エクセル(2007)VBAを使って、マクロを動作させる度に線の種類を変更させたいです。
(1)実線⇒(2)細い実線⇒(3)細線⇒(4)点線⇒(5)線なし
以前質問させて頂き、下記のようにマクロを記載したのですが、(2)⇒(3)へ
動作しません。。。実線と細い実線の定数が同じく「 1 」な事が問題なのかと
思うのですが、何か上手く実行できる方法はありませんでしょうか。。。
何卒宜しくお願い致します。
--------------------------------------------------
Sub 罫線チェンジ()
Select Case ActiveCell.Borders.LineStyle
Case 1
Selection.Borders.LineStyle = xlContinuous
Selection.Borders.Weight = xlHairline
Case 1
Selection.Borders.LineStyle = xlThin
Case 2
Selection.Borders.LineStyle = xlDash
Case -4115
Selection.Borders.LineStyle = xlDot
Case -4118
Selection.Borders.LineStyle = xlNone
Case Else
Selection.Borders.LineStyle = xlContinuous
End Select
End Sub
--------------------------------------------------
LineStyle= xlContinuous のときだけ、Weight の値も見て処理を分けては如何でしょう。
Sub 罫線チェンジ()
nL = Selection.Borders.LineStyle
nW = Selection.Borders.Weight
Select Case nL
Case xlNone '(5)→(1)
nLL = xlContinuous
nWW = xlThin
Case xlContinuous
'(1)か(2)
If nW = xlThin Then
'(1)→(2)
nLL = xlContinuous
nWW = xlHairline
Else
'(2)→(3)
nLL = xlDash
nWW = xlThin
End If
Case xlDash
'(3)→(4)
nLL = xlDot
nWW = xlThin
Case Else
'(4)→(5)
nLL = xlNone
End Select
'罫線を設定
With Selection.Borders
.LineStyle = nLL
If nLL <> xlNone Then .Weight = nWW
End With
End Sub
ソースを以下のように変えてみてはどうでしょうか?
一応(2)⇒(3)が正しく動作するのと、マクロが
(1)実線⇒(2)細い実線⇒(3)細線⇒(4)点線⇒(5)線なし
というように変わるかどうか確認しました。
もし一番最初に実行する時のマクロで、
線の太さが気に入らなければxlMediumをxlThinに変えてください。
Private lngBuff As Long
Sub 罫線チェンジ()
If IsNull(lngBuff) = True Then lngBuff = 0
lngBuff = lngBuff + 1
Debug.Print lngBuff
Select Case lngBuff
Case Is = 1
Selection.Borders.LineStyle = xlContinuous
Selection.Borders.Weight = xlMedium
Case Is = 2
Selection.Borders.LineStyle = xlContinuous
Selection.Borders.Weight = xlHairline
Case Is = 3
Selection.Borders.LineStyle = xlContinuous
Selection.Borders.Weight = xlThin
Case Is = 4
Selection.Borders.LineStyle = xlDot
Case Else
Selection.Borders.LineStyle = xlNone
lngBuff = 0
End Select
End Sub
お礼
回答ありがとうございます!! ご丁寧にコードを書いて頂きありがとうございます。 凄いです、、、。私のレベルでは到底たどりつけない技が各所に。。。 Caseの中にif、最初の線のスタイル・太さの宣言など、 恰好良いマクロをありがとうございます。 いつかこんな風に書けるようになりたいと思いました。 本当にありがとうございます!!!