アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel2003のVBAで
  With .FileDialog(msoFileDialogFolderPicker)
     .AllowMultiSelect = True '複数選べる
    If .Show =true Then

      for each eachFiles in .SelectedItems(1)'←ここ
        (いろいろ処理)
      next eachFiles
    End If
  End With
  
という処理はよく使うと思います。ここで、
Dim tmp As variant と宣言しておいて
tmp=.SelectedItems
と格納しようとすると、引数は省略できないとエラーになるのですが、考え方のどこが間違っているのでしょうか?
.SelectedItemsって配列だから、このやり方で格納できると考えたのですが、何がダメなのでしょうか?

原因が分かったとして、格納だけは兎に角したいのですが、どうすればいいでしょうか。
格納して、with文に縛られた状態から早く脱したいです。

A 回答 (1件)

>tmp=.SelectedItems


>と格納しようとすると、引数は省略できないとエラーになるのですが
 「.SelectedItems」というのは「Application.FileDialog(msoFileDialogFolderPicker).SelectedItems」のことですよね?

 では「Application.FileDialog(msoFileDialogFolderPicker).SelectedItems」をウォッチ式に追加して、ステップインデバッグしてみてください。

 フォルダを選択した時点で「.SelectedItems」の「型」が「Object/FileDialogSelectedItems」となっているかと存じます。

 「Object型」を変数に代入する場合は、[Set ステートメント] を用いなければなりません。


 なさりたいことがよく分かりませんが、
Set tmp = .SelectedItems
でいかがでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/01/09 23:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!