This seems to work on the file in Post #9
Option Explicit
Sub Test()
Dim dbPercentIncrease As Double, dbRoundupAmount As Double
Dim ws As Worksheet, rg As Range, c As Range
Dim lConfirm As Long
Do
dbPercentIncrease = Application.InputBox( _
Prompt:="Please enter the percentage of the price increase", _
Title:="Price Increase %", _
Type:=1)
lConfirm = MsgBox( _
Prompt:="Do you wish to have a " & dbPercentIncrease & " percent price increase?", _
Buttons:=vbYesNoCancel, _
Title:="Confirm Price Increase")
If lConfirm = vbCancel Then Exit Sub
Loop While lConfirm = vbNo
Do
dbRoundupAmount = Application.InputBox( _
Prompt:="Please enter the round up amount for pricing under $20", _
Title:="Price Increase Round Up", _
Type:=1)
lConfirm = MsgBox( _
Prompt:="Do you wish to have a $." & dbRoundupAmount & " round up amount?", _
Buttons:=vbYesNoCancel, _
Title:="Confirm Round Up Amount")
If lConfirm = vbCancel Then Exit Sub
Loop While lConfirm = vbNo
ThisWorkbook.Activate
For Each ws In ActiveWindow.SelectedSheets
On Error Resume Next
Set rg = ws.Cells.SpecialCells(xlCellTypeConstants, xlNumbers)
On Error GoTo 0
If Not rg Is Nothing Then
For Each c In rg
If c.NumberFormat = "\$0" _
Or c.NumberFormat = "\$#,##0" _
Or c.NumberFormat = "\$#,##0.00" _
Or c.NumberFormat = "\$0.00" _
Or Left(c.NumberFormat, 1) = "$" _
And c.Font.Bold = True Then
If c.Value2 > 0 Then
If c.Value2 >= 20 Then
c.Value2 = WorksheetFunction.RoundUp(c.Value2 + c.Value2 * dbPercentIncrease, 0)
c.Interior.Color = vbRed
Else
c.Value2 = WorksheetFunction.Ceiling(c.Value2 + c.Value2 * dbPercentIncrease, dbRoundupAmount)
c.Interior.Color = vbGreen
End If
End If
End If
Next c
End If
Next ws
End Sub
Bookmarks