• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excelの他シートのソート方法)

Excelの他シートのソート方法について

このQ&Aのポイント
  • Excelの他シートのソート方法について質問があります。同一ブック内に作業シートとDATAシートがあり、作業シートを常にアクティブにしておきたいと思っています。その際、DATAシートは作業者にはシークレットとしたいと考えています。
  • 作業シートには入力規則のリストにより語句を選択することができ、そのリストの語句データはDATAシート(AA列・AC列・・・)から引用されています。
  • 作業シートの隣接するAB列・AD列には語句を選択した回数を格納するカウンターとして利用されています。そして、そのカウンターを利用して、作業シートを選択頻度の高い順にソートしたいと考えています。しかし、試しに記述したコードを実行すると、アプリケーション実行時エラーが発生します。DATAシートからの実行では問題なく動作するのですが、DATAシートはシークレットにしたいため、解決策が見つかりません。どなたか教えていただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.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 '---------------------------------------------------- 以上です。  

MNSgigolo
質問者

お礼

bin-chanさん 解決です、有難うございました。 昨日からまる1日悩んでいて、今日は諦めかけていたところです。 救世主が現れた様でとても助かりました。 ほんとうに有難うございました。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> 実行したところ”アプリケーション実行時エラーが出ます。 どの行で発生しますか? EXCELのバージョンは何ですか?

MNSgigolo
質問者

補足

早速のコメントありがとうございます。 バージョンは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

関連するQ&A