how to send a variable size VBA array to a C struct

B

Brian Murphy

In VBA I can create a user defined Type that contains fixed size
arrays, and pass one of these to a C DLL where it goes into a struct,
if the struct was compiled with the correct array sizes ahead of time.

Is it possible to do this with variable size arrays?

Thanks,

Brian Murphy
 
L

Lori Miller

Brian - off topic, i saw a thread from you a while ago about how
Excel calculates smooth curves and created a few formulas and
simplified code, with good results. See links in this thread:
http://help.lockergnome.com/office/default--ftopict1005590.html

The values are the same as yours in general but the correction
factor differs slightly. I'm pretty sure this adjustment is exact.and
has a natural interpretation in terms of tangent conditions. I'm
also fairly certain Excel uses de Casteljau's algorithm to calculate
the curve with straight lines joining the calculated points.
 
B

Brian Murphy

I will be sending data from Excel to C, so I want to allocate the
arrays in VBA .

Are you saying that I still ought to use MALLOC in the C code to
create space for the arrays?

Brian
 
B

Brian Murphy

Dear Lori,

That's very interesting. I'll confess I actually haven't looked at
this in quite a while.

I just read what Wiki says about Catmull Splines. It looks like that
uses central difference to get the slopes. I don't remember what bits
of logic I had implemented for my spline.

I tried to use your IRR cell formula but only got #N/A out of it. So
I couldn't compare it to what my function returns. If you have a
workbook that shows a comparison, you can send it to me if you wish.
What "issues" with my function does your solution resolve?

Brian
 
L

Lori Miller

I tried to use your IRR cell formula but only got #N/A out of it.

Maybe try changing -1 to 1 in the last match arguments?
The spline formula agrees with the Excel curve in many
practical situations. It won't match if the data spacing is
too irregular however - given four consecutive points
A,B,C,D then to apply in the interval BC, two conditions
must hold: |BC|<3|AC| and |BC|<3|BD| (in chart units.)

What "issues" with my function does your solution resolve?

The scaling adjustment can differ slightly in small intervals
and near endpoints - see example. The simplification comes
as you don't need the actual pixel lengths for the chart
scaling factor only ratios i.e. plot area width/length. My
UDF reads chart values so you'll need to update by pressing F9.

Example: In your smooth_curve_bezier_example file entering:

X Y
9 10
9.5 12
10 12
12 7

http://wikisend.com/download/544426/Copy of smooth_curve_bezier_example_file.xls

BTW I think the ChartTool Utility is a great tool.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top