Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Excel COM dll - how to escape from process

4 views
Skip to first unread message

mac_in_sctland

unread,
Sep 28, 2009, 1:47:34 AM9/28/09
to
Hi,

I have built a fairly simple Excel COM addin in visual basic 6 which
loop 50000 times and adds up numbers.

The problem I am having is that when I press the escpae key the COM
addin doesn't stop (I would have expected it to - the same as VBA
macros).

Is there anything I need to do to put into my COM addin to allow this
to happen?

Many thanks for your help

Mac

Peter T

unread,
Sep 28, 2009, 4:52:29 AM9/28/09
to
I recall struggling with that one!
This is what I eventually came up with for use in a VB6 dll -


Private Declare Function GetAsyncKeyState Lib "user32" ( _
ByVal vKey As Long) As Integer


Function IsKeyDown(key As Long) As Boolean
If GetAsyncKeyState(key) Then
IsKeyDown = True
End If

End Function

Function EscBreak() As Long

If IsKeyDown(vbKeyCancel) Then
EscBreak = 8218 ' ctrl-break
ElseIf IsKeyDown(vbKeyPause) Then
EscBreak = 8218 ' simply Break
ElseIf IsKeyDown(vbKeyEscape) Then
EscBreak = 8219 ' Esc
End If

End Function

Sub test()
Dim i As Long
Dim x As Double
Dim nextKeyCheck As Long
Dim nKey As Long
Const cLOOPS As Long = 20000 ' adjust

' adjust cLOOPS to trigger every say 0.1 to 0.2 seconds

' EnableCancelKey in VBA only for testing
' don't include EnableCancelKey in VB6

Application.EnableCancelKey = xlDisabled
On Error GoTo errH
For i = 1 To 100000000
x = x + 0.01

If i > nextKeyCheck Then
nextKeyCheck = nextKeyCheck + cLOOPS
nKey = EscBreak
If nKey Then
Err.Raise 12345
nKey = 0
End If
End If

Next
i = i - 1

done:
Debug.Print i, x ' note floating point error!!

Application.EnableCancelKey = xlInterrupt

Exit Sub

errH:

If Err.Number = 12345 Then
If MsgBox("You pressed " & IIf(nKey = 8218, "Break", "Esc") & _
" in loop " & i & vbCr & _
"Do you want to continue", vbYesNo) = vbYes Then
Resume Next
Else
' do cleanup stuff
Resume done
End If

Else
' some other error
End If

End Sub


Regards,
Peter T

"mac_in_sctland" <mac_in_...@yahoo.co.uk> wrote in message
news:5c8da845-0eef-4882...@n2g2000vba.googlegroups.com...

0 new messages