- ベストアンサー
マクロの選択が上手くできない
- マクロを使って最終の日付と最終から7日前の範囲を選択する処理を作成していますが、うまく動作しません。
- 選択されるセルの範囲が期待と異なっています。
- 問題がどこにあるのか分からず困っています。どうしたら正しく動作するようになるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ついでに なんであなたのマクロが正常に動作しなかったかを説明 b1 = .Cells(Rows.Count, 2).End(xlUp) 'これではb1はセルの中身、つまり日付データになります b2 = .Cells(Rows.Count, 2).End(xlUp).Offset(-7, 0)'同上 .Range(.Cells(b2), .Cells(b1)).Select'つまり全くトンデモナイところを選択しているわけです セルの中身ではなくセル番地を代入するには b1 = .Cells(Rows.Count, 2).End(xlUp).Address’直接最終のセル番地をA1形式で b2 = .Cells(Rows.Count, 2).End(xlUp).Offset(-7, 0).Address .Range(b2, b1).Select 若しくは b1 = .Cells(Rows.Count, 2).End(xlUp).Row’最終セルの行番号 b2 = .Cells(Rows.Count, 2).End(xlUp).Offset(-7, 0).Row .Range("B" & b2,"B" & b1).Select こんな形になります 変数の宣言もAddressで読み込む場合は LongではなくStringに変更が必要 その他には Sub 直近1週間の範囲を選択() Dim b1 As Range Dim b2 As Range With Worksheets("集計用") Set b1 = .Cells(Rows.Count, 2).End(xlUp) Set b2 = .Cells(Rows.Count, 2).End(xlUp).Offset(-7, 0) .Range(b2, b1).Select End With End Sub こんな形式でも
その他の回答 (1)
- web2525
- ベストアンサー率42% (1219/2850)
Sub 直近1週間の範囲を選択() Range("B" & Rows.Count).End(xlUp).Offset(-6, 0).Resize(7, 1).Select End Sub これでいいのかな?
お礼
朝早くから回答ありがとうございます。 その列単体ならこの記述で完璧です。しかし、私は日付の列と違う列を選択して別のシートに貼り付けを数シート繰り返したいので、変数を使用して範囲を選択したいのです。分かっているのっであれば教えて頂けないでしょうか?宜しくお願い致します。
お礼
日付のシリアル値でセル番地を設定しているからおかしな事になったという事でしょうか?なので、日付のシリアル値じゃなく、セル番地を指定するんだよとしなければいけなかったという事なんでしょうか?いずれにしても、思い通り動くのでとても感謝しています。ありがとうございました。