[[20160710191656]] 『VBAで斜線を引きたい』(cocoro) ページの最後に飛ぶ

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

 

『VBAで斜線を引きたい』(cocoro)

条件sheet1 C16に1が入った時、Sheet4 X6:X26に斜線を引くにはどうすれば宜しいでしょうか?教授ください

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 X6:X26のそれぞれに罫線の斜線を引きたい、ということだろうか?
 それなら条件付き書式でいけると思います。

 それともX6:X26に横断的な斜線を引きたい、ということだろうか?
(カリーニン) 2016/07/10(日) 19:31

 X6:X26は通常セルで、そのセル領域に 斜めの線を挿入するのでしょうか?
 それとも X6:X26 は結合セルで、その結合セルの中に斜めの罫線を引くのでしょうか?

 いずれであっても、この操作は、マクロ記録することで基本的なコードが入手できますね。

 次に、C16 が 1 なら 線を引く、これは、Sheet1のシートモジュールでのChangeイベントが使えますが
 C16 が 1ではなかったら 線を消す? それとも、一度引いた線は 引きっぱなし?

 To カリーニンさん

 処理可能であれば条件付書式がベストだと思いますが、斜め線はサポートされていないと思います。

(β) 2016/07/10(日) 19:36


条件付き書式でできる旨、ありがとうございます、早速行って見たいと思います。ありがとうございました。
(cocoro) 2016/07/10(日) 19:43

 こんばんわ。

 βさんのコメントにあるように、条件付き書式は斜め罫線はサポートされてません。

 罫線で斜めに引くなら、マクロ記録で可能です。

(sy) 2016/07/10(日) 19:46


 > 処理可能であれば条件付書式がベストだと思いますが、斜め線はサポートされていないと思います。

 そうでした。cocoroさん、すみません。条件付き書式ではできませんでした。
(カリーニン) 2016/07/10(日) 19:46

 マクロでX6〜X26を選択して罫線を引くと以下のようなコードができると思います。

 Sub Macro1()
 '
 ' Macro1 Macro
 '

 '
    Range("X6:X26").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    With Selection.Borders(xlDiagonalUp)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
 End Sub

 ちょっと分かりにくいですけど、上記のうち必要なのは以下になります。
 .Borders(xlDiagonalUp) /の線の時はこれ
 .Borders(xlDiagonalDown) \の線の時はこれ

 必要な方の右側に、
 .LineStyle = xlContinuous
 を付ければ、罫線が引かれます。

 C16が1かどうかは、IF文で判定できます。

 このヒントで出来ますか?

(sy) 2016/07/10(日) 20:03


 ちょっと変化球(?)ですけど。

 Sheet4の斜線を引きたいところに、あらかじめ斜線を引いておきます。
 で、その線の名前をわかりやすいものに変えておきます。たとえば "MyLine"

 コードは

    With Sheets("Sheet4").Shapes("MyLine")
        If Sheets("Sheet1").Range("C6").Value = 1 Then
            .Visible = True
        Else
            .Visible = False
        End If
    End With

 とか。

(β) 2016/07/11(月) 02:12


 おはようございます。

 仕事行くので罫線でのコードも書いておきます。
 βさんのShapesのコードと基本同じです。
 扱ってるのが図形か罫線かだけです。

 \線の時は、Borders(xlDiagonalDown)に書き換えます。

 Sub test()

    With Sheets("Sheet4").Range("X6:X26").Borders(xlDiagonalUp)
        If Sheets("Sheet1").Range("C16").Value = 1 Then
            .LineStyle = xlContinuous
        Else
            .LineStyle = xlNone
        End If
    End With

 End Sub

(sy) 2016/07/11(月) 05:16


コメント返信:

[ 一覧(最新更新順) ]


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