View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
acampbell acampbell is offline
external usenet poster
 
Posts: 20
Default modeless dialog box

On Feb 6, 1:08 am, "NickHK" wrote:
Alan,
If I understand correctly, this does what you want.

Private Sub CommandButton2_Click()
Const FIND_REPLACE_DIALOG As Long = 1849
Application.CommandBars.FindControl(, FIND_REPLACE_DIALOG).Execute
End Sub

Ensure the command button has the .TakeFocusOnClick property=False.

NickHK

"acampbell" wrote in message

oups.com...



I need some help understanding why find dialog box, run via the
sendkeys method allows the dialog to run modeless yet, the second
routine will not run modeless. My users want to leave the find dialog
box open while making find & replace changes to their worksheet


I would prefer to use the vba format so I can set my arguments
aprpropriately, but need the modeless functionality of the sendkeys
routine.


Any help is greatly appreciated.


Alan


Sub find1()
With ActiveSheet
Application.Goto Reference:=Worksheets("Database").Range("A9")
Application.Goto Reference:=Worksheets("Database").Range("D9"), _
Scroll:=False
On Error Resume Next
SendKeys ("^f{BS}")
SendKeys ("%T")
SendKeys ("%LF~%N{ESC}"), Wait:=True
SendKeys "{BS}"
End With
End sub


Sub find2()
Application.Goto Reference:=Worksheets("Database").Range("D9"), _
Scroll:=True
Application.Dialogs(xlDialogFormulaFind).Show("", 1, 2, 2)- Hide quoted text -


- Show quoted text -


Nick,

Fantastic! Worked like a charm. Using some info Tom Ogilvy gave me a
while back regarding the find mehod and setting persistent values, I
ended up with a crude workaround yesterday, but prefer your code over
this by far. I had to set my persistent values (as needed) with the
find method and then used sendkeys to open the dialog box.

Thanks for your response.

Alan

Sub Find_Acct()

Dim Rng As Range

'Set visible range to users' prevference.
Application.Goto Reference:=Worksheets("Database").Range("A9")
Application.Goto Reference:=Worksheets("Database").Range("D9"), _
Scroll:=False

With Columns(4) 'sets persistent values of the find dialog without an
actual search
Set Rng = .Find(What:="", _
LookIn:=xlFormulas, _
LookAt:=xlWhole, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, _
MatchCase:=False)
End With

SendKeys "^f{BS}"
End Sub