Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Programming / January 2006

Tip: Looking for answers? Try searching our database.

Can you capture worksheet double click event from an Add-In????

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
JGeniti - 23 Jan 2006 19:04 GMT
Is there a way for me to add code to my add-in file that will capture
the before_doubleclick event of the worksheet that is referencing the
add-in? I currently have thousands of worksheets that are referencing a
single add-in and I need to add a new procedure that gets triggered
when a user double clicks on a specific sheet.

I have tried using the CreateEventProc (example 1) and the InsertLine
(example 2) technique to try to add the event procedure to the
activeworkbook. This has proved to be very unstable. It will work with
some worksheets and crash on others. From what I gathered from my
research, there is an issue with trying to add code to during run-time.

I was just wondering if there is a way that I can just add code to my
add-in that will get triggered when a user double clicks the worksheet.

Any help would be greatly appreciated.
James

Example 1
   With ActiveWorkbook.VBProject.VBComponents("Sheet7").CodeModule
           StartLine = .CreateEventProc("BeforeDoubleClick",
"Worksheet") + 1
          .InsertLines StartLine, "PurchasePartsDblClick Target,
Cancel"
   End With

Example 2
   Sub AddDblClickEvent()
   Dim myVBComp As VBIDE.VBComponent

   Set myVBComp = ActiveWorkbook.VBProject.VBComponents("Sheet7")

   myVBComp.CodeModule.InsertLines 1, "Private Sub
Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)"
   myVBComp.CodeModule.InsertLines 2, "PurchasePartsDblClick Target,
Cancel"
   myVBComp.CodeModule.InsertLines 3, "End Sub"
   End Sub
Tom Ogilvy - 23 Jan 2006 19:13 GMT
Sure.  Just have your addin instantiate application level events.

See Chip Pearson's page on Application Level events
http://www.cpearson.com/excel/appevent.htm

or look in Excel VBA help at application level events.

Signature

Regards,
Tom Ogilvy

> Is there a way for me to add code to my add-in file that will capture
> the before_doubleclick event of the worksheet that is referencing the
[quoted text clipped - 34 lines]
>     myVBComp.CodeModule.InsertLines 3, "End Sub"
>     End Sub
JGeniti - 23 Jan 2006 19:25 GMT
Tom,
I think this might be more of my lack of understanding of how to
incorporate Chips example into what I'm trying to do. I have been
researching this for a couple of hours and all of the examples of
application events that I have seen seem to reference application
events like opening, closing or creating new workbooks. How would I
break it down to the worksheet level? I hate to seem like I'm asking
you to force feed me this, but for some reason I have been unable to
get the examples that I have seen to work for me.

If you have any type of example of capturing the worksheet events it
would be very helpful.

Thank you,
James
Tom Ogilvy - 23 Jan 2006 19:35 GMT
Occurs when any worksheet is double-clicked, before the default double-click
action.

Private Sub object_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target
As Range, ByVal Cancel As Boolean)

object    Application or Workbook. For more information about using events
with the Application object, see Using Events with the Application Object.

Sh    A Worksheet object that represents the sheet.

Target    The cell nearest to the mouse pointer when the double-click
occurred.

Cancel    False when the event occurs. If the event procedure sets this
argument to True, the default double-click action isn't performed when the
procedure is finished.

Remarks
This event doesn't occur on chart sheets.

so where it shows Object, if using Chip's page example, that Object would be
replace with  App

In the class module it would be declared as:

Public WithEvents App As Application

Private Sub App_SheetBeforeDoubleClick(ByVal Sh As Object, _

  ByVal Target As Range, ByVal Cancel As Boolean)

  if lcase(sh.Name) = "mysheet" and lcase(sh.parent.name) =
"myworkbook.xls" then
     sh.Range("A1").Value = "You double clicked"
  end if

End Sub

then in the event, you can test if this is the sheet (sh.Name) and workbook
(sh.parent.name)  that you want to react to.

for an example workbook, Chip offers one at the page I cited.

Signature

Regards,
Tom Ogilvy

> Tom,
> I think this might be more of my lack of understanding of how to
[quoted text clipped - 11 lines]
> Thank you,
> James
Tom Ogilvy - 23 Jan 2006 19:37 GMT
If Chip's workbook doesn't help and you still "don't get it", then send me
an email and I will put together a sample for you.

twogilvy@msn.com

Signature

Regards,
Tom Ogilvy

> Tom,
> I think this might be more of my lack of understanding of how to
[quoted text clipped - 11 lines]
> Thank you,
> James
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.