View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Peter T Peter T is offline
external usenet poster
 
Posts: 5,600
Default capturing TabStrip events inside an MsForm

If you are really intent on putting your Tabstrip in the Frame you can trap
its events in a 'WithEvents' class
Eg, code in Class1 and a normal module as indicated, run StartEvents
(assumes TabStrip1 is *embedded* in Frame1)

''' code in Class1
Public WithEvents tabStrip As MSForms.tabStrip

Private Sub tabStrip_Change()
With tabStrip
MsgBox .Tabs(.Value).Caption
End With
End Sub

''' end Class1

'' code in a normal module
Private cls1 As Class1

Sub StartEvents()
Dim oleF As OLEObject

Set cls1 = New Class1
Set oleF = ActiveSheet.OLEObjects("Frame1")
Set cls1.tabStrip = oleF.Object.Controls("TabStrip1")

End Sub

Sub StopEvents()
Set cls1 = Nothing
End Sub

I would have thought though Chip Pearson's suggestion is simpler, or group
all controls within a drawing shape, formatted to look like a frame.

Regards,
Peter T


"Strobo" wrote in message
...
Hi,

Im trying to display results from a database query in a sort of a 'form'.
I need it to be displayed on the actual worksheet, not as a separate
window
as would be the case when using the UserForm...so Im using an MSFrame
(Microsoft Forms 2.0 Frame) directly on the worksheet and I'm putting all
my
info in there.

Now,
In order to display different sets of data in different tabs Im trying to
use a TabStrip (the form looks the same for all the sets)...

The problem I am having is how to capture the TabStrip events when the
TabStrip is located inside an MsFrame...
If it was an UserForm it would be as simple as

Private Sub TabStrip1_Change()

but in the case of the Frame I cannot access the controls directly.
I generally access them using

Me.frame1.Controls("TabStrip1")

So, any ideas how to go about this?

Thanks!!!

ps. Using Excel 2003