Excel VBA質問箱 IV

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

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


52636 / 76732 ←次へ | 前へ→

【28931】Re:Sortメソッド
回答  Hirofumi  - 05/9/18(日) 16:24 -

引用なし
パスワード
   >A列  B列  C列    D列  E列  F列  ←列番号
>職務 氏名 社員番号 点数A 点数B 点数C ←見出し
> S  ○○ ○○○○  ○   ○   ○
> M  ○○ ○○○○  ○   ○   ○
> S  ○○ ○○○○  ○   ○   ○  
> S  ○○ ○○○○  ○   ○   ○
> M  ○○ ○○○○  ○   ○   ○
> M  ○○ ○○○○    
> J  ○○ ○○○○    
> J  ○○ ○○○○    
> S  ○○ ○○○○    
>
>このときワークシート上のコマンドボタンで並べ替えのマクロを起動しようと思ってます。
>職務を並べ替えの基準にするため、ボタンを押すと、S、M、J別にソートされれば良いのですが先頭のSと書いてあるセルがA7なので
>
>Private Sub 整列ボタン_Click()
>  
>  Range("A7").Sort key1:=Range("A7"), header:=xlNo, sortmethod:=xlPinYin
>    
>End Sub
>
>としましたが、「同じサイズの結合セルが必要です」というエラーが出てしまいます。ちなみに7行目以降には結合セルはありません。
>やりたいのは、A列を基準として職務別に並べ替えを行い、行単位で整列させることです。どのようにすればよいのでしょうか?
>ちなみに上図のように点数は未入力のものも存在します。
>よろしくお願いします。

列見だしに結合セルが有るのですか?
セル1つを範囲として、Sortを実行すると
CurrentRegionを同じ様に連接する範囲が整列範囲になる様です
詰まり、「Range("A7").Sort」なので、6行目も整列範囲と見なされる様です
因って、整列範囲を指定して整列を実行して見たら?

Private Sub 整列ボタン_Click()

  'Listの列数
  Const clngColumns As Long = 6
  
  Dim lngRows As Long
  
  'Listの先頭セル位置を基準とする
  With ActiveSheet.Cells(7, "A")
    '行数を取得
    lngRows = .Offset(65536 - .Row).End(xlUp).Row - .Row + 1
    If lngRows <= 1 Then
      Exit Sub
    End If
    '範囲を整列
    .Resize(lngRows, clngColumns).Sort _
        Key1:=.Item(1, 1), Order1:=xlAscending, _
        Header:=xlNo, OrderCustom:=1, _
        MatchCase:=False, Orientation:=xlTopToBottom, _
        SortMethod:=xlCodePage
  End With
  
End Sub

1 hits

【28929】Sortメソッド toki 05/9/18(日) 14:04 質問
【28930】Re:Sortメソッド みみ 05/9/18(日) 16:13 回答
【28934】Re:Sortメソッド toki 05/9/18(日) 20:00 お礼
【28931】Re:Sortメソッド Hirofumi 05/9/18(日) 16:24 回答
【28933】Re:Sortメソッド toki 05/9/18(日) 19:57 質問
【28935】Re:Sortメソッド toki 05/9/18(日) 21:14 お礼

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