[[20111117140013]] 『ユーザーフォームのコマンドボタンで並べ替え』(マッキー) ページの最後に飛ぶ

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

 

『ユーザーフォームのコマンドボタンで並べ替え』(マッキー)

 Excel2007です。

 「商品マスタ」というシートがあり、そのシートに下記のような内容でデータが入っています

    A    B    C
 1 商品ID  種別  商品名
 2 111   消耗品  ○○○
 3 222   資材   △△△
 : :    :    :

 商品IDはVLOOKUPで参照するために昇順で並んでいます。

 これまで新規商品を登録する都度(シートにそのまま手打ち)、データの並べ替えを手動で行っていましたが、
 商品登録のユーザーフォームを作ったので、登録の際に同じユーザーフォームでA列の
 商品IDをキーにして並べ替えまで実行したいと思います。

 ユーザーフォームには「登録」と「並べ替え」のコマンドボタンをそれぞれ配置しました。

 「登録」と同時に並べ替えでも「並べ替え」ボタンを押して並べ替えでもいいのですが、どのように記述したらよいでしょうか。

 ちなみにこれまでは「商品マスタ」シートの上にコマンドボタンを置いて

 Range("A1").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes

 というコードで並べ替えてました。

 現在の「登録」ボタンには新規登録のために下記のコードを登録しています。

 Private Sub HinTouroku_Click()

    Dim lRow As Long

    With Worksheets("商品マスタ")
       lRow = .Range("A" & Rows.Count).End(xlUp).Row + 1

        Worksheets("商品マスタ").Cells(lRow, "a").Value = HinId.Text
        Worksheets("商品マスタ").Cells(lRow, "b").Value = Syubetu.Text
        Worksheets("商品マスタ").Cells(lRow, "c").Value = Hinmei.Text

    End With

 End Sub

 ※ HinID = 商品ID、Syubetu = 種別、Hinmei = 商品名 です

 セルの範囲(列・行)を指定して(A1:C20のように)並べ替える方法は他のサイトで見つけたのですが、
 データが今後何行になるかわからないので列だけ指定して並べ替えできないかと…

 よろしくお願いいたします


 とりあえず。
 VLOOKUPで、検索の型にFALSEを指定したら昇順で並べとく必要は無くなるよ。
 (検索の型にTRUEを指定するか省略したときは昇順に並べとかないとならない)

 そもそも検索の型がTRUE(か省略)の時は検索値以下で最大のコードを返すんで表に無いIDでもエラーにならないから
 FALSEにしといた方がいいと思うけども。
 (春日野馨)

 春日野馨様ありがとうございます。

 このシートは他に多くのシートやファイルが参照していて、検索の型が「FALSE」になっているものもあるのですが
 省略されているものも存在するようなのです。

 なのでどちらにも対応できるように並べ替えたいんですが…

 (マッキー)

 ネットの情報を参考に下記のコードを書いてみましたがうまくいきません…

 ワークシートの選択の仕方が間違ってる?ような気がするのですが、そこから先に進まず…

 どなたかお教えください

 Private Sub TourokuSort_Click()

 With Worksheets("商品マスタ")

 Range("A1").Select
 Range(Selection, Selection.End(xlDown).End(xlToRight)).Sort Key1:=Range("A1"), Order1:=xlAscending, Header:= _
 xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
 SortMethod:=xlPinYin, DataOption1:=xlSortNormal
 Range("A2").Select

 End With

 End Sub

 (マッキー)

 >ネットの情報を参考に下記のコードを書いてみましたがうまくいきません…

 どのようにうまくいかないのかの記述も必要なんですよ。

 例としてのデータを提示し、コードを提示し、
 希望している結果を提示し、提示したコードの実行では、そうはならず、このようになってしまいます。  

 という投稿は、必須ですよ!! 最後が欠けていますね!!

 Private Sub CommandButton1_Click()
    With Worksheets("sheet1")
        .Range("A1", .Cells(.Rows.Count, "a").End(xlUp)).Resize(, .Cells(1, .Columns.Count).End(xlToLeft).Column). _
                Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:= _
                xlYes
    End With
 End Sub

 それから、Vlookupの検索の型でTrue指定は、
 >検索の型がTRUE(か省略)の時は検索値以下で最大のコードを返すんで表に無いIDでもエラーにならない

 これは良いのですか?

 ichinose


ichinose様

 すみません…うまくいかないの説明が欠けていました。
 実行してもエラーにもならない代わりに並べ替えも実行できないという状況でした。

 教えていただいたコードで並べ替え実行できました。
 ありがとうございました。

 >検索の型がTRUE(か省略)の時は検索値以下で最大のコードを返すんで表に無いIDでもエラーにならない

 その「TRUE(か省略)」になっているファイルについては職場の担当の人に説明して確認しましたが
 このままで良いということでした。
 これまで不都合は起きてなかったようですがもし何かあったらその時に対処します。

 お手数をおかけいたしました。

 (マッキー)

コメント返信:

[ 一覧(最新更新順) ]


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