
Excel VBAについて
Sub mysort降順()
Dim mykey As Range
Dim myrug As Range
Set myrug = Range("C2:E17")
Set mykey = myrug.Columns(3)
Set myrug = 並べ替え(myrug, mykey)
End Sub
Function 並べ替え降順(myrug As Range, mykey As Range) As Range
Dim sorttest As Worksheet ' ソート対象のオブジェクトを指定
Set sorttest = ActiveSheet
With sorttest.Sort
.SortFields.Clear
.SortFields.Add Key:=mykey, _
SortOn:=xlSortOnValues, _
Order:=xlDescending, _
DataOption:=xlSortNormal
.SetRange myrug
.Apply ' ソート実行
End With
End Function
このコードを利用して、降順でソートをかけたいのです。
昇順はできます。
↓のように変更しました。
Function 並べ替え降順(myrug As Range, mykey As Range) As Range
Dim sorttest As Worksheet ' ソート対象のオブジェクトを指定
Set sorttest = ActiveSheet
With sorttest.Sort
.SortFields.Clear
.SortFields.Add Key:=mykey, _
SortOn:=xlSortOnValues, _
Order:=xlDescending, _
DataOption:=xlSortNormal
.SetRange myrug
.Apply ' ソート実行
End With
End Function
降順になりません。
降順のコードは、どこに仕込むのか、お手数ですがご、教示をお願いします。
No.2ベストアンサー
- 回答日時:
現在のコードには、関数並べ替え降順がありますが、サブルーチンmysort降順でそれを呼び出す必要があります。
以下は、修正したコードです。
vbnet
Copy code
Sub mysort降順()
Dim mykey As Range
Dim myrug As Range
Set myrug = Range("C2:E17")
Set mykey = myrug.Columns(3)
' 降順の関数を呼び出す
Set myrug = 並べ替え降順(myrug, mykey)
End Sub
Function 並べ替え降順(myrug As Range, mykey As Range) As Range
Dim sorttest As Worksheet ' ソート対象のオブジェクトを指定
Set sorttest = ActiveSheet
With sorttest.Sort
.SortFields.Clear
.SortFields.Add Key:=mykey, _
SortOn:=xlSortOnValues, _
Order:=xlDescending, _
DataOption:=xlSortNormal
.SetRange myrug
.Apply ' ソート実行
End With
' 並び替えた範囲を返す
Set 並べ替え降順 = myrug
End Function
修正したコードでは、サブルーチン 'mysort降順myrugに代入しています。また、関数並べ替え降順の最後で、並び替えた範囲を返しています。
No.3
- 回答日時:
こんにちは
Sortメソッドの昇順、降順は引数のOrder1 * で行います
https://learn.microsoft.com/ja-jp/office/vba/api …
Functionを昇順、降順用に2つ用意する事も考えられますが
Functionの引数を増やす事でも対応できると思います
xlDescendingの実態(値は2です)
https://learn.microsoft.com/ja-jp/office/vba/api …
少し変なサンプルかも知れませんが・・
Sub mySort()
Dim mykey As Range
Dim myrug As Range
Set myrug = Range("C2:E17")
Set mykey = myrug.Columns(3)
Dim mySortOrder As Integer
Dim rc As VbMsgBoxResult
rc = MsgBox("Sortを実行します" & vbCrLf _
& "昇順は「はい」を" & vbCrLf _
& "降順は「いいえ」を" & vbCrLf _
& "押してください", vbYesNo + vbQuestion)
If rc = vbYes Then mySortOrder = 1 Else mySortOrder = 2
Set myrug = 並べ替え(ActiveSheet, myrug, mykey, mySortOrder)
MsgBox "C2セルの値は " & myrug.Item(1, 1) & " です"
End Sub
Function 並べ替え(sorttest As Worksheet, myrug As Range, _
mykey As Range, mySortOrder As Integer) As Range
With sorttest.Sort
.SortFields.Clear
.SortFields.Add Key:=mykey, _
SortOn:=xlSortOnValues, _
Order:=mySortOrder, _
DataOption:=xlSortNormal
.SetRange myrug
.Apply ' ソート実行
End With
Set 並べ替え = myrug
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) Excel_マクロ_現在開いているシートにマクロを実行したいです 1 2023/02/14 23:54
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ArrayList とSortedList
-
SQLで検索結果の出力件数指定?
-
ArrayListのソートについて
-
Double型ソート方法
-
Fortran77で多次元配列を並び替...
-
jqgrid で 2から3 階層以上の j...
-
シフトJISのソート
-
C# DataGridViewのソート
-
sortの優先キーについて(スプレ...
-
明日までの宿題で困っています...
-
qsort/クイックソートについて
-
多次元配列のソート方法
-
System.IO.Directory.GetFiles...
-
ソートのアルゴリズム
-
リストビューのソートが2回必要
-
C# ArrayListを二次元配列のよ...
-
こんなCGIを知りませんか?
-
C言語のリストのソートについ...
-
C言語・要素除去
-
シェルソートの順位性
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
C# DataGridView のヘッダーセ...
-
VB.NETでファイル名順にファイ...
-
C# DataTableの行をソートしてD...
-
VBA基本構文の作り方 2列の...
-
ファイル名「1.jpg ~10.jpg~...
-
あるディレクトリ内のファイル...
-
GridViewで列のソートを無効に...
-
C言語・要素除去
-
excel VBA の条件をつけての列...
-
Excelですべての組合せ(重複組...
-
VBScriptで配列のソートをする...
-
配列の問題
-
ブック.csvを開かずに他のブッ...
-
2次元配列を複数項目でソートし...
-
構造体配列のソート
-
listboxの並び替え
-
構造体のリストをソートしたい。
-
リスト構造のソートで悩んでま...
-
文字列をソートする方法
おすすめ情報