[[20091224201050]] 『VBAで列ごとに並び替えをしたい』(らいち) ページの最後に飛ぶ

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

 

『VBAで列ごとに並び替えをしたい』(らいち)

 下記VBAを作成しましたが、うまく行かずに困ってます。
 実行時エラー13 型が一致しません、とエラーが出てしまいます。
 何か良い方法はありますでしょうか。(excel2000)

 Private Sub 並び替え_Click()
 Dim InPt As String
 Dim x As String
 Dim y As String
 InPt = Application.InputBox(prompt:="並び替えしたい項目名を入力", Type:=2)
 If InPt = False Then Exit Sub
 Application.ScreenUpdating = False
 ActiveSheet.Unprotect password:="****"
 If InPt = "項目" Then x = "E4:E3000" And y = "E4"
 If InPt = "名称" Then x = "F4:F3000" And y = "F4"
 If InPt = "品名" Then x = "G4:G3000" And y = "G4"
 If InPt = "単価" Then x = "H4:H3000" And y = "H4"
 If InPt = "メーカー" Then x = "J4:J3000" And y = "J4"
 If InPt = "担当者" Then x = "M4:M3000" And y = "M4"
 ActiveSheet.Range(x).Sort _
        Key1:=Range(y), _
        Order1:=xlAscending, _
        Header:=xlGuess, _
        OrderCustom:=1, _
        MatchCase:=False, _
        Orientation:=xlTopToBottom, _
        SortMethod:=xlPinYin
 ActiveSheet.protect password:="****"
 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
 End Sub

 エラーが出ているのはどの行ですか?

 InPt は文字列なのに Boolean と比較している部分は大丈夫でしょうか?
 (Mook)

 まさに、下記構文にエラーが発生していました。
 If InPt = False Then Exit Sub

 どう直したらよいのでしょうか。(らいち)


 If InPt = "" Then Exit Sub
 とすればエラーはなくなると思いますが、項目を入力する
 インタフェースは改善の余地がありそうですね。

 ボタンではなく、セルのダブルクリックでソートするとすると
 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Intersect(Target, Range("E4:H4")) Is Nothing Then Exit Sub

    Application.ScreenUpdating = False
    ActiveSheet.Unprotect Password:="****"

    Target.Resize(2997, 1).Sort _
           Key1:=Target, _
           Order1:=xlAscending, _
           Header:=xlGuess, _
           OrderCustom:=1, _
           MatchCase:=False, _
           Orientation:=xlTopToBottom, _
           SortMethod:=xlPinYin
    ActiveSheet.Protect Password:="****", DrawingObjects:=True, Contents:=True, Scenarios:=True
    Cancel = True
 End Sub
 なんてのでも、できそうですが。
 (Mook)

 (Mook)さま 出来ました!ありがとうございます。
 ちなみに、E列〜M列の範囲で並び替え設定して、その内
 G列、H列、J列は並び替え設定しない様にするには、どう書けば
 よろしいでしょうか。(らいち)

何とか自力で解決できました。有難う御座いました。(らいち)

コメント返信:

[ 一覧(最新更新順) ]


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