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

列ごとにデータを増やしていく予定があります。
そして、行1 のデータを基準に列の順番を昇順で並べ替えたいです。
ひとつの列に何行のデータが入るかは未定なので、ソートのたびにシート全体を選択する必要があります。
マクロの記録でおよそ以下のようになりました。
これをボタンに割り当てたいと思うのですが、

《Key:=Range("A1:C1"),》
《.SetRange Range("A1:C87")》

という記述があります。
このままだと《ソートのたびにシート全体を選択する》ことはできませんよね?
常に《ソートのたびにシート全体を選択する》ために、どのように書き換えれば良いでしょうか?
教えてください。

Sub Macro3()

Cells.Select
ActiveWorkbook.Worksheets("語彙").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("語彙").Sort.SortFields.Add Key:=Range("A1:C1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("語彙").Sort
.SetRange Range("A1:C87")
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With

End Sub

A 回答 (2件)

こんばんは。



例えば、下記の様な記載は、どうでしょうか?

《Key:=Range("A1:C1"),》
→Key:=Range(Range("A1"),Cells(1, Columns().Count).End(xlToLeft))
https://www.sejuku.net/blog/28094

《.SetRange Range("A1:C87")》
→.SetRange Range("A1").CurrentRegion

A1セルを基準に、空白セルで囲まれた範囲を取得
https://kabu-macro.com/detail.php?dir=word&dir2= …
    • good
    • 0
この回答へのお礼

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

上手くいきました。

お礼日時:2022/01/28 17:50

こんにちは



>常に《ソートのたびにシート全体を選択する》~~
言葉通りに「シート全体」なら
 Cells
を使用すれば「シート内の全セル」の意味になります。
(シートの左上角をクリックしたときと同様です)

とは言え、実際には使用しているセル範囲で良いのでしょうから、
 ActiveSheet.UsedRange
で宜しいのではないでしょうか?
https://docs.microsoft.com/ja-jp/office/vba/api/ …
    • good
    • 0
この回答へのお礼

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

具体的には、

《Key:=Range("A1:C1"),》
《.SetRange Range("A1:C87")》

をどのように書き換えればよろしいですか?

お礼日時:2022/01/28 16:50

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