Help with Error Handlers!!!

C

Conan Kelly

Hello all,

Using Excel 2002 (10.6501.6626) SP3

AAAAAAAAHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!! THIS IS DRIVING ME NUTS!!!!!!!!!!!!!!!!!!!!!!!!

I've been working on this for several days now and I think that I have finally narrowed it down to this:

How can I get this to work correctly when I interrupt execution with [Ctrl] + [Break]?


With the following code, the error handler works correctly:

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

If mrngCurrRange = "Nothing" Then
' I KNOW THIS SYNTAX IS INCORRECT. I'VE ALREADY FOUND OUT THE CORRECT SYNTAX. This is just here to trigger a
legitimate error.
End If

'Statements that will cause the macro to run for a long time, hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf & Selection.Address

Exit Sub

End Sub



BUT with the following code AND INTERRUPTING EXECUTION WITH [Ctrl] + [Break], the error handler does not work correctly. Instead, I
get this error message: http://home.att.net/~ctbarbarin/files/progress_error.jpg

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

'Statements that will cause the macro to run for a long time, hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf & Selection.Address

Exit Sub

End Sub




How can I get this to work correctly when I interrupt execution with [Ctrl] + [Break]?
 
B

Bob Phillips

If mrngCurrRange Is Nothing Then


--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

Conan Kelly said:
Hello all,

Using Excel 2002 (10.6501.6626) SP3

AAAAAAAAHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!! THIS IS DRIVING ME NUTS!!!!!!!!!!!!!!!!!!!!!!!!

I've been working on this for several days now and I think that I have
finally narrowed it down to this:
How can I get this to work correctly when I interrupt execution with [Ctrl] + [Break]?


With the following code, the error handler works correctly:

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

If mrngCurrRange = "Nothing" Then
' I KNOW THIS SYNTAX IS INCORRECT. I'VE ALREADY FOUND OUT THE
CORRECT SYNTAX. This is just here to trigger a
legitimate error.
End If

'Statements that will cause the macro to run for a long time,
hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf & Selection.Address

Exit Sub

End Sub



BUT with the following code AND INTERRUPTING EXECUTION WITH [Ctrl] +
[Break], the error handler does not work correctly. Instead, I
get this error message: http://home.att.net/~ctbarbarin/files/progress_error.jpg

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

'Statements that will cause the macro to run for a long time,
hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf & Selection.Address

Exit Sub

End Sub




How can I get this to work correctly when I interrupt execution with [Ctrl] + [Break]?
 
C

Conan Kelly

bob,

Thanks for the feed back, but please re-read the post.

I already knew that this syntax is incorrect (I stated that in the comments). I intentionally had that in there to trigger a
legitimate error. That is not where the problem lies. When I have this incorrect syntax in the code, the error handler works
correctly, BUT when I use [Ctrl] + [Break], the error handler does not work correctly.

Any more thoughts on the matter will be greatly appreciated,

Conan




Bob Phillips said:
If mrngCurrRange Is Nothing Then


--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

Conan Kelly said:
Hello all,

Using Excel 2002 (10.6501.6626) SP3

AAAAAAAAHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!! THIS IS DRIVING ME NUTS!!!!!!!!!!!!!!!!!!!!!!!!

I've been working on this for several days now and I think that I have
finally narrowed it down to this:
How can I get this to work correctly when I interrupt execution with [Ctrl] + [Break]?


With the following code, the error handler works correctly:

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

If mrngCurrRange = "Nothing" Then
' I KNOW THIS SYNTAX IS INCORRECT. I'VE ALREADY FOUND OUT THE
CORRECT SYNTAX. This is just here to trigger a
legitimate error.
End If

'Statements that will cause the macro to run for a long time,
hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf & Selection.Address

Exit Sub

End Sub



BUT with the following code AND INTERRUPTING EXECUTION WITH [Ctrl] +
[Break], the error handler does not work correctly. Instead, I
get this error message: http://home.att.net/~ctbarbarin/files/progress_error.jpg

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

'Statements that will cause the macro to run for a long time,
hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf & Selection.Address

Exit Sub

End Sub




How can I get this to work correctly when I interrupt execution with [Ctrl] + [Break]?
 
B

Bob Phillips

That first example does not throw an error as the object is not declared, so
it is interpreted as a string and compared against "Nothing" and succeeds.

--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

Conan Kelly said:
bob,

Thanks for the feed back, but please re-read the post.

I already knew that this syntax is incorrect (I stated that in the
comments). I intentionally had that in there to trigger a
legitimate error. That is not where the problem lies. When I have this
incorrect syntax in the code, the error handler works
correctly, BUT when I use [Ctrl] + [Break], the error handler does not work correctly.

Any more thoughts on the matter will be greatly appreciated,

Conan




If mrngCurrRange Is Nothing Then


--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

Conan Kelly said:
Hello all,

Using Excel 2002 (10.6501.6626) SP3

AAAAAAAAHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!! THIS IS DRIVING ME NUTS!!!!!!!!!!!!!!!!!!!!!!!!

I've been working on this for several days now and I think that I have
finally narrowed it down to this:
How can I get this to work correctly when I interrupt execution with [Ctrl] + [Break]?


With the following code, the error handler works correctly:

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

If mrngCurrRange = "Nothing" Then
' I KNOW THIS SYNTAX IS INCORRECT. I'VE ALREADY FOUND OUT
THE
CORRECT SYNTAX. This is just here to trigger a
legitimate error.
End If

'Statements that will cause the macro to run for a long time,
hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf
&
Selection.Address
Exit Sub

End Sub



BUT with the following code AND INTERRUPTING EXECUTION WITH [Ctrl] +
[Break], the error handler does not work correctly. Instead, I
get this error message: http://home.att.net/~ctbarbarin/files/progress_error.jpg

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

'Statements that will cause the macro to run for a long time,
hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf
&
Selection.Address
Exit Sub

End Sub




How can I get this to work correctly when I interrupt execution with [Ctrl] + [Break]?
 
C

Conan Kelly

Bob,

I'm sorry about that. I should have mentioned that it is declared in the General Declarations of the module as a Range Variable.
If you are testing this on your computer, please declare it as a Range variable and it should throw an error then.

Thanks again for all of your help. Please excuse me if I seem a little short and rude. This problem is really driving me crazy.
I've been working on this for 3 or 4 days now. And since this is just for me personally, I've been spending way too much time on it
and haven't been getting alot of work done. It also seems like not very many people here know how to resolve it; I haven't had any
replies to my previous posts. I really want to figure this out so I can concentrate on work.

Once again, thank you for all of your help. It is greatly appreciated.

Conan


Bob Phillips said:
That first example does not throw an error as the object is not declared, so
it is interpreted as a string and compared against "Nothing" and succeeds.

--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

Conan Kelly said:
bob,

Thanks for the feed back, but please re-read the post.

I already knew that this syntax is incorrect (I stated that in the
comments). I intentionally had that in there to trigger a
legitimate error. That is not where the problem lies. When I have this
incorrect syntax in the code, the error handler works
correctly, BUT when I use [Ctrl] + [Break], the error handler does not work correctly.

Any more thoughts on the matter will be greatly appreciated,

Conan




If mrngCurrRange Is Nothing Then


--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

"Conan Kelly" <CTBarbarin at msn dot com> wrote in message
Hello all,

Using Excel 2002 (10.6501.6626) SP3

AAAAAAAAHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!! THIS IS DRIVING ME
NUTS!!!!!!!!!!!!!!!!!!!!!!!!

I've been working on this for several days now and I think that I have
finally narrowed it down to this:

How can I get this to work correctly when I interrupt execution with
[Ctrl] + [Break]?


With the following code, the error handler works correctly:

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

If mrngCurrRange = "Nothing" Then
' I KNOW THIS SYNTAX IS INCORRECT. I'VE ALREADY FOUND OUT THE
CORRECT SYNTAX. This is just here to trigger a
legitimate error.
End If

'Statements that will cause the macro to run for a long time,
hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf &
Selection.Address

Exit Sub

End Sub



BUT with the following code AND INTERRUPTING EXECUTION WITH [Ctrl] +
[Break], the error handler does not work correctly. Instead, I
get this error message:
http://home.att.net/~ctbarbarin/files/progress_error.jpg

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

'Statements that will cause the macro to run for a long time,
hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf &
Selection.Address

Exit Sub

End Sub




How can I get this to work correctly when I interrupt execution with
[Ctrl] + [Break]?
 
B

Bob Phillips

Conan,

I adapted the code slightly like this

Sub PasteReplaceNulls()
Dim i As Long

On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

For i = 1 To 1000000000

Next i

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf &
Selection.Address

Exit Sub

End Sub


and it broke into the error hanlder as expected. Does this not work for you,
or am I still not quite getting the problem?

--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

Conan Kelly said:
Bob,

I'm sorry about that. I should have mentioned that it is declared in the
General Declarations of the module as a Range Variable.
If you are testing this on your computer, please declare it as a Range
variable and it should throw an error then.
Thanks again for all of your help. Please excuse me if I seem a little
short and rude. This problem is really driving me crazy.
I've been working on this for 3 or 4 days now. And since this is just for
me personally, I've been spending way too much time on it
and haven't been getting alot of work done. It also seems like not very
many people here know how to resolve it; I haven't had any
replies to my previous posts. I really want to figure this out so I can concentrate on work.

Once again, thank you for all of your help. It is greatly appreciated.

Conan


That first example does not throw an error as the object is not declared, so
it is interpreted as a string and compared against "Nothing" and succeeds.

--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

Conan Kelly said:
bob,

Thanks for the feed back, but please re-read the post.

I already knew that this syntax is incorrect (I stated that in the
comments). I intentionally had that in there to trigger a
legitimate error. That is not where the problem lies. When I have
this
incorrect syntax in the code, the error handler works
correctly, BUT when I use [Ctrl] + [Break], the error handler does not work correctly.

Any more thoughts on the matter will be greatly appreciated,

Conan




If mrngCurrRange Is Nothing Then


--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

"Conan Kelly" <CTBarbarin at msn dot com> wrote in message
Hello all,

Using Excel 2002 (10.6501.6626) SP3

AAAAAAAAHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!! THIS IS DRIVING ME
NUTS!!!!!!!!!!!!!!!!!!!!!!!!

I've been working on this for several days now and I think that I have
finally narrowed it down to this:

How can I get this to work correctly when I interrupt execution with
[Ctrl] + [Break]?


With the following code, the error handler works correctly:

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

If mrngCurrRange = "Nothing" Then
' I KNOW THIS SYNTAX IS INCORRECT. I'VE ALREADY FOUND
OUT
THE
CORRECT SYNTAX. This is just here to trigger a
legitimate error.
End If

'Statements that will cause the macro to run for a long time,
hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name &
vbCrLf
&
Selection.Address

Exit Sub

End Sub



BUT with the following code AND INTERRUPTING EXECUTION WITH [Ctrl] +
[Break], the error handler does not work correctly. Instead, I
get this error message:
http://home.att.net/~ctbarbarin/files/progress_error.jpg

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

'Statements that will cause the macro to run for a long time,
hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name &
vbCrLf
&
Selection.Address

Exit Sub

End Sub




How can I get this to work correctly when I interrupt execution with
[Ctrl] + [Break]?
 
C

Conan Kelly

Bob,

Thank you so much for looking into this.

I never actually tested the code that I posted. The code I posted was chopped down next to nothing, BUT it still should NOT have
been functioning properly. It looks like with the way your code is set up that it should not work on my computer, BUT IT IS WORKING
JUST FINE. YET THE CODE THIS IS BASED OFF OF IS STILL NOT WORKING CORRECTLY.

Let me explain what I'm trying to do before I post the code: I'm copying/pasting a lot of data from SQL Server into Excel. This
data can be as big as 40,000 rows X 30 columns with "NULL's" peppered throughout. I came up with some code that will look through
this data and replace all NULL's with "". That part works fine. But on huge amounts of data (anything over 10,000 rows), I can't
let it run straight through. I have to break into it several times before it can make it through the whole selection. What I want
to do is when I break into it, I want to display a custom message box that will display how far I have made it through the whole
selection up to this point (a Progress message, if you will--this is just a point-in-time Progress message--not a dynamic,
continually updating Progress bar). I only want this progress message to show up when I have to break into the code ([Ctrl] +
[Break]). I came up with a separate sub routine that works just fine when run by itself, but for the life of me, I can not get this
to work from the error handler when doing a [Ctrl] + [Break]. I was trying to test this by having the single statement in the error
handler: "MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf & Selection.Address". If I can get this single statement
to work, then there should be no problem getting the rest to work.

This single statement in the error handler will work just fine when it comes across a legitimate error (that is why I had that "If
mrngCurrRange = "Nothing" Then" statement in there--to trigger a legitimate error). BUT every single time I get to the error
handler by means of [Ctrl] + [Break], I get this error message: http://home.att.net/~ctbarbarin/files/progress_error.jpg.

The code that you came up with should be acting the exact same way, but it is not, it is actually working correctly. I just don't
get it. I can not tell what the problem is.

Once again, thank you so much for all of your help. I will post all of non-edited code below and you can test it to see if it will
work for you. There are a lot of commented lines of code in there that are just different methods of trying to accomplish the same
thing. Hopefully it is not too confusing and you can make sense of it all. The code, as it stands now, will return the error
message linked to above when I break into the code ([Ctrl] + [Break]) on my computer. Please let me know if you have different
results. If we can get the single msgbox statement in the error handler working correctly, then there should be no problem getting
the rest of it working.

Please let me know if you have any questions.

Thanks again,

Conan




Sub PasteReplaceNulls()
Dim pmbrResponse As VbMsgBoxResult
Dim pmbrAnswer As VbMsgBoxResult
Dim pstrPasteCell As String
' Dim plngFirstRow As Long
' Dim plngFirstCol As Long
' Dim plngCurrRow As Long
' Dim plngCurrCol As Long
' Dim plngCurrCell As Long
' Dim plngTotalCells As Long

On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler


' If mrngCurrRange = Nothing Then
' Set mrngCurrRange = Application.ActiveWorkbook.ActiveSheet.Selection
' mlngTotalCells = mrngCurrRange.Cells.Count
' mlngFirstRow = mrngCurrRange.Cells(1).Row
' mlngFirstCol = mrngCurrRange.Cells(1).Column
' mlngNbrOfCols = mrngCurrRange.Columns
' mstrFileName = Application.ActiveWorkbook.Name
' mstrSheetName = Application.ActiveWorkbook.ActiveSheet.Name
' mstrCurrRange = Selection.Address
' End If

pstrPasteCell = "A2"

' If Application.Calculation = xlCalculationAutomatic Then ToggleAutoCalc '***'ToggleAutoCalc' is a custom sub
procedure used to turn off the Auto Calculation***

pmbrResponse = MsgBox("Do you want to Paste?", vbYesNoCancel + vbDefaultButton2 + vbQuestion, "Paste?")

If pmbrResponse = vbCancel Then
Exit Sub
ElseIf pmbrResponse = vbYes Then
pmbrAnswer = MsgBox("Data will be pasted starting in cell A2" & vbCrLf & vbCrLf & "Is this correct?", vbYesNoCancel +
vbQuestion, "Paste in A2")
If pmbrAnswer = vbCancel Then
Exit Sub
ElseIf pmbrAnswer = vbNo Then
pstrPasteCell = InputBox("Please enter the cell you would like pasting to begin:", "Paste Cell", pstrPasteCell)
End If
Range(pstrPasteCell).Select
ActiveSheet.Paste
End If

' Selection.Replace "NULL", Null, xlPart, xlByRows, False, False, False
Selection.Replace "NULL", "", xlPart, xlByRows, False, False, False

' If Application.Calculation = xlCalculationManual Then ToggleAutoCalc

Set mrngCurrRange = Nothing
mlngTotalCells = 0
mlngFirstRow = 0
mlngFirstCol = 0
mlngNbrOfCols = 0

Exit Sub

PasteReplaceNulls_Err:
' plngTotalCells = Selection.Cells.Count
' plngFirstRow = Selection.Cells(1).Row
' plngFirstCol = Selection.Cells(1).Column
' plngCurrRow = Selection.Find("NULL", ActiveCell, xlFormulas).Row
' plngCurrCol = Selection.Find("NULL", ActiveCell, xlFormulas).Column
'
' plngCurrCell = ((plngCurrRow - plngFirstRow) * Selection.Columns.Count) + (plngCurrCol - plngFirstCol) + 1
' MsgBox "Progress: " & FormatPercent(plngCurrCell / plngTotalCells, 2, vbTrue)
' DisplayProgress
' Set mrngCurrRange = Application.Workbooks(mstrFileName).Sheets(mstrSheetName).Range(mstrCurrRange)
' With mrngCurrRange.Find("NULL", ActiveCell, xlFormulas)
' mlngCurrRow = .Row
' mlngCurrCol = .Column
' End With
'
' mlngCurrCell = ((mlngCurrRow - mlngFirstRow) * mlngNbrOfCols) + (mlngCurrCol - mlngFirstCol) + 1
' MsgBox "Progress: " & FormatPercent(mlngCurrCell / mlngTotalCells, 2, vbTrue)
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf & Selection.Address
' MsgBox "Hoochie Mamma"

Exit Sub

End Sub

Sub DisplayProgress()
Dim plngFirstRow As Long
Dim plngFirstCol As Long
Dim plngCurrRow As Long
Dim plngCurrCol As Long
Dim plngCurrCell As Long
Dim plngTotalCells As Long

plngTotalCells = Selection.Cells.Count
plngFirstRow = Selection.Cells(1).Row
plngFirstCol = Selection.Cells(1).Column
With Selection.Find("NULL", ActiveCell, xlFormulas)
plngCurrRow = .Row
plngCurrCol = .Column
End With

' With mrngCurrRange.Find("NULL", ActiveCell, xlFormulas)
' mlngCurrRow = .Row
' mlngCurrCol = .Column
' End With

plngCurrCell = ((plngCurrRow - plngFirstRow) * Selection.Columns.Count) + (plngCurrCol - plngFirstCol) + 1
MsgBox "Progress: " & FormatPercent(plngCurrCell / plngTotalCells, 2, vbTrue)
' mlngCurrCell = ((mlngCurrRow - mlngFirstRow) * mlngNbrOfCols) + (mlngCurrCol - mlngFirstCol) + 1
' MsgBox "Progress: " & FormatPercent(mlngCurrCell / mlngTotalCells, 2, vbTrue)

End Sub









Bob Phillips said:
Conan,

I adapted the code slightly like this

Sub PasteReplaceNulls()
Dim i As Long

On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

For i = 1 To 1000000000

Next i

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf &
Selection.Address

Exit Sub

End Sub


and it broke into the error hanlder as expected. Does this not work for you,
or am I still not quite getting the problem?

--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

Conan Kelly said:
Bob,

I'm sorry about that. I should have mentioned that it is declared in the
General Declarations of the module as a Range Variable.
If you are testing this on your computer, please declare it as a Range
variable and it should throw an error then.
Thanks again for all of your help. Please excuse me if I seem a little
short and rude. This problem is really driving me crazy.
I've been working on this for 3 or 4 days now. And since this is just for
me personally, I've been spending way too much time on it
and haven't been getting alot of work done. It also seems like not very
many people here know how to resolve it; I haven't had any
replies to my previous posts. I really want to figure this out so I can concentrate on work.

Once again, thank you for all of your help. It is greatly appreciated.

Conan


That first example does not throw an error as the object is not declared, so
it is interpreted as a string and compared against "Nothing" and succeeds.

--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

"Conan Kelly" <CTBarbarin at msn dot com> wrote in message
bob,

Thanks for the feed back, but please re-read the post.

I already knew that this syntax is incorrect (I stated that in the
comments). I intentionally had that in there to trigger a
legitimate error. That is not where the problem lies. When I have this
incorrect syntax in the code, the error handler works
correctly, BUT when I use [Ctrl] + [Break], the error handler does not
work correctly.

Any more thoughts on the matter will be greatly appreciated,

Conan




If mrngCurrRange Is Nothing Then


--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

"Conan Kelly" <CTBarbarin at msn dot com> wrote in message
Hello all,

Using Excel 2002 (10.6501.6626) SP3

AAAAAAAAHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!! THIS IS DRIVING ME
NUTS!!!!!!!!!!!!!!!!!!!!!!!!

I've been working on this for several days now and I think that I have
finally narrowed it down to this:

How can I get this to work correctly when I interrupt execution with
[Ctrl] + [Break]?


With the following code, the error handler works correctly:

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

If mrngCurrRange = "Nothing" Then
' I KNOW THIS SYNTAX IS INCORRECT. I'VE ALREADY FOUND OUT
THE
CORRECT SYNTAX. This is just here to trigger a
legitimate error.
End If

'Statements that will cause the macro to run for a long time,
hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf
&
Selection.Address

Exit Sub

End Sub



BUT with the following code AND INTERRUPTING EXECUTION WITH [Ctrl] +
[Break], the error handler does not work correctly. Instead, I
get this error message:
http://home.att.net/~ctbarbarin/files/progress_error.jpg

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

'Statements that will cause the macro to run for a long time,
hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf
&
Selection.Address

Exit Sub

End Sub




How can I get this to work correctly when I interrupt execution with
[Ctrl] + [Break]?
 
B

Bob Phillips

It's bed time here now, I'll take another look tomorrow.

--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

Conan Kelly said:
Bob,

Thank you so much for looking into this.

I never actually tested the code that I posted. The code I posted was
chopped down next to nothing, BUT it still should NOT have
been functioning properly. It looks like with the way your code is set up
that it should not work on my computer, BUT IT IS WORKING
JUST FINE. YET THE CODE THIS IS BASED OFF OF IS STILL NOT WORKING CORRECTLY.

Let me explain what I'm trying to do before I post the code: I'm
copying/pasting a lot of data from SQL Server into Excel. This
data can be as big as 40,000 rows X 30 columns with "NULL's" peppered
throughout. I came up with some code that will look through
this data and replace all NULL's with "". That part works fine. But on
huge amounts of data (anything over 10,000 rows), I can't
let it run straight through. I have to break into it several times before
it can make it through the whole selection. What I want
to do is when I break into it, I want to display a custom message box that
will display how far I have made it through the whole
selection up to this point (a Progress message, if you will--this is just
a point-in-time Progress message--not a dynamic,
continually updating Progress bar). I only want this progress message to
show up when I have to break into the code ([Ctrl] +
[Break]). I came up with a separate sub routine that works just fine when
run by itself, but for the life of me, I can not get this
to work from the error handler when doing a [Ctrl] + [Break]. I was
trying to test this by having the single statement in the error
handler: "MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf
& Selection.Address". If I can get this single statement
to work, then there should be no problem getting the rest to work.

This single statement in the error handler will work just fine when it
comes across a legitimate error (that is why I had that "If
mrngCurrRange = "Nothing" Then" statement in there--to trigger a
legitimate error). BUT every single time I get to the error
handler by means of [Ctrl] + [Break], I get this error message: http://home.att.net/~ctbarbarin/files/progress_error.jpg.

The code that you came up with should be acting the exact same way, but it
is not, it is actually working correctly. I just don't
get it. I can not tell what the problem is.

Once again, thank you so much for all of your help. I will post all of
non-edited code below and you can test it to see if it will
work for you. There are a lot of commented lines of code in there that
are just different methods of trying to accomplish the same
thing. Hopefully it is not too confusing and you can make sense of it
all. The code, as it stands now, will return the error
message linked to above when I break into the code ([Ctrl] + [Break]) on
my computer. Please let me know if you have different
results. If we can get the single msgbox statement in the error handler
working correctly, then there should be no problem getting
the rest of it working.

Please let me know if you have any questions.

Thanks again,

Conan




Sub PasteReplaceNulls()
Dim pmbrResponse As VbMsgBoxResult
Dim pmbrAnswer As VbMsgBoxResult
Dim pstrPasteCell As String
' Dim plngFirstRow As Long
' Dim plngFirstCol As Long
' Dim plngCurrRow As Long
' Dim plngCurrCol As Long
' Dim plngCurrCell As Long
' Dim plngTotalCells As Long

On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler


' If mrngCurrRange = Nothing Then
' Set mrngCurrRange = Application.ActiveWorkbook.ActiveSheet.Selection
' mlngTotalCells = mrngCurrRange.Cells.Count
' mlngFirstRow = mrngCurrRange.Cells(1).Row
' mlngFirstCol = mrngCurrRange.Cells(1).Column
' mlngNbrOfCols = mrngCurrRange.Columns
' mstrFileName = Application.ActiveWorkbook.Name
' mstrSheetName = Application.ActiveWorkbook.ActiveSheet.Name
' mstrCurrRange = Selection.Address
' End If

pstrPasteCell = "A2"

' If Application.Calculation = xlCalculationAutomatic Then
ToggleAutoCalc '***'ToggleAutoCalc' is a custom sub
procedure used to turn off the Auto Calculation***

pmbrResponse = MsgBox("Do you want to Paste?", vbYesNoCancel +
vbDefaultButton2 + vbQuestion, "Paste?")
If pmbrResponse = vbCancel Then
Exit Sub
ElseIf pmbrResponse = vbYes Then
pmbrAnswer = MsgBox("Data will be pasted starting in cell A2" &
vbCrLf & vbCrLf & "Is this correct?", vbYesNoCancel +
vbQuestion, "Paste in A2")
If pmbrAnswer = vbCancel Then
Exit Sub
ElseIf pmbrAnswer = vbNo Then
pstrPasteCell = InputBox("Please enter the cell you would like
pasting to begin:", "Paste Cell", pstrPasteCell)
End If
Range(pstrPasteCell).Select
ActiveSheet.Paste
End If

' Selection.Replace "NULL", Null, xlPart, xlByRows, False, False, False
Selection.Replace "NULL", "", xlPart, xlByRows, False, False, False

' If Application.Calculation = xlCalculationManual Then ToggleAutoCalc

Set mrngCurrRange = Nothing
mlngTotalCells = 0
mlngFirstRow = 0
mlngFirstCol = 0
mlngNbrOfCols = 0

Exit Sub

PasteReplaceNulls_Err:
' plngTotalCells = Selection.Cells.Count
' plngFirstRow = Selection.Cells(1).Row
' plngFirstCol = Selection.Cells(1).Column
' plngCurrRow = Selection.Find("NULL", ActiveCell, xlFormulas).Row
' plngCurrCol = Selection.Find("NULL", ActiveCell, xlFormulas).Column
'
' plngCurrCell = ((plngCurrRow - plngFirstRow) *
Selection.Columns.Count) + (plngCurrCol - plngFirstCol) + 1
' MsgBox "Progress: " & FormatPercent(plngCurrCell / plngTotalCells, 2, vbTrue)
' DisplayProgress
' Set mrngCurrRange = Application.Workbooks(mstrFileName).Sheets(mstrSheetName).Range(mstrCurrRang
e)
' With mrngCurrRange.Find("NULL", ActiveCell, xlFormulas)
' mlngCurrRow = .Row
' mlngCurrCol = .Column
' End With
'
' mlngCurrCell = ((mlngCurrRow - mlngFirstRow) * mlngNbrOfCols) +
(mlngCurrCol - mlngFirstCol) + 1
' MsgBox "Progress: " & FormatPercent(mlngCurrCell / mlngTotalCells, 2, vbTrue)
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf & Selection.Address
' MsgBox "Hoochie Mamma"

Exit Sub

End Sub

Sub DisplayProgress()
Dim plngFirstRow As Long
Dim plngFirstCol As Long
Dim plngCurrRow As Long
Dim plngCurrCol As Long
Dim plngCurrCell As Long
Dim plngTotalCells As Long

plngTotalCells = Selection.Cells.Count
plngFirstRow = Selection.Cells(1).Row
plngFirstCol = Selection.Cells(1).Column
With Selection.Find("NULL", ActiveCell, xlFormulas)
plngCurrRow = .Row
plngCurrCol = .Column
End With

' With mrngCurrRange.Find("NULL", ActiveCell, xlFormulas)
' mlngCurrRow = .Row
' mlngCurrCol = .Column
' End With

plngCurrCell = ((plngCurrRow - plngFirstRow) *
Selection.Columns.Count) + (plngCurrCol - plngFirstCol) + 1
MsgBox "Progress: " & FormatPercent(plngCurrCell / plngTotalCells, 2, vbTrue)
' mlngCurrCell = ((mlngCurrRow - mlngFirstRow) * mlngNbrOfCols) +
(mlngCurrCol - mlngFirstCol) + 1
' MsgBox "Progress: " & FormatPercent(mlngCurrCell / mlngTotalCells, 2, vbTrue)

End Sub









Conan,

I adapted the code slightly like this

Sub PasteReplaceNulls()
Dim i As Long

On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

For i = 1 To 1000000000

Next i

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf &
Selection.Address

Exit Sub

End Sub


and it broke into the error hanlder as expected. Does this not work for you,
or am I still not quite getting the problem?

--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

Conan Kelly said:
Bob,

I'm sorry about that. I should have mentioned that it is declared in
the
General Declarations of the module as a Range Variable.
If you are testing this on your computer, please declare it as a Range
variable and it should throw an error then.
Thanks again for all of your help. Please excuse me if I seem a little
short and rude. This problem is really driving me crazy.
I've been working on this for 3 or 4 days now. And since this is just
for
me personally, I've been spending way too much time on it
and haven't been getting alot of work done. It also seems like not
very
many people here know how to resolve it; I haven't had any
replies to my previous posts. I really want to figure this out so I
can
concentrate on work.
Once again, thank you for all of your help. It is greatly appreciated.

Conan


That first example does not throw an error as the object is not declared, so
it is interpreted as a string and compared against "Nothing" and succeeds.

--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

"Conan Kelly" <CTBarbarin at msn dot com> wrote in message
bob,

Thanks for the feed back, but please re-read the post.

I already knew that this syntax is incorrect (I stated that in the
comments). I intentionally had that in there to trigger a
legitimate error. That is not where the problem lies. When I have this
incorrect syntax in the code, the error handler works
correctly, BUT when I use [Ctrl] + [Break], the error handler does not
work correctly.

Any more thoughts on the matter will be greatly appreciated,

Conan




If mrngCurrRange Is Nothing Then


--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

"Conan Kelly" <CTBarbarin at msn dot com> wrote in message
Hello all,

Using Excel 2002 (10.6501.6626) SP3

AAAAAAAAHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!! THIS IS DRIVING ME
NUTS!!!!!!!!!!!!!!!!!!!!!!!!

I've been working on this for several days now and I think that I have
finally narrowed it down to this:

How can I get this to work correctly when I interrupt execution with
[Ctrl] + [Break]?


With the following code, the error handler works correctly:

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

If mrngCurrRange = "Nothing" Then
' I KNOW THIS SYNTAX IS INCORRECT. I'VE ALREADY
FOUND
OUT
THE
CORRECT SYNTAX. This is just here to trigger a
legitimate error.
End If

'Statements that will cause the macro to run for a long time,
hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf
&
Selection.Address

Exit Sub

End Sub



BUT with the following code AND INTERRUPTING EXECUTION WITH [Ctrl] +
[Break], the error handler does not work correctly. Instead, I
get this error message:
http://home.att.net/~ctbarbarin/files/progress_error.jpg

Sub PasteReplaceNulls()
On Error GoTo PasteReplaceNulls_Err

Application.EnableCancelKey = xlErrorHandler

'Statements that will cause the macro to run for a long time,
hence the need for "Application.EnableCancelKey =
xlErrorHandler" above

PasteReplaceNulls_Err:
MsgBox ActiveWorkbook.Name & vbCrLf & ActiveSheet.Name & vbCrLf
&
Selection.Address

Exit Sub

End Sub




How can I get this to work correctly when I interrupt execution with
[Ctrl] + [Break]?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top