Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VBA中访问动态命名范围_Vba_Matlab_Excel - Fatal编程技术网

在VBA中访问动态命名范围

在VBA中访问动态命名范围,vba,matlab,excel,Vba,Matlab,Excel,在Excel中,我有一列,作为工作簿模板的一部分,如下所示: Date Asset Return 1/3/2005 0.003582399 1/4/2005 -0.01908258 1/5/2005 0.002080625 1/6/2005 0.005699497 1/7/2005 -0.008040505 1/10/2005 -0.00339116 1/11/2005 -0.009715187 1/12/2005 0.00237185

在Excel中,我有一列,作为工作簿模板的一部分,如下所示:

    Date      Asset Return
1/3/2005    0.003582399
1/4/2005    -0.01908258
1/5/2005    0.002080625
1/6/2005    0.005699497
1/7/2005    -0.008040505
1/10/2005   -0.00339116
1/11/2005   -0.009715187
1/12/2005   0.002371855
1/13/2005   -0.00580783
1/14/2005   0.001058481
1/18/2005   0.015483842
1/19/2005   -0.014690715
1/20/2005   -0.015714799
1/21/2005   -0.010796326
我使用Excel作为用户界面。用户将把数据输入Excel,然后从另一个进行计算的程序(Matlab)读取数据

为此,我使用VBA命令将其发送到Matlab,并直接引用范围或通过命名范围:

MLPutMatrix "VARIABLE_NAME", Range("B8:B2954") 

我的问题是,我事先不知道该范围的大小,因为行数将根据用户放入Excel范围的数据而有所不同

我尝试使用以下公式创建引用最后一个非空行的命名范围:

Sheet1!$B$8:INDEX(Sheet1!$B:$B,COUNTA(Sheet1!$B:$B)+8)
但是,显然,使用公式定义的命名范围不会显示在“名称”框中,并且不能在VBA脚本中使用,因此这不起作用。我需要手动创建一个名称,使其显示在“名称”框中,并使用VBA访问它,但如果我事先不知道范围尺寸,我当然不能这样做


所以我的问题是:我需要找到一些方法,能够通过名称或大小引用动态范围,然后能够在VBA中引用它,这样我就可以使用“MLPutMatrix”命令将它发送到Matlab

使用工作表(“mydata”)”
使用工作表(“mydata”)”不能在VBA中使用公式定义的命名范围,这是不对的。如果你在这方面有问题,那么你的公式可能有问题

参考范围的典型方式如下:

=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),2)

在VBA中不能使用公式定义的命名范围,这是不正确的。如果你在这方面有问题,那么你的公式可能有问题

参考范围的典型方式如下:

=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),2)

您好,在excel中使用表格有什么问题吗?这将自动为您提供一个命名的动态范围。请看这个视频:它解释了如何使用动态范围名称。希望有帮助!您好,在excel中使用表格有什么问题吗?这将自动为您提供一个命名的动态范围。请看这个视频:它解释了如何使用动态范围名称。希望有帮助!
=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),2)