2016-08-10 17 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

を試みることができます助けます。 'IsArrayAllocated'関数を参照してください。 – Brian

+1

関数 'Select_File_Or_Files_Windows'のコードを表示すると便利です。返り値 –

+0

の作成方法を見ることができます。' Select_File_Or_Files_Windows'は、文字列以外の配列または非配列をほぼ確実に返します。これは、型の不一致をもたらす試みた唯一のものです。それ以外のものは、範囲外の添え字や次元の不一致などの結果に終わるでしょう。 'Filenames'の値が返ってきたらそれを再度チェックし、その中のすべての値が文字列であることを確認してください。 – Mikegrann

答えて

2

が、私は[この](http://www.cpearson.com/Excel/VBAArrays.htm)だと思う

If IsArray(FileNames) Then... 
+0

それはありがとう! – Mike

+0

ようこそ – user3598756

関連する問題