[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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.