ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   Follow Up Macro Question (https://www.excelbanter.com/excel-discussion-misc-queries/256125-follow-up-macro-question.html)

MrAcquire

Follow Up Macro Question
 
Earlier, I asked about writing a macro to clear the contents of cells whose
value was an alpha dash (-) without changing values or formats of the other
cells. Based on expert feedback, I came up with the following solution.
Highlight the desired range and run the following macro.

Sub ClearDash()
Dim s As String
s = "-"
For Each r in ActiveSheet.UsedRange
If r.Value = s Then
r.ClearContents
End If
Next
End Sub

This works just fine unless a cell in the range contains an error value such
as #N/A in which case the macro aborts at that point with a "Type mismatch"
error. I have been unsuccessful at figuring out a way to skip over any cell
in the range that contains an error value. I thought of maybe using the
following somewhere in the code but I can't get it to work.

If Application.ErrorCheckingOptions.EvaluateToError = True Then

Any ideas on how I can modify the above macro?

Mike H

Follow Up Macro Question
 
Hi,

Include this as the first line of your sub routine

On Error Resume Next


--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.


"MrAcquire" wrote:

Earlier, I asked about writing a macro to clear the contents of cells whose
value was an alpha dash (-) without changing values or formats of the other
cells. Based on expert feedback, I came up with the following solution.
Highlight the desired range and run the following macro.

Sub ClearDash()
Dim s As String
s = "-"
For Each r in ActiveSheet.UsedRange
If r.Value = s Then
r.ClearContents
End If
Next
End Sub

This works just fine unless a cell in the range contains an error value such
as #N/A in which case the macro aborts at that point with a "Type mismatch"
error. I have been unsuccessful at figuring out a way to skip over any cell
in the range that contains an error value. I thought of maybe using the
following somewhere in the code but I can't get it to work.

If Application.ErrorCheckingOptions.EvaluateToError = True Then

Any ideas on how I can modify the above macro?


Dave Peterson

Follow Up Macro Question
 
You could check for an error:

For Each r in ActiveSheet.UsedRange
if iserror(r.value) then
'skip it???
else
If r.Value = s Then
r.ClearContents
End If
end if
Next r

Or you may be able to test the string you see in the cell:

For Each r in ActiveSheet.UsedRange
If r.Text = s Then
r.ClearContents
End If
Next r

MrAcquire wrote:

Earlier, I asked about writing a macro to clear the contents of cells whose
value was an alpha dash (-) without changing values or formats of the other
cells. Based on expert feedback, I came up with the following solution.
Highlight the desired range and run the following macro.

Sub ClearDash()
Dim s As String
s = "-"
For Each r in ActiveSheet.UsedRange
If r.Value = s Then
r.ClearContents
End If
Next
End Sub

This works just fine unless a cell in the range contains an error value such
as #N/A in which case the macro aborts at that point with a "Type mismatch"
error. I have been unsuccessful at figuring out a way to skip over any cell
in the range that contains an error value. I thought of maybe using the
following somewhere in the code but I can't get it to work.

If Application.ErrorCheckingOptions.EvaluateToError = True Then

Any ideas on how I can modify the above macro?


--

Dave Peterson

MrAcquire

Follow Up Macro Question
 
I like simple and this solution works perfectly. Thanks for the help, Mike.

"Mike H" wrote:

Hi,

Include this as the first line of your sub routine

On Error Resume Next


--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.


"MrAcquire" wrote:

Earlier, I asked about writing a macro to clear the contents of cells whose
value was an alpha dash (-) without changing values or formats of the other
cells. Based on expert feedback, I came up with the following solution.
Highlight the desired range and run the following macro.

Sub ClearDash()
Dim s As String
s = "-"
For Each r in ActiveSheet.UsedRange
If r.Value = s Then
r.ClearContents
End If
Next
End Sub

This works just fine unless a cell in the range contains an error value such
as #N/A in which case the macro aborts at that point with a "Type mismatch"
error. I have been unsuccessful at figuring out a way to skip over any cell
in the range that contains an error value. I thought of maybe using the
following somewhere in the code but I can't get it to work.

If Application.ErrorCheckingOptions.EvaluateToError = True Then

Any ideas on how I can modify the above macro?


Gord Dibben

Follow Up Macro Question
 
You check to see if r has a formula.

Sub ClearDash()
Dim s As String
s = "-"
For Each r In ActiveSheet.UsedRange
If Not r.HasFormula Then
If r.Value = s Then
r.ClearContents
End If
End If
Next
End Sub


Gord Dibben MS Excel MVP

On Thu, 11 Feb 2010 23:18:01 -0800, MrAcquire
wrote:

Earlier, I asked about writing a macro to clear the contents of cells whose
value was an alpha dash (-) without changing values or formats of the other
cells. Based on expert feedback, I came up with the following solution.
Highlight the desired range and run the following macro.

Sub ClearDash()
Dim s As String
s = "-"
For Each r in ActiveSheet.UsedRange
If r.Value = s Then
r.ClearContents
End If
Next
End Sub

This works just fine unless a cell in the range contains an error value such
as #N/A in which case the macro aborts at that point with a "Type mismatch"
error. I have been unsuccessful at figuring out a way to skip over any cell
in the range that contains an error value. I thought of maybe using the
following somewhere in the code but I can't get it to work.

If Application.ErrorCheckingOptions.EvaluateToError = True Then

Any ideas on how I can modify the above macro?




All times are GMT +1. The time now is 09:31 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com