• 締切済み

エクセル VBA リストボックスからの動きについて

エクセルでどうにかできないかと悩んでおります。 自分一人ではいいアイデアが浮かばないので皆様のお知恵を拝借いたしたく出させていただきます。 Private Sub CommandButton1_Click() With ListBox1 For i = 0 To .ListCount - 1 Windows("元データ.xls").Activate If .Selected(i) = True Then a = Cells(i + 2, 1) b = Cells(i + 2, 2) Windows("書き込みたいファイル.xls").Activate With Range("A20").End(xlDown).Offset(1, 0) .Offset(0, 0) = a .Offset(0, 2) = b という形で作っていますが、よく考えると『書き込みたいファイル』は 名前が色々変わってしまうファイルになっているので、それでも動くようにしたいのです。 上記2種類のファイル以外を閉じてしまう・・・という形は自分でも考えたのですが、 特定多数の人間が使うため、あまり制限をかけた状態では使いたくないのが現状です。 出来れば他のファイルを閉じたりしないようにしたいと思います。 皆様のお知恵をいただければ幸いと思いますので宜しくお願いいたします。

みんなの回答

  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.1

まずはこのマクロはどのブックに記述されているのでしょうか? 元データ.xlsに存在するのであれば、ボタンをクリックする前にシートなりフォーム上なりにファイル名を記録しておく。 書き込みたいファイル.xlsに存在するのであれば、Thisworkbookを使うとか・・・ 全く関係ない話ですが、windows("書き込みたいファイル名").Activate という書き方では、該当ブックにシートが1枚ならともかく複数シートがあった場合、意図した場所にデータの書き込みが出来ない恐れがあります。 Workbooks("書き込みたいファイル名.xls").Sheets("Sheet1").Activate といった書き方のほうがよいと思います。

関連するQ&A