アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルについてです。マウスで選択した範囲に、条件付き書式設定で80点以上のセルの背景を赤にする、というマクロを作成したいと思います。選択する範囲は毎回異なります。以下のマクロはマクロの記録で作成したものです。このRangeの部分をマウスで選択した範囲に変更したいのですが、どうしたら良いのでしょうか?範囲の取得はマクロを実行して、途中で「マウスで範囲を指定してください」というメッセージを表示させてからにしたいのですが。


Sub 背景を赤()

Range("B13:E19").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="=80"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With

End Sub

A 回答 (4件)

Range("B13:E19").Select



Application.InputBox("セル範囲を選択", Type:=8).Select
に書き換えてください。
実行すると、InputBoxが表示されます。
セル範囲をマウスでドラッグして選択すれば選択範囲のアドレスが入力されます。
「OK」すればVBAに戻って処理が継続されます。
直接セルアドレスを入力しても可です。

実は奥が深いInputBox
http://www.officetanaka.net/excel/vba/tips/tips3 …

この回答への補足

Sub Macro1()
'
Application.InputBox("セル範囲を選択", Type:=8).Select
Range("B13:E19").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="=101"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False

End Sub

これを実行すると
.Color = -16383844
ここでマクロが止まってしまいます。なぜか分かりません。Rangeの時は実行します。マクロの記録で作成したのですから当然ですが。

補足日時:2010/07/19 18:38
    • good
    • 0
この回答へのお礼

なぜマクロが止まったか、いろいろと試してみて分かりました。実行する前に同じ条件付き書式が設定してあると、先ほどのエラーが生じました。全く初めての範囲でしたら問題なく実行できました。ご回答、有り難うございました。参考になりました。

お礼日時:2010/07/19 18:53

With文で括って下記のように纏めることもできます。


Selectの必要が無くなります。

With Application.InputBox("セル範囲を選択", Type:=8)
.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="=101"
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With .FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
End With

この回答への補足

いくつか方法があるのですね。参考になりました。ご回答有り難うございました。

補足日時:2010/07/19 21:03
    • good
    • 0

>回答番号:No.1 この回答への補足


エラーになるのは良く解りませんが
回答文を良く見てください。
捕捉で提示されたコードでは
Application.InputBox("セル範囲を選択", Type:=8).Select

Range("B13:E19").Select
で重複しています。

一部再掲します。
-----------------------------------------------------
Range("B13:E19").Select

Application.InputBox("セル範囲を選択", Type:=8).Select
に書き換えてください。
-----------------------------------------------------

この回答への補足

よく見るとそうでしたね。分かりました。現在マクロは思ったように実行されています。アドバイスを有り難うございました。

補足日時:2010/07/19 21:02
    • good
    • 0

Selection.が選択したセル範囲になりますから


Range("B13:E19").Selectを削除するだけで
現在選択されている部分に対しての操作になります。
    • good
    • 0

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