プロが教えるわが家の防犯対策術!

こんにちは、宜しくお願いします。
(Visual Basicのカテゴリに失礼します。)

添付画像のような表があったとして、A1~C1までと、A8~C8までは文字が入るとします。
その文字がABAと表示されたら、すぐ3つ下のセルまでに斜線を引きたいと思っています。

過去の質問を参考に頑張って考えてみた結果、


Sub AAAに罫線()
Dim c As Range
'一旦斜罫線無しの状態にする
Range("A1:C1").Offset(1, 0).Borders(xlDiagonalDown).LineStyle = xlNone
Range("A1:C1").Offset(2, 0).Borders(xlDiagonalDown).LineStyle = xlNone
Range("A1:C1").Offset(3, 0).Borders(xlDiagonalDown).LineStyle = xlNone
Range("A8:C8").Offset(1, 0).Borders(xlDiagonalDown).LineStyle = xlNone
Range("A8:C8").Offset(2, 0).Borders(xlDiagonalDown).LineStyle = xlNone
Range("A8:C8").Offset(3, 0).Borders(xlDiagonalDown).LineStyle = xlNone
'AAAなら1行下~3行下までのセルに斜罫線を表示
For Each c In Range("A1:C1,A8:C8")
If Format(c.Value, "aaa") = "ABA" Then
c.Offset(1, 0).Borders(xlDiagonalDown).LineStyle = xlContinuous
c.Offset(2, 0).Borders(xlDiagonalDown).LineStyle = xlContinuous
c.Offset(3, 0).Borders(xlDiagonalDown).LineStyle = xlContinuous
End If
Next
End Sub

自信はありませんが、こんな感じで動きはしたのですが、もう少しコンパクトに
なるのではないかと思い質問してみました。
なにぶん初心者ですので、おかしな所があると思います。
添削していただけないでしょうか。
宜しくお願いいたします。

「Excel VBA 条件に一致した言葉の」の質問画像

A 回答 (1件)

こんばんは!



コード内の
>If Format(c.Value, "aaa") = "ABA" Then
が何を意味しているのかイマイチ判らないのですが、
値が「ABA」という解釈での一例です。

Sub Sample1()
Dim c As Range
Range("A2:C4,A9:C11").Borders(xlDiagonalDown).LineStyle = xlNone
For Each c In Range("A1:C1,A8:C8")
If c = "ABA" Then
c.Offset(1).Resize(3).Borders(xlDiagonalDown).LineStyle = xlContinuous
End If
Next c
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 1
この回答へのお礼

tom04さま

お返事が遅くなり大変申し訳ありませんでした。
とても勉強になりました。
ありがとうございます。

お礼日時:2016/06/13 20:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A