[[20110527174041]] 『マクロで並び替え』(りりあん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロで並び替え』(りりあん)
Excel2002,WindowsXP

 支店名を並び替えるマクロを考えています。
 マクロでユーザー設定に登録している項目で並び替えをしたいと思います。
 自分のPCでしたらデータ⇒並び替え⇒オプション⇒で並び替えをしたい項目を設定
 すればよいのですが、何台かのPCで同じマクロを使っての作業をしたいと思って
 いま す。

 ユーザー設定に登録している順番が違っている為、私が登録したマクロを他のPCで
 マクロを実行すると並び替えのオーダー番号が違う為並び替えが出来ません。

 ユーザー設定を使用しないで任意の並び替えが出来る事は出来ますか?
 ちなみに並び替えをしたい順番ですが・・・
 札幌支店・青森支店・八戸支店・岩手支店・仙台支店・・・といった感じです。

 リストはA列〜AC列まであり、B列の支店名を上記の順番で並び替えをしたいの
 です。
 ※作成するたびにリストの件数は増減します。

 ユーザー設定を使用しないで任意の並び替えは無理と言うようでしたらマクロで
 データ⇒並び替え⇒オプション⇒で並び替えをしたい項目を指定するような方法でも
 いいです。
 『並び替えの順序を指定してください』みたいなメッセージとかが出るといいのです
 が・・・

 よろしくお願いします。

 17:41 りりあん

 ユーザー設定リストの番号を返すものに GetCustomListNum メソッド があります。
取得した番号を引数OrderCustomに指定。
詳しくはヘルプを参照のこと。
こう言うケースを回避するために、支店番号を割り振ったりもしますね。
(みやほりん)(-_∂)b


ユーザー設定リストに並び順のリストを追加しておいてください。
並び替えのダイアログを表示させて、オプションでユーザー設定したリストを選択させればよいかと

 Sub test()
 Dim las As Long
 With Sheets("Sheet1")

     las = .Range("A" & Rows.Count).End(xlUp).Row
     .Range("A1:AC" & las).Select
    MsgBox "並べ替えの設定をしてOKボタンを押してください。しない場合はOKボタンを押してください。"
    Application.Dialogs(xlDialogSortSpecial).Show
    .Range("A1").Activate
 End With
 End Sub

ma


 みやほりんさんご回答ありがとうございます。
 メゾットもう少し勉強してみます。(@_@。

 maさんマクロのコードありがとうございます。
 この内容だとSheet1でマクロを実行するという内容ですか?

 すみませんがシート名を固定しないどのシートでもマクロが
 実行できるようにしたいのですが・・・

 5/28 9:14 りりあん

 昨日“みやほりん”さんに教えてもらったマクロのコードとmaさんのマクロのコードを少し
 いじって見ました。
 (マクロ初心者でコードの意味がわからないので多分変なコードがあると思いますが・・・)

 途中でコンパイルエラーが出てしまいました。
 どうしたら良いでしょうか?

    Dim myRow As Long
    myRow = Range("A" & Rows.Count).End(xlUp).Row
    Range("A1:AC" & las).Select
    MsgBox "並べ替えの設定をしてOKボタンを押してください。"
    Application.Dialogs(xlDialogSortSpecial).Show
    Range("A1").Activate
    Range("AB2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-15]=""*"",IF(MOD(RC[-19],2)=1,1,2),RC[-15]="""")"
    Range("ab2").Copy Range("ab3:ab" & Range("g" & Rows.Count).End(xlUp).Row)
    Application.CutCopyMode = False
    Columns("AB:AB").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
     Dim myC As Range
     Dim myRow As Long ⇒ココでコンパイルエラーが出ました。
     myRow = Range("A1").CurrentRegion.Rows.Count
     Cells.Font.ColorIndex = xlColorIndexAutomatic
     For Each myC In Range("AD1:AB" & myRow)
         Select Case myC.Value
         Case Is = "1"
             myC.EntireRow.Font.ColorIndex = 11
         Case Is = "2"
             myC.EntireRow.Font.ColorIndex = 41
         End Select
     Next myC

 既に一行目で 変数 myRow を宣言しています。
 同一プロシージャ内で二度は宣言できませんので、削除です。
 (seiya)

 seiyaさんありがとうございました。

 無事出来ました。

 12:43 りりあん

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.