- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBA SelectedItems)
Excel VBAでのSelectedItemsの格納方法についての疑問
このQ&Aのポイント
- Excel2003のVBAでWith .FileDialog(msoFileDialogFolderPicker)の処理内で、.SelectedItemsを配列に格納しようとすると、引数は省略できないとエラーになることがあります。この原因は、.SelectedItemsが配列ではなくコレクションであるためです。
- しかし、.SelectedItemsを配列に格納する方法もあります。まず、.SelectedItemsを一時変数に格納するために、Dim tmp As Variantと宣言します。その後、tmp = .SelectedItemsとすることで、.SelectedItemsを一時変数に格納できます。ただし、これは複数選択した場合でも最初の選択項目のみ格納されます。
- with文から早く脱するためには、.ShowがTrue(ユーザーが選択した)場合のみ処理を実行します。その後、for each eachFiles in .SelectedItems(1)とすることで、.SelectedItemsの各項目に対して処理を行うことができます。処理が終わった後は、next eachFilesでループを終了します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>tmp=.SelectedItems >と格納しようとすると、引数は省略できないとエラーになるのですが 「.SelectedItems」というのは「Application.FileDialog(msoFileDialogFolderPicker).SelectedItems」のことですよね? では「Application.FileDialog(msoFileDialogFolderPicker).SelectedItems」をウォッチ式に追加して、ステップインデバッグしてみてください。 フォルダを選択した時点で「.SelectedItems」の「型」が「Object/FileDialogSelectedItems」となっているかと存じます。 「Object型」を変数に代入する場合は、[Set ステートメント] を用いなければなりません。 なさりたいことがよく分かりませんが、 Set tmp = .SelectedItems でいかがでしょうか?
お礼
分かりました!上手くいきました。初歩的な質問のうえ、質問文にも書き間違いがあったみたいで、すみません。有難うございました。