重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

エクセルVBAで範囲の指定をしたいです(初心者)

列AからJがデータが入る範囲です。
列AとBとCには必ず数値等が何かしら入ります。
列Dは常に空白です。
列E以降は何か入ることも入らないこともあります。

7行目までデータがある場合、
A1セルからこの場合はJ7セルまでを範囲指定したいのですが
行数は未定なので、
Range("A1").Select
Range(Selection,Selection.End(xlDown)).Select
でA列のデータ最終行まで下がり、そこから9つ右の列までを
範囲指定するというのがよくわかりません。
自動記録で絶対参照と相対参照を切り替えてやってみたのですが、
どうしても
Range(Selection, Selection.End(xlDown)).Select
ActiveCell.Range("A1:J7").Select
と常にA1からJ7が指定になってしまいます。
バージョンは2003です。
つたない質問文で申し訳ありませんが、
どなたか宜しくお願いいたします。

「エクセルVBAで範囲の指定をしたいです(」の質問画像

A 回答 (3件)

4つのコードを書きました。

それぞれで調べてみてください。
段階的に書きました。基本的には、標準モジュールに書きます。

元のコードを直すと、
Sub Test1()
Range("A1").Select
Range(Selection, Selection.End(xlDown).Offset(, 9)).Select
End Sub

次に、少しマクロらしくすると
Sub Test2()
Range("A1", Range("A1").End(xlDown).Offset(, 9)).Select
End Sub

もう少し、マクロらしくすると、
Sub Test3()
Dim i As Long
i = Range("IV1").End(xlToLeft).Column
Range("A1", Range("A1").End(xlDown).Offset(, i - 1)).Select
End Sub

より実践的に書くと以下のようになります。

Sub Test4()
Dim i As Long, j As Long
If WorksheetFunction.CountA(Cells) = 0 Then Exit Sub
With ActiveSheet.UsedRange
'Range("A1").SpecialCells(xlCellTypeLastCell) 'これは思ったようには行かない
 j = .Cells(.Cells.Count).Column
 i = .Cells(.Cells.Count).Row
End With
Range("A1", Cells(i, j)).Select
End Sub
    • good
    • 0
この回答へのお礼

できました、できました!

このようなつたない質問文しか書けないような初心者でも
理解できるような易しいマクロ文から実践まで示していただき
大変参考になりました。
とても感謝しております。
まだまだこれから勉強をしていこうと思いますので
またお世話になることがあるかと思いますが、
なにとぞ宜しくお願いいたします。

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

お礼日時:2010/08/20 01:39

Range(Selection, Selection.End(xlDown)).Select


Columns("A:J").Select
では、だめですか?
    • good
    • 0
この回答へのお礼

ありがとうございます。

教えていただいた文ですと、エクセルの最終行まで範囲指定になり、
2行目以降のセルへの貼り付けができませんでした。

私がちゃんと、範囲指定後2行目以下へ貼り付けると書かなかったのが
いけませんでした。すみません。

ただ逆に最終行までを指定したい場合教えていただいた方法が
大変有効ですので使わせていただきます。

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

お礼日時:2010/08/20 01:42

マクロ記録時のキー操作が間違えています。




選択したセルから最終セルまで自動的に範囲を取得するなら、Ctrl+Shift+Endのキー操作です。

Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select

表内のデータ範囲を自動取得するなら(A1セルを選択して)Ctrl+Shift+*の操作を行います。

Range("a1").CurrentRegion.Select
    • good
    • 0
この回答へのお礼

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

示していただいた方法ですと、C列までしか範囲指定できないようですが、
ただ、全てのセルにデータが入っている場合には大変有効ですので
そのような場合に使わせていただこうと思います。

お礼日時:2010/08/20 01:45

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