2015-09-02 2 views
0

У меня есть код MATLAB, который создает большой массив ячеек, который я вхожу в Excel, используя функцию MLGetVar VBA. Код MATLAB также дает мне список строк, которые являются заголовками/заголовками. Я хотел бы иметь возможность взять список строк, сгенерированных в MATLAB, и использовать их для указания строк в Excel, чтобы я мог изменить форматирование всей строки (например, в заголовке 2).Укажите диапазон в VBA с использованием переменных MATLAB

Я попробовал несколько способов получения значений MATLAB Into 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 сегодня.

Спасибо!

ответ

0

MLGetVar примет переменную Matlab и сохранит ее в массиве типа Variant в VBA. Для доступа к элементам необходимо либо индексировать их, используя такой код:

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]

+0

Не вы просто пишете к конкретный диапазон, или я что-то пропустил? Это должно сделать это за вас. xlswrite (имя файла, A, лист, xlRange) Для получения подробной информации см. Приведенную ниже ссылку. http://www.mathworks.com/help/matlab/ref/xlswrite.html?refresh=true – ryguy7272

+0

Вопрос состоял в том, чтобы сделать выбор на основе значений, а не записывать значения. Целью было автоматизировать форматирование некоторых ячеек, где ссылки содержатся в переменных matlab. –

Смежные вопросы