- 締切済み
別bookのセルを参照するにはどうしたらよいでしょうか
Next Forを使用したマクロで、そのNext For構文内で、別ブックのセルを参照したいのですが、どうしたらよいでしょうか。 下記のように作成してみたのですが、テストしてみると、同ブック同シートの該当セルを参照しているようで、機能しません。下記の書き方では間違っているのでしょうね・・・。 マクロ初心者で、とても初歩的な質問で申し訳ないのですが、教えていただきたく質問させていただきました。よろしくお願いします。 必要なブックは開いている状態です。 Cells(i,_)はbook1・シート"AAA"のi行・_列目を参照し、 Cells(n,_)はbook2・シート"BBB"のn行・_列目を参照し、 Cells(s,_)はbook2・シート"BBB"のセルを参照してほしいのですが・・・。 (1) book1・シート"AAA"のi行18列目のセルとbook2・シート"BBB"のn行・1列目の値が同じであれば (2) (book2・シート"BBB"のn行・1列目)の1行下をs行目としてs行・4列目のセルとbook1・シート"AAA"のi行28列目のセルが同値であれば (3) s行4列目からs行9列目を”ClearContents”するという内容です。下記のマクロは全て記述しておりませんが、ここが間違っているのは確実だと思います。今後の勉強にも是非生かしていきたいと思っておりますので、どうぞよろしくお願いいたします。 Sub test01() Dim n As Long Dim i As Long Dim s As Long For i = 6 To Workbooks("book1.xlsx").Worksheets("AAA").Cells(Rows.Count, 16).End(xlUp).Row If Cells(i, 16) = "" Then Exit For Else For n = 4 To Workbooks("book2.xlsx").Worksheets("BBB").Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 16) <> "" And Cells(i, 18).Value = Cells(n, 1).Value Then For s = n + 1 To Workbooks("book2.xlsx").Worksheets("BBB").Cells(Rows.Count, 4).End(xlUp).Row If Cells(s, 1) <> "" Then Exit For ElseIf ..............
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Sinogi
- ベストアンサー率27% (72/260)
参考になれば Sub test() Dim SH1 As Worksheet Dim SH2 As Worksheet Dim i As Integer Set SH1 = Workbooks("Book1.xls").Worksheets("Sheet1") Set SH2 = Workbooks("Book2.xls").Worksheets("Sheet2") For i = 1 To 5 If SH1.Cells(i, 1) = SH2.Cells(i, 1) Then SH1.Cells(i, 2).Value = "同じ" Else SH1.Cells(i, 2).Value = "×" End If Next i End Sub
- Sinogi
- ベストアンサー率27% (72/260)
>別ブックを参照しなくてはならないセルが多数ありまして、始めになにか定義をして、省略できないかと思ったのですが・・・。 コード内でアクティブにしたいシートをActivate で明示的にアクティブにし、参照する別ブックをWith宣言すれば、ちょっと見やすくなるかな? 定数宣言して代入しておくのが簡単とも思う
- Sinogi
- ベストアンサー率27% (72/260)
>下記のように作成してみたのですが、テストしてみると、同ブック同シートの該当セルを参照しているようで、機能しません。 >If Cells(i, 16) <> "" And Cells(i, 18).Value = Cells(n, 1).Value Then どうみてもセルしか指定していないのでアクティブシートでの比較だと思います。 For文でしているように Workbooks("book2.xlsx"). から指定してはいかがですか?
お礼
迅速なご回答ありがとうございます。 確かにご指摘のとおりだとおもいます。別ブックを参照しなくてはならないセルが多数ありまして、始めになにか定義をして、省略できないかと思ったのですが・・・。 ご指摘いただいた通り、やり直してみようと思います。 ありがとうございました。
補足
何度もお手数をおかけしてすみません。 >定数宣言して代入しておく とはiとnとsの参照先ブックをあらかじめ宣言するということでしょうか。