- ベストアンサー
VBAコードでファイル内のセルを調査し、別のファイル内のセルをクリアする方法
- VBAを使用して、試験1のファイル内のD1〜D20のセルに何か入力されている場合に、試験2のファイル内のB1〜B20のセルをクリアする方法を教えてください。
- 上記の要件を満たすVBAコードを考えましたが、うまく動作しません。解決策を教えてください。
- 質問者はVBAの勉強が不足していると述べています。質問に対する回答をお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
(-ω-;)ウーン、変数や引数が単なるフィーリングで指定して合って、人間ならわかるけど、VBAは確かにわからないかも。 こんな風にすればいいです。 Sub test() Dim a As Variant Dim i As Variant Set a = Workbooks("試験2.xlsx").ActiveSheet With Workbooks("試験1.xlsx").ActiveSheet For i = 1 To 20 If .Cells(i, 4) <> "" Then a.Cells(i, 2).Clear End If Next i End With End Sub Workbooksコレクションのそれぞれのオブジェクトを指定するときは、拡張子も書いておきます。.xlsは書かなくてもいいのかもしれませんが、少なくとも今の場合、私の手元では拡張子.xlsxを書かないと走りませんでした。 またCellsプロパティの引数は数字で指定します。 でわでわ。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
この質問の意図がはっきりしないのは、VBAのイベントという考え方に関連した質問なのか,はっきりしないことです。 (1)試験1のSheet1は作業時点で完成した(静止した)データとみて、試験2のブックシートを開いて試験1のデータに対応するセルに結果を作りたいということか (2)イベント的な仕組み 試験2のSheet1のD列セルをクリックし他機会をとらえて、データを入力したデータによって、試験2のブックシートを開いおいて、試験1のデータに対応するセルに結果を作りたいということか >セルを1つ1つ調べる、という表現から質問は(1)のことらしいが、(2)の方は初心者的課題ではないが、往々にして初心者の考え(思っていること)に沿うものであるからはっきりさせておく方がよい。 ーー 質問のコードは試験1のシートと試験2のシートの区別が、コード的に書けていない。 私見では、初心者が初めの課題として、別ブックのデータを扱うのは適当でないと思う。 A同一シート B別シート C別ブックシート の順に学習すべきだ。 ーー しかし、こんな質問コーナーを頼らずとも、Googleなどで 「エクセルVBA 他ブックのシートを参照」で照会すべきだ。 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_070_11.html の 「シートやブックを越えたRangeオブジェクト取得」の 下記部分をじっくり学ぶべきだと思う。 Set objWBK = ThisWorkbook Set objSH = objWBK.Worksheets("Sheet3") Set objR = objSH.Range("A1").Offset(1, 1).Resize(5, 4) objR.Value = "aaa" ーー >宜しければコードを書いてくれると助かります なるべく丸投げしないこと。 年月が経ち、内容が充実したので、今どきWEBで説明されてない事項は、よっぽどの特殊問題である。
お礼
拡張子書くの忘れてましたm(__)m 思った結果が出ました! めちゃくちゃ助かりました ありがとうございますm(__)m