View Single Post
  #11   Report Post  
Posted to microsoft.public.excel.programming
Mangesh Yadav[_4_] Mangesh Yadav[_4_] is offline
external usenet poster
 
Posts: 101
Default Addressing a UserForm sub in a VB dll

Hi Peter,

haven't tried this as yet, but will try soon.

As for the intellisense part, my basic question is:
from ThisWorkbook how to arrive at a userform in my workbook something like
ThisWorkbook.SOMETHING.SOMETHING.UserForm1


Mangesh




"Peter T" <peter_t@discussions wrote in message
...
Hi Mangesh,

I still don't entirely follow what you are doing. As I mentioned before

it's
not necessary to explicitly call the vba Userform Intialize event, it will
automatically run as soon as you make the first reference to the form.

Maybe you can adapt something along the lines of this demo to your needs.
However I don't know how to declare the vba userform in vb6, other than As
Object, to get the userforms' intellisense in vb6.

'' VB6 ActiveX dll named "QuickRef"
'' code in Class named "hello" in QuickRef
'' xlApp not used in this demo

Dim xlApp As Excel.Application
Dim oUF As Object
Private vArr()

Public Property Set prXLapp(xl As Excel.Application)
Set xlApp = xl
End Property
Public Property Set prUF(uf As Object)
Set oUF = uf
End Property
Public Sub Test()
Dim n As Long
n = oUF.prx
MsgBox n, , "vb6 Test"
oUF.prx = 333
oUF.Commandbutton1.Caption = "Hide Me"
oUF.Show
MsgBox "Useform1 closed"
End Sub
Private Sub Class_Terminate()
Set oUF = Nothing
Set xlApp = Nothing
End Sub

'' vba normal module
''
Dim vb6CL As QuickRef.hello
Sub Main()
Set vb6CL = New QuickRef.hello
Set vb6CL.prXLapp = Application
Set vb6CL.prUF = UserForm1
vb6CL.Test
MsgBox UserForm1.prX, , "vba Main"
ClearUp
End Sub

Sub ClearUp()
Set vb6CL = Nothing
Unload UserForm1
End Sub

'' vba Userform1 with a button named "CommandButton12

Dim x As Long
Public Property Let prX(n As Long)
x = n
End Property
Public Property Get prX() As Long
prX = x
End Property

Private Sub CommandButton1_Click()
Me.Hide
End Sub

1. set a value to form var' X in the initialize event
2. get & display X in vb6
3 vb6 change X
4 vb6 change caption of form button
5 display the new value X in vba

Whilst this demo seems to work, I'm not at all sure it's a good way of

doing
things, at the least it's a bit odd!

Regards,
Peter T

"Mangesh Yadav" wrote in message
...
Now I have the following 3 macros in my excel application which is

running
fine

My Excel macros:

UserForm1 module : (2 macros below)
Sub UserForm_Initialize()
Call UFTest
End Sub

Sub UFTest()
' doing something
End Sub

Standard module: (1 macro in the standard module)
Sub Main()
UserForm1.UFTest
End Sub

Now I am converting the sub main to a vb dll, while keeping the userform
macros untouched
Sub Main(myApp)
UserForm1.UFTest ' gives error "object required"
End Sub

In excel I would call this as:
Call Main(ThisWorkbook)


So my question is, in the VB code above how do I call the UFTest sub

from
the userform module...?



Mangesh


"Mangesh Yadav" wrote in message
...
Hi Peter,

Thanks for your response.

Basically I have an established excel application. And now I am

turning
some
of the excel macros into VB dll. The line
call UserForm1.UserForm_Initialize
runs well in excel, but it gives an error in the dll. So my question

was
starting with ThisWorkbook, how do you arrive at UserForm1 using
intellisense.

For some reason, I want to run the Initialize event without an actual

LOAD
Form call.


Mangesh




"Peter T" <peter_t@discussions wrote in message
...
Hi Mangesh,

Referring to your original question - you say you are converting
everything
to a vb6 dll, so why are you trying to call a vba userform from your

dll.
Is
that indeed what you are trying to do?

I don't follow why you want to call UserForm_Initialize(). This

event,
and
code within, will run automatically as soon as you make the first
reference
to the Userform. Typically that might be Load or Show, but could be

any
sort
of ref.

Regards,
Peter T

"Mangesh Yadav" wrote in message
...
Anyone on this yet....

Mangesh





"Mangesh Yadav" wrote in message
...
Hi Alasdair,

Thanks for the response.

Infact my problem does not relate much to the VB dll. Its rather
basic.
I
want to know what is the parent of UserForm1.UserForm_Initialize

or starting from ThisWorkbook and using intellisense, how can

one
arrive
at
UserForm1.UserForm_Initialize

Something like:
ThisWorkbook.SOMETHING.SOMETHING.UserForm1.UserFor m_Initialize



Mangesh


"Alasdair Stirling"

wrote
in
message

...
Have a look at the following article:


http://support.microsoft.com/default...;en-us;Q194611

Regards,

Alasdair Stirling

"Mangesh Yadav" wrote:

Hi,

I have a userform call frmGraph, and currently in my excel
application
I
am
calling its initialise event something like this:
frmGraph.UserForm_Initialize

Now my problem is that, I am converting everything to a VB

dll,
and
this
particular line is giving me the error object not found.

Preceding
it
with
ThisWorkbook e.g.
ThisWorkbook.frmGraph.UserForm_Initialize
still does not solve the problem and gives the error "object

does
not
support this property" which is ofcourse expected.

How do I call this sub through my dll....?


--
- Mangesh
------------------------------------------
Office 2003 & Windows XP