Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5239 / 13646 ツリー ←次へ | 前へ→

【51980】ソートに関して おタケ 07/10/14(日) 12:46 質問[未読]
【51981】Re:ソートに関して Hirofumi 07/10/14(日) 13:03 回答[未読]
【51990】Re:ソートに関して おタケ 07/10/14(日) 23:34 お礼[未読]

【51980】ソートに関して
質問  おタケ  - 07/10/14(日) 12:46 -

引用なし
パスワード
   初めまして。ソートに関して質問します。

Range("A4:G22").Select
Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlStroke
Range("A4").Select

このまま使う分には問題ないのですが、
・ソート範囲
・キーセル
の部分を変数に置き換えると動かなくなります。

Sub MainMacro()
Dim sortuser As Range

sortuser = UserSort(Range("A4:G100"), Range("A4"), "sheet1")

End Sub

Function UserSort(sellRange As Range, celKye1 As Range, sheetname As String)

Workcheets(sheetname).Activate
Range(sellRange).Select
Selection.Sort Key1:=Range(celKye1), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlStroke
Range("A4").Select
End Function

指定の仕方が間違っているのでしょうか。
アドバイスお願いいたします。

【51981】Re:ソートに関して
回答  Hirofumi  - 07/10/14(日) 13:03 -

引用なし
パスワード
   >Function UserSort(sellRange As Range, celKye1 As Range, sheetname As String)

>Workcheets(sheetname).Activate
>Range(sellRange).Select ★?
>Selection.Sort Key1:=Range(celKye1) ★?, Order1:=xlAscending, Header:=xlGuess, _
>OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
>:=xlStroke
>Range("A4").Select
>End Function

>指定の仕方が間違っているのでしょうか。
>アドバイスお願いいたします。

引数がRangeで渡されているのに、★印の部分でそれのRangeを取っているからでは?
後、戻り値を返さないのだから、Functionでは無く、Subで
私の場合は、以下の様にしています

引数rngScope、rngKeyは、Book、Sheet等で修飾したRangeを渡せば善いと思います

Sub MainMacro()

  With Worksheets("Sheet1")
    DataSort .Range("A4:G100"), .Range("A4")
  End Wirh

End Sub

Private Sub DataSort(rngScope As Range, _
          rngKey As Range, _
          Optional lngOrientation As Long = xlTopToBottom)

  rngScope.Sort _
      Key1:=rngKey, Order1:=xlAscending, _
      Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
      Orientation:=lngOrientation, SortMethod:=xlStroke

End Sub

【51990】Re:ソートに関して
お礼  おタケ  - 07/10/14(日) 23:34 -

引用なし
パスワード
   Hirofumiさん
返信ありがとうございます。


>引数がRangeで渡されているのに、★印の部分でそれのRangeを取っているからでは?
自分の書き方だと★部分でRange取れているんですか。なるほど・・・

>後、戻り値を返さないのだから、Functionでは無く、Subで
Private Sub でやればよかったのですね!
その辺すっ飛ばして書いていたので、基本がわかってなくてお恥ずかしい;

>私の場合は、以下の様にしています
教えていただいた方法でできました!
Kye増やしても問題なくうごきました(テストデータ量少ないですが;)
助かりましたありがとうございます。

5239 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free