View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
keepITcool keepITcool is offline
external usenet poster
 
Posts: 2,253
Default VB dll, Excell and matlab


Not familiar with matlab..

But I suspect you need to pass a Variant Array
not a range..

dim Matlab as object
dim xlsVal as variant
dim matVal as variant

Set Matlab = CreateObject("Matlab.Application")
xlsVal = Thisworkbook.worksheets("sheet1").Range("a1:a10"). Value

'xlsVAL is now a 1 based 2 dimensional array.
'IF matlab can handle 1 based arrays you're ok..

call matlab.PutFullMatrix( "myR","base",xlsVal,matVal)


--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


Mangesh Yadav wrote :

Hi,

Need some help regarding the following. I am making a VB DLL to
convert some of my excel macro code. The following is working fine
where I set "myRng" as an excel range, and then create a VB variable
"myR" with a for statement and then send it to matlab using the
PutFullMatrix. Something like this

Sub MySub(myApp As Object)
Set myRng = myApp.Worksheets("Sheet1").Range("A1:A10")
myRows = myApp.Worksheets("Sheet1").Range("A1:A10").rows.Co unt
For i = 0 To myRows - 1
myR(i, 0) = myRng(i + 1)
Next i
Set Matlab = CreateObject("matlab.application")
Call Matlab.PutFullMatrix ("myR", "base", myR, myRImag)

Now my question is: Why do I have to use a for statement. That would
make me use as many for loops as there are input ranges. Can't I do
something like:

Sub MySub(myApp As Object)
Set myRng = myApp.Worksheets("Sheet1").Range("A1:A10")

Set Matlab = CreateObject("matlab.application")
Call Matlab.PutFullMatrix ("myR", "base", myRng, myRImag)

where I send the variable "myRng" directly to matlab instead of
explicitly using a for loop to create a VB varaible.