幼稚園時代「何組」でしたか?

シートA・Bがあり、シートAの変数markが★だったら、シートBへいき、最終行を取得、ということをしたくて以下のようなコードをかきました。

Worksheets("A").Select
Last3 = Cells(6).CurrentRegion.Rows.Count

Worksheets("B").Select
Last1 = Cells(6).CurrentRegion.Rows.Count

For w = 1 To Last1
Worksheets("B").Select
Mark = Cells(w, 26)

If Mark = "★" Then
Sheets("A").Select
Last3 = Cells(6).CurrentRegion.Rows.Count
MsgBox Last3
End If

Next

ですが、シートAの最終行が表示されます。

どこがちがうのでしょうか?

A 回答 (3件)

質問が間違えているのですね。



一応、実行してみましたが、実行されましたよ。
エラーが出ているのでしょうか?
それとも思った結果にならないのでしょうか?

CurrentRegionは最終行を求めるのとはちょっと違い
空白行までを範囲選択するので、
途中で、空白行があるとそこで終わってしまいます。
試しに

sub test()
Worksheets("B").Select
Cells(6).CurrentRegion.Select
end sub

を実行してみてください。
自分が考えている範囲を選択できましたか?

空白がある場合などは、
Last1 = Range("A36635").End(xlUp).Row

にした方がいいと思います。

(この場合はA列で入力されている最後の行番号をLast1にいれています。)

そういう事でない場合は、もう少し具体的な
例えばエラー内容とか
を記述してください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

結果としてはエラーではなく、思うような結果が得られませんでした。

>CurrentRegionは最終行を求めるのとはちょっと違い
空白行までを範囲選択するので、

はい、空白までということなので、空白が絶対にない列(6)を指定してあるので、大丈夫なはずなんです。

どうしてもできなかったので、

Last3 = Sheets("A").Cells(6).CurrentRegion.Rows.Count

として、入力も
Sheets("A").Cells(Last3 + 1, 1) = No

みたいにやってみたらきちんと動作したので、
Last3 = Cells(6).CurrentRegion.Rows.Count

と戻したらきちんとできるようになりました。
なんでなのか自分でもわかりません。

ありがとうございました。

お礼日時:2003/08/20 14:52

マクロをシートに書いていませんか?


もしそうなら、標準モジュールを追加してそこに記述してください。

cells(6)は正しいですか?
#2で指摘されているように確認してみてください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

確認しましたが、Moduleにちゃんとかいてありました。
なぜできるようになったのか不明なんですが…。。

ありがとうございました。

お礼日時:2003/08/20 14:49

おはようございます。



質問とプログラムが逆になってるように思うのですが・・・

プログラムは、
シートBの変数markが★だったら、シートAへいき、最終行を取得

で最終的にシートAの最終行を表示しています。
    • good
    • 0
この回答へのお礼

はい、失礼しました。
質問が逆でした…(^^;

これが実行できないのですが、どこがいけないのかわかりません。。

お礼日時:2003/08/20 10:06

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