2016-08-10 5 views
0

Я программирую в Excel VBA.Имеет ли массив данные

У меня есть файл, в котором я открываю окно проводника и выбираю файл или файлы и возвращаю имена этих файлов в массив.

Мне нужно проверить, заполнен ли массив или нет. Я пробовал if FileNames(1) <> "" Then, который работает, если в массиве есть что-то. Но когда массив пуст, я получаю сообщение об ошибке type mismatch. Если я попробую If FileNames <> False Then, он работает, когда массив ничего не имеет в нем, но дает мне ошибку type mismatch, когда в массиве что-то есть. Я имею массив как нормальная переменная как Dim FileNames, но я пробовал Dim FileNames() as String тоже без успеха. Я выбираю файл или нет, я получаю ошибку type mismatch. Вот код, который я получил:

sub GetUserInfo() 
    Dim FileNames 

    FileNames = Select_File_Or_Files_Windows 'This opens the Explorer window and allows you to pick multiple files 

    If FileNames(1) <> "" Then 
     'Do something 
    Else 
     'Do the last thing 
    End If 
End Sub 
+1

Я думаю, что [это] (http://www.cpearson.com/Excel/VBAArrays.htm) может помочь тебе. См. Функцию IsArrayAllocated. – Brian

+1

Было бы полезно показать код для функции 'Select_File_Or_Files_Windows', поэтому мы можем увидеть, как он создает возвращаемое значение. –

+0

' Select_File_Or_Files_Windows' почти наверняка возвращает нестроковый массив или не-массив. Это единственное, что я пробовал, что даст несоответствие типа - все остальное закончится тем, что индексируется вне диапазона или несоответствие размеров. Дважды проверьте значения в 'Filenames' после их возврата и убедитесь, что все значения в нем являются строками. – Mikegrann

ответ

2

быть это вариант, попробуйте

If IsArray(FileNames) Then... 
+0

Это понравилось! – Mike

+0

приветствуются – user3598756