プロが教える店舗&オフィスのセキュリティ対策術

●ソートさせるときの範囲を、データ最終位置まで自動で取得してソートさせたいです。。とりあえずエリアを指定してのソートは出来ました!
Range("A5:AQ120").Sort _
Key1:=Range("b5"), _
Order1:=xlAscending, _
Header:=xlYes
●列の幅を指定したいのですが、F~データのある最終列にしたいです。。
Columns("F:K").ColumnWidth = 12

A 回答 (3件)

こんばんは!



一例です。

Sub Sample1()
Dim lastRow As Long, lastCol As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row '←A列で最終行取得//
lastCol = Cells(5, Columns.Count).End(xlToLeft).Column '←5行目で最終列取得//
Range(Cells(5, "A"), Cells(lastRow, lastCol)).Sort key1:=Range("B5"), order1:=xlAscending, Header:=xlYes
Range(Columns("F"), Columns(lastCol)).ColumnWidth = 12
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 1
この回答へのお礼

ありがとうございます!初心者の私にはわかりやすかったです^^ 動作、バッチリでした!!覚えておいて今後どんどん活用していきたいです!

お礼日時:2016/03/05 21:14

最終行の取得としては、たとえば、


Dim LstRow As Long
LstRow=Cells(Rows.Count,1).End(xlUp).Row
で行けます。
つまり、A列の最終行から上に遡ってぶち当たる行、ということです。

同様に最終列の取得は、たとえば
Dim LstCol As Long
LstCol =Cells(1,Columns.Count).End(xlToLeft).Column
で行けます。
1行目の最終列から左に遡ってぶち当たる列、ということです。

データの入力状況に応じて、上記の「A列」や、「1行目」のところはアレンジしてください。

それを踏まえて、ご質問の状況に当てはめれば、たとえば以下。

Dim Rng1 As Range, Rng2 As Range, LstRow As Long, LstCol As Long
LstRow=Cells(Rows.Count,1).End(xlUp).Row   ’最終行を変数LstRowに入れる
LstCol =Cells(1,Columns.Count).End(xlToLeft).Column ’最終列を変数LstCol に入れる

Set Rng1 = Range(Cells(5,1),Cells(LstRow,43)) 'A5~AQ最終行の範囲を変数Rng1に格納
Rng.Sort _
Key1:=Cells(5,2), Order1:=xlAscending,Header:=xlYes

Set Rng2 = Range(Columns(6),Columns(LstCol)) 'F列から最終列の範囲を変数Rng2に格納
Rng2.ColumnWidth=12

Set Rng1=Nothing
Set Rng2=Nothing

とか。
    • good
    • 0
この回答へのお礼

ありがとうございます、初心者の私には少し難しかったですが、遡ってぶち当たるという概念がわかりやすかったです!Rngに格納というのを使った事がまだありませんでしたので、大変参考になりました。

お礼日時:2016/03/05 21:18

最終行を取得する場合は、


Cells(1, 1).End(xlDown).Rowです。

http://excel-ubara.com/excelvba4/EXCEL222.html
こちらに詳しく載っていますので参考になさってください。
    • good
    • 0
この回答へのお礼

ありがとうございます、ご案内いただきましたサイトを拝見させていただき参考になりました!

お礼日時:2016/03/05 21:13

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

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


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