View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Tom Ogilvy Tom Ogilvy is offline
external usenet poster
 
Posts: 27,285
Default How to stop a macro at a Shell line.


Shell is asynchronous.

http://support.microsoft.com/kb/147392/en-us
XL: How to Force Macro Code to Wait for Outside Procedure

http://support.microsoft.com/kb/129796/en-us
HOWTO: 32-Bit App Can Determine When a Shelled Process Ends




--
Regards,
Tom Ogilvy

"Alex St-Pierre" wrote in message
...
Hi,
The following macro run until the language inside the control panel has
not
been set to english. The problem I have is that "Shell Cmdl$,
vbNormalFocus"
show a box but the macro run during that time. If the language is not set
to
english before the macro start, Shell Cmdl will be shown 2 times (instead
of
one) even if the language is set to english when the first box is shown.
What
happens is that before the user choose the value (first time) "Shell ...",
the macro run and the new parameters are set to old value. Any idea?
Thanks!
Alex
Sub test()
512 = GetUserDefaultLCID()

iRet1 = GetLocaleInfo(Locale, LOCALE_SENGLANGUAGE, lpLCDataVar, 0)
Symbol = String$(iRet1, 0)
iRet2 = GetLocaleInfo(Locale, LOCALE_SENGLANGUAGE, Symbol, iRet1)
'GetLocaleInfo(Locale, LOCALE_SDATE, Symbol, iRet1)
pos = InStr(Symbol, Chr$(0))
If pos 0 Then
Symbol = Left$(Symbol, pos - 1)
sLang = Symbol
End If
If sLang < "English" Then
MsgBox ("The regional settings must be English." & Chr(10) &
"Your currently setting are " & sLang & ". Please select English in the
next
box")
Cmdl = "rundll32.exe shell32.dll,Control_RunDLL intl.cpl" +
",,5"
Shell Cmdl$, vbNormalFocus
GoTo 512
End If
End Sub
--
Alex St-Pierre