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ランキング
-
リスト構造のソートで悩んでま...
-
C# DataGridView のヘッダーセ...
-
C言語でファイルの中身をソー...
-
C++ 入力した3つのint型の整数...
-
VBScriptで配列のソートをする...
-
C言語・要素除去
-
mysqlで日本語の並び替え
-
C言語について
-
C# DataTableの行をソートしてD...
-
System.IO.Directory.GetFiles...
-
構造体配列の並べ替え
-
listboxの並び替え
-
VB.NETでファイル名順にファイ...
-
コレクションの数値をSortで並...
-
VBA基本構文の作り方 2列の...
-
GridViewで列のソートを無効に...
-
ファイル名「1.jpg ~10.jpg~...
-
列のどこをクリックしてもソー...
-
自己参照構造体を使った2分探...
-
C言語 配列の長さの上限
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
VB.NETでファイル名順にファイ...
-
C# DataGridView のヘッダーセ...
-
ファイル名「1.jpg ~10.jpg~...
-
C# DataTableの行をソートしてD...
-
あるディレクトリ内のファイル...
-
excel VBA の条件をつけての列...
-
excel VBA リストビューの行...
-
DataGridViewの複数列を連動し...
-
文字列をソートする方法
-
Excelですべての組合せ(重複組...
-
列のどこをクリックしてもソー...
-
n番目に大きい数を求めるアル...
-
Excel VBAで並べ替えをしたい
-
DataGridViewの昇順降順。
-
vbでDataTableの抽出コピー
-
数字文字列のソート方法
-
VB6でデータを昇順に並べ替える
-
VBScriptで重複レコードを削除...
-
ListViewのソートについて
おすすめ情報