• ベストアンサー

特定の値のセルに罫線を引くマクロ

Excelのマクロの質問です。 セルの値が特定の値の時に太枠の罫線でそのセルのみを囲むマクロを作りたいのですが、どのように記述したらよいのでしょうか? 10×30ぐらいの範囲に複数個該当セルがあります。 値は「休」、「土」などの漢字です。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

10×30ぐらいの範囲を仮にA1:AD10とした場合、セルの値が「休」、「土」の場合に太枠で囲みます。 Sub test01() For Each c In Range("A1:AD10") If c.Value = "休" Or c.Value = "土" Then With c.Borders .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With End If Next End Sub

mammy18
質問者

お礼

どうもありがとうございました。 望みどうりの動作でした。 こんなに短くても良いのですね。

その他の回答 (5)

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.6

こんにちは 自分の為に書いたラフなものを自己満足で載せるものです。 不完全で穴だらけですが、ヒントにでもなれば、、、 (XL2000で動作確認済) ' 標準モジュール、、、ActiveSheet専用 Sub TEST() Const S_Hanni As String = "A1:J30" ' 対象範囲指定 Const S_Retu As String = "HA" ' 作業列の先頭列を指定 Dim ret, rB As Range, i As Integer ret = InputBox("罫線で囲む検索文字列を"",""区切りで指定して" _ & vbLf & " OK で実行します" _ & vbLf & vbLf & "例) 休" & vbLf & "   休,土" _ & vbLf & "   休,土,日", "検索 罫線", "休,土") If ret = "" Then MsgBox "検索文字列が指定されませんでした" Exit Sub End If ret = Split(ret, ",") With Range(S_Hanni) Set rB = Columns(S_Retu) _ .Resize(.Rows.Count, .Columns.Count) .Borders.LineStyle = xlLineStyleNone .Copy rB With rB For i = 0 To UBound(ret) If ret(i) <> "" Then _ .Replace What:=ret(i), Replacement:="#VALUE!" _ , LookAt:=xlWhole, SearchOrder:=xlByRows _ , MatchCase:=False Next i On Error Resume Next .SpecialCells(xlCellTypeConstants, 16) _ .BorderAround LineStyle:=xlContinuous _ , Weight:=xlThick, ColorIndex:=xlAutomatic On Error GoTo 0 .Copy End With .PasteSpecial xlPasteFormats rB.Delete xlToLeft End With End Sub

mammy18
質問者

お礼

どうもありがとうございました。 勉強させていただきます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

こんなのはマクロの記録でほぼできるではないですか。 丸投げする前にマクロの記録をとって勉強すること。 Sub Macro3() For Each cl In Range("A1:c10") If cl > 10 Then cl.Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThick .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThick .ColorIndex = xlAutomatic End With Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone End If Next End Sub ーー (ForEach) For Each cl In Range("A1:c10") 対の最後のNext (条件判定部) If cl > 10 Then 対の最後のEndIF (対象セル範囲) Range("A1:c10") 以外はマクロの記録です。 条件部分はIFステートメントで思い通りつくること。 上記は20以上の例。

mammy18
質問者

お礼

どうもありがとうございました 1行ずつ勉強させていただきます。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

セルに罫線を施すのはマクロの自動記録が参考になると思います。 セルの値で条件分岐するのは If Worksheets(1).Cells(2,4).Value = "特定の値" then '処理 End If というような感じになります。

mammy18
質問者

お礼

どうもありがとうございました。 他のマクロを組むときにも参考にさせていただきます。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

太枠でしたか。 でしたら条件付き書式ではだめですね。 失礼しました。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

条件付き書式ではダメなのでしょうか?

関連するQ&A