- ベストアンサー
Excelの他シートのソート方法について
- Excelの他シートのソート方法について質問があります。同一ブック内に作業シートとDATAシートがあり、作業シートを常にアクティブにしておきたいと思っています。その際、DATAシートは作業者にはシークレットとしたいと考えています。
- 作業シートには入力規則のリストにより語句を選択することができ、そのリストの語句データはDATAシート(AA列・AC列・・・)から引用されています。
- 作業シートの隣接するAB列・AD列には語句を選択した回数を格納するカウンターとして利用されています。そして、そのカウンターを利用して、作業シートを選択頻度の高い順にソートしたいと考えています。しかし、試しに記述したコードを実行すると、アプリケーション実行時エラーが発生します。DATAシートからの実行では問題なく動作するのですが、DATAシートはシークレットにしたいため、解決策が見つかりません。どなたか教えていただけないでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>エラー行は、 >Set myRng = Sheets("DATA").Range(Cells(2, i), Cells(yline - 3, i + 1)) Cells(2, i)とCells(yline - 3, i + 1)の前に、"."ドットが必要です。 それからコードの書き方ですが、 With Sheets("DATA")をもっと前にもってていった方がシンプルです。 '------------------------------------------ Sub Listsort() Dim lCol As Long Dim myRng As Range Dim Key As String For i = 27 To 37 Step 2 With Worksheets("DATA") Key = .Cells(2, i + 1).Value yline = .Cells(Rows.Count, i).End(xlUp).Row Set myRng = .Range(.Cells(2, i), .Cells(yline - 3, i + 1)) myRng.Sort _ Key1:=.Range(Key), Order1:=xlAscending, _ Header:=xlYes, Orientation:=xlTopToBottom End With Next i End Sub '---------------------------------------------------- 以上です。
その他の回答 (1)
- bin-chan
- ベストアンサー率33% (1403/4213)
> 実行したところ”アプリケーション実行時エラーが出ます。 どの行で発生しますか? EXCELのバージョンは何ですか?
補足
早速のコメントありがとうございます。 バージョンはEXCEL2007です。 エラー内容は正しくは”アプリケーション定義またはオブジェクト定義の エラーです。”です エラー行は、Set myRng = Sheets("DATA").Range(Cells(2, i), Cells(yline - 3, i + 1))で”myRng”で内容は”nothing”となっています。 前コーディングですと”yline”の内容は正しくないことが分かったので現在は以下の コーディングとしました。シートの指定の方法がいけないのでしょうか? 宜しくお願いします。 Sub Listsort() Dim lCol As Long Dim myRng As Range Dim Key As String For i = 27 To 37 Step 2 Key = Sheets("DATA").Cells(2, i + 1).Value yline = Sheets("DATA").Cells(Rows.Count, i).End(xlUp).Row With Worksheets("DATA") Set myRng = Sheets("DATA").Range(Cells(2, i), Cells(yline - 3, i + 1)) myRng.Sort _ Key1:=.Range(Key), _ Order1:=xlAscending, _ Header:=xlYes, _ Orientation:=xlTopToBottom End With Next End Sub
お礼
bin-chanさん 解決です、有難うございました。 昨日からまる1日悩んでいて、今日は諦めかけていたところです。 救世主が現れた様でとても助かりました。 ほんとうに有難うございました。