14歳の自分に衝撃の事実を告げてください

【質問したい事】
マクロが保存されているブックとは別のブックに
対して、for next ステートメントを実行したいです

以下コードまで考え、普通に動いています
これで良いのでしょうか?

For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
の文から、何も、別ブック・別シートについて、指定してないのですが
ちゃんと、別ブックに飛んで動いています

理屈等、分かる方いましたら、教えてください

【別のブックに対してのfor nextステートメント】
Sub 抽出()

Dim kagamibook As Workbook

Dim kagamisheet As Worksheet

Dim filePath As String

filePath = "C:\Users\2020\OneDrive\マクロ\240820_あいうえお.xlsm"


Set kagamibook = Workbooks.Open(filePath)

Set kagamisheet = kagamibook.Sheets("ボタン作成先シート")


For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row

If Cells(i, 3) = "条件1" Or Cells(i, 3) = "条件1" Then


Cells(i, 5) = Cells(i, 1)

End If

Next i

End Sub

A 回答 (2件)

理屈はNo.1にある通りで、たまたま操作したいシートがアクティブになっただけなので、「これで良いのでしょうか?」についてはあまり良くないですね。

操作したいシートを明示的に指定するかActivateした方が間違いないです。
    • good
    • 2
この回答へのお礼

気になるようであれば、アクティブですね
>作したいシートを明示的に指定するかActivate

ご指摘ありがとうございました

お礼日時:2024/08/23 07:04

こんにちは



>理屈等、分かる方いましたら、教えてください
For文の中に記述している「Cells(i, 3)」等は、ブックもシートも指定していないので、エクセルは暗黙の指定としてアクティブシートのセルとして解釈します。
単純に、そういう仕組みになっているだけです。

意図してかどうかはわかりませんけれど、For文の前で、
> Set kagamibook = Workbooks.Open(filePath)
で、「240820_あいうえお.xlsm」のブックを開いていますので、その結果、開いたブックがアクティブになります。
一方で、アクティブなシートは、そのブックの成り行きです。
たまたま保存時のシートが質問者様が意図したシート(=ボタン作成先シート?)
だったのではないかと想像します。

別のシートをアクティブにした状態で保存してあると、次に開いた際にはそちらのシートがアクティブになりますので、ご提示の処理を実行した場合は、そちらのシートに対して実行されることになると思われます。
    • good
    • 2
この回答へのお礼

アクティブなブックやシートを、マクロはまずよんでいくんですね
こちらは、意図していなかったです
大変、勉強になりました。ありがとうございます

お礼日時:2024/08/23 07:03

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A