• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA 動作させる度に異なる種類の線を書く)

エクセルVBAでマクロを動作させる度に異なる種類の線を書く

このQ&Aのポイント
  • エクセル(2007)VBAを使って、マクロを動作させる度に線の種類を変更させたいです。
  • 以前質問させて頂き、下記のようにマクロを記載したのですが、(2)⇒(3)へ動作しません。。。
  • 実線と細い実線の定数が同じく「 1 」な事が問題なのかと思うのですが、何か上手く実行できる方法はありませんでしょうか。。。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

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

jjnnkk
質問者

お礼

回答ありがとうございます!! ご丁寧にコードを書いて頂きありがとうございます。 凄いです、、、。私のレベルでは到底たどりつけない技が各所に。。。 Caseの中にif、最初の線のスタイル・太さの宣言など、 恰好良いマクロをありがとうございます。 いつかこんな風に書けるようになりたいと思いました。 本当にありがとうございます!!!

その他の回答 (1)

  • goota33
  • ベストアンサー率53% (7/13)
回答No.2

ソースを以下のように変えてみてはどうでしょうか? 一応(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

jjnnkk
質問者

お礼

回答ありがとうございます!! ご丁寧にコードを書いて頂きありがとうございます。 また、線の太さを変更したい場合・・とご親切なアドバイスもありがとうございます! ”Case Is = ○”と記載できる方法があるんですね。 それには、最初の宣言がとても大事になっているのだと思うのですが、、 知識が足りなくきちんと理解できておらず申し訳ありません。 どちらもやりたいことがスムーズにできたので、ベストアンサーをつけるのに 悩んだのですが、先に回答頂いた方にさせて頂きました。すみません。。 本当にありがとうございました!!!

関連するQ&A