プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/11/07 12:57

こんにちは



自分の為に書いたラフなものを自己満足で載せるものです。
不完全で穴だらけですが、ヒントにでもなれば、、、

(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
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/11/07 13:03

こんなのはマクロの記録でほぼできるではないですか。


丸投げする前にマクロの記録をとって勉強すること。
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以上の例。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/11/07 13:01

セルに罫線を施すのはマクロの自動記録が参考になると思います。



セルの値で条件分岐するのは

If Worksheets(1).Cells(2,4).Value = "特定の値" then
'処理
End If

というような感じになります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/11/07 12:55

太枠でしたか。


でしたら条件付き書式ではだめですね。
失礼しました。
    • good
    • 0

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

    • good
    • 0

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

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


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