- ベストアンサー
特定の値のセルに罫線を引くマクロ
Excelのマクロの質問です。 セルの値が特定の値の時に太枠の罫線でそのセルのみを囲むマクロを作りたいのですが、どのように記述したらよいのでしょうか? 10×30ぐらいの範囲に複数個該当セルがあります。 値は「休」、「土」などの漢字です。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
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
その他の回答 (5)
- cj_mover
- ベストアンサー率76% (292/381)
こんにちは 自分の為に書いたラフなものを自己満足で載せるものです。 不完全で穴だらけですが、ヒントにでもなれば、、、 (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
お礼
どうもありがとうございました。 勉強させていただきます。
- imogasi
- ベストアンサー率27% (4737/17069)
こんなのはマクロの記録でほぼできるではないですか。 丸投げする前にマクロの記録をとって勉強すること。 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以上の例。
お礼
どうもありがとうございました 1行ずつ勉強させていただきます。
- marbin
- ベストアンサー率27% (636/2290)
セルに罫線を施すのはマクロの自動記録が参考になると思います。 セルの値で条件分岐するのは If Worksheets(1).Cells(2,4).Value = "特定の値" then '処理 End If というような感じになります。
お礼
どうもありがとうございました。 他のマクロを組むときにも参考にさせていただきます。
- marbin
- ベストアンサー率27% (636/2290)
太枠でしたか。 でしたら条件付き書式ではだめですね。 失礼しました。
- marbin
- ベストアンサー率27% (636/2290)
条件付き書式ではダメなのでしょうか?
お礼
どうもありがとうございました。 望みどうりの動作でした。 こんなに短くても良いのですね。