ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   VB dll, Excell and matlab (https://www.excelbanter.com/excel-programming/336336-vbulletin-dll-excell-matlab.html)

Mangesh Yadav[_4_]

VB dll, Excell and matlab
 
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.



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



keepITcool

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.


Mangesh Yadav[_4_]

VB dll, Excell and matlab
 
Thanks keepITcool.
will give it a shot and come back.

Mangesh



"keepITcool" wrote in message
.com...

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.





All times are GMT +1. The time now is 05:17 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com