使用MATLAB变量在VBA中指定范围

时间:2015-09-02 00:03:08

标签: matlab vba excel-vba excel

我有一个MATLAB代码创建了一个大单元格数组,我使用VBA的MLGetVar函数进入Excel。 MATLAB代码还为我提供了标题/标题行的列表。我希望能够获取MATLAB中生成的行列表,并使用它们在Excel中指定行,以便我可以更改整行的格式(例如,更改为标题2)。

我已经尝试了几种方法将MATLAB值转换为VBA但是没有取得任何成功:

在MATLAB中,我有一系列数字:example = [12,24,60]

我正在尝试取这些数字并使用它们来指定VBA范围:
MLGetVar "example", VBAVariable

Dim variable As String

Let variable = VBAVariable & ":" & VBAVariable

Range(Var).Select

然后我可以使用选择来做我需要的任何事情,不幸的是我得到了类型不匹配。

我也尝试在MATLAB中格式化值,所以我会:example = ' "12:12, 24:24, 60:60" ' 然后我使用MLGetVar尝试使用Range()进行选择,但这也会导致类型不匹配。

我知道我需要使用For循环来遍历列表,目前我只测试一个变量,所以我知道如何实现我的代码。

希望这个问题不是太基础,我今天才开始尝试使用VBA。

谢谢!

1 个答案:

答案 0 :(得分:0)

MLGetVar将获取Matlab变量并将其存储在VBA中的Variant类型数组中。要访问元素,您必须使用以下代码对其进行索引:

example(1,1)

或使用For循环遍历数组。

Range函数使用一个字符串来指定范围,因此您可以遍历数组并使用它来构建描述所需范围的字符串。

以下是您所描述内容的示例:

Sub test()
    Dim vec As Variant
    Dim r As String

    MLGetVar "example", vec
    r = ""
    For Each Row In vec
        r = r & Row & ":" & Row & ","
    Next
    Range(Left(r, Len(r) - 1)).Select
End Sub

请注意,变量示例必须存在于matlab工作空间中,如问题所述:example = [12,24,60]