vba to clear cells but leave specific value

dami916

New Member
Joined
Jan 5, 2018
Messages
7
Hello,
Does anyone knows how to set VBA to clear a range but leave a specific value?

I was using this:

Sub ClearSheet()
' ClearSheet Macro


Range("B6:H25").Select
On Error GoTo Error_handler:

Selection.SpecialCells(xlCellTypeConstants, 1).Select
Selection.ClearContents

Error_handler:
MsgBox "Cleared"

End Sub


but it only clears numbers. I need it to clear everything with exception of a specific value.

thank you
 

Excel Facts

Return population for a City
If you have a list of cities in A2:A100, use Data, Geography. Then =A2.Population and copy down.
By everything do you mean all cells in the range to be cleared, with the exception of the specific value?
Also what is the specific value?
 
Upvote 0
By everything do you mean all cells in the range to be cleared, with the exception of the specific value?
Also what is the specific value?

Yes, clear everything with exception of the value "OFF"

This VBA does the job but it's very slow:

Sub DoNotContainClearCells()
'Clear out all cells that do not contain a specific word/phrase
Dim rng As Range
Dim cell As Range
Dim ContainWord As String
'What range do you want to search?
Set rng = Range("b6:h25")
'What phrase do you want to test for?
ContainWord = "OFF"
'Loop through each cell in range and test cell contents
For Each cell In rng.Cells
If cell.Find(ContainWord) Is Nothing Then cell.ClearContents
Next cell
End Sub
 
Upvote 0
See if this speeds things up for you:
Code:
Sub DoNotContainClearCells()
'Clear out all cells that do not contain a specific word/phrase
Dim rng As Range
Dim cell As Range
Dim ContainWord As String

[COLOR=#ff0000]Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual[/COLOR]

'What range do you want to search?
Set rng = Range("b6:h25")
'What phrase do you want to test for?
ContainWord = "OFF"
'Loop through each cell in range and test cell contents
For Each cell In rng.Cells
    If cell.Find(ContainWord) Is Nothing Then cell.ClearContents
Next cell
[COLOR=#ff0000]
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True[/COLOR]

End Sub
 
Upvote 0
Give this macro a try...
Code:
[table="width: 500"]
[tr]
	[td]Sub DoNotContainClearCells()
  Cells.Replace "OFF", "#N/A", xlWhole, , , , False, False
  Cells.SpecialCells(xlConstants, xlNumbers + xlTextValues).ClearContents
  Cells.SpecialCells(xlConstants).Value = "OFF"
End Sub[/td]
[/tr]
[/table]
 
Last edited:
Upvote 0
See if this speeds things up for you:
Code:
Sub DoNotContainClearCells()
'Clear out all cells that do not contain a specific word/phrase
Dim rng As Range
Dim cell As Range
Dim ContainWord As String

[COLOR=#ff0000]Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual[/COLOR]

'What range do you want to search?
Set rng = Range("b6:h25")
'What phrase do you want to test for?
ContainWord = "OFF"
'Loop through each cell in range and test cell contents
For Each cell In rng.Cells
    If cell.Find(ContainWord) Is Nothing Then cell.ClearContents
Next cell
[COLOR=#ff0000]
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True[/COLOR]

End Sub

this works perfect, thanks a lot
 
Upvote 0
beaten 2it
 
Last edited:
Upvote 0
Give this macro a try...
Code:
[TABLE="width: 500"]
<tbody>[TR]
[TD]Sub DoNotContainClearCells()
  Cells.Replace "OFF", "#N/A", xlWhole, , , , False, False
  Cells.SpecialCells(xlConstants, xlNumbers + xlTextValues).ClearContents
  Cells.SpecialCells(xlConstants).Value = "OFF"
End Sub
[/TD]
[/TR]
</tbody>[/TABLE]

this works great too but clears the whole worksheet I only need b6:h25
Thank you for your reply
 
Upvote 0
this works great too but clears the whole worksheet I only need b6:h25
Sorry, I forgot about that. Give this a try then...
Code:
[table="width: 500"]
[tr]
	[td]Sub DoNotContainClearCells()
  With Range("B5:H25")
    .Replace "OFF", "#N/A", xlWhole, , , , False, False
    .SpecialCells(xlConstants, xlNumbers + xlTextValues).ClearContents
    .SpecialCells(xlConstants).Value = "OFF"
  End With
End Sub[/td]
[/tr]
[/table]
 
Last edited:
Upvote 0

Forum statistics

Threads
1,214,826
Messages
6,121,794
Members
449,048
Latest member
greyangel23

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top