• ベストアンサー
※ 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でループを終了します。

質問者が選んだベストアンサー

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

>tmp=.SelectedItems >と格納しようとすると、引数は省略できないとエラーになるのですが  「.SelectedItems」というのは「Application.FileDialog(msoFileDialogFolderPicker).SelectedItems」のことですよね?  では「Application.FileDialog(msoFileDialogFolderPicker).SelectedItems」をウォッチ式に追加して、ステップインデバッグしてみてください。  フォルダを選択した時点で「.SelectedItems」の「型」が「Object/FileDialogSelectedItems」となっているかと存じます。  「Object型」を変数に代入する場合は、[Set ステートメント] を用いなければなりません。  なさりたいことがよく分かりませんが、 Set tmp = .SelectedItems でいかがでしょうか?

absolute_space
質問者

お礼

分かりました!上手くいきました。初歩的な質問のうえ、質問文にも書き間違いがあったみたいで、すみません。有難うございました。

関連するQ&A

専門家に質問してみよう