Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8637 / 13644 ツリー ←次へ | 前へ→

【32142】アクティブでないシートに対してソート kj 05/12/7(水) 11:45 質問[未読]
【32143】Re:アクティブでないシートに対してソート inoue 05/12/7(水) 12:22 回答[未読]
【32148】Re:アクティブでないシートに対してソート kj 05/12/7(水) 12:50 お礼[未読]
【32144】Re:アクティブでないシートに対してソート ちくたく 05/12/7(水) 12:24 回答[未読]
【32149】Re:アクティブでないシートに対してソート kj 05/12/7(水) 12:55 お礼[未読]
【32145】Re:アクティブでないシートに対してソート やっちん 05/12/7(水) 12:32 発言[未読]
【32147】Re:アクティブでないシートに対してソート kj 05/12/7(水) 12:48 お礼[未読]

【32142】アクティブでないシートに対してソート
質問  kj  - 05/12/7(水) 11:45 -

引用なし
パスワード
   初めて投稿させて頂きます。よろしくお願いします。

アクティブでないシートに対してソートを行いたいのですが、
「'Range'メソッドは失敗しました:'_Worksheet'オブジェクト」
というエラーがでてしまいます。
下記のどこがいけないかどうか教えて下さい。

Dim i As Integer
Dim ws As Worksheet

Set ws = Worksheets("階層図")

For i = 1 To 73 Step 2
  ws.Range(Cells(1, i), Cells(65536, (i + 1))).Sort _
    Key1:=ws.Range(Cells(2, 1)), Header:=xlYes
Next i

【32143】Re:アクティブでないシートに対してソート
回答  inoue E-MAILWEB  - 05/12/7(水) 12:22 -

引用なし
パスワード
   こんにちは。

よくある質問です。
カッコ内の「Cells」にも「ws.」を付けて下さい。
付けないとアクティブシートを参照することになってしまいます。

【32144】Re:アクティブでないシートに対してソート
回答  ちくたく WEB  - 05/12/7(水) 12:24 -

引用なし
パスワード
   こんにちは。
こんなもんすかねぇ。
Range(ws.cells(2,1))と、一回だけもダメだった気がする。

Sub test()

  Dim i As Integer
  Dim ws As Worksheet
  
  Set ws = Worksheets("階層図")
  
  For i = 1 To 73 Step 2
    ws.Range(ws.Cells(1, i), ws.Cells(65536, (i + 1))).Sort _
      Key1:=ws.Range(ws.Cells(2, 1), ws.Cells(2, 1)), Header:=xlYes
  Next i

End Sub

【32145】Re:アクティブでないシートに対してソート
発言  やっちん  - 05/12/7(水) 12:32 -

引用なし
パスワード
   ▼kj さん:
こんにちは
>    Key1:=ws.Range(Cells(2, 1)), Header:=xlYes
    Key1:=ws.Cells(2, 1), Header:=xlYes
CELLSでもいいと思います。
あと、Key1がソートの範囲を出てしまっているので
そこは直さないといけません。

【32147】Re:アクティブでないシートに対してソート
お礼  kj  - 05/12/7(水) 12:48 -

引用なし
パスワード
   ▼やっちん さん:
>▼kj さん:
>こんにちは
>>    Key1:=ws.Range(Cells(2, 1)), Header:=xlYes
>    Key1:=ws.Cells(2, 1), Header:=xlYes
>CELLSでもいいと思います。
>あと、Key1がソートの範囲を出てしまっているので
>そこは直さないといけません。

さっそく返信ありがとうございます。
キー部の所は「(2, i)」でした。初歩ミスです。すいません。
やっちんさんの通りRange使わなくてもよかったです。
ありがとうございます。

【32148】Re:アクティブでないシートに対してソート
お礼  kj  - 05/12/7(水) 12:50 -

引用なし
パスワード
   ▼inoue さん:
>こんにちは。
>
>よくある質問です。
>カッコ内の「Cells」にも「ws.」を付けて下さい。
>付けないとアクティブシートを参照することになってしまいます。

早速の回答ありがとうございます。
ご指摘の通り、「Cells」にも「ws.」をつける必要がありました。
ありがとうございます。

【32149】Re:アクティブでないシートに対してソート
お礼  kj  - 05/12/7(水) 12:55 -

引用なし
パスワード
   ▼ちくたく さん:
>こんにちは。
>こんなもんすかねぇ。
>Range(ws.cells(2,1))と、一回だけもダメだった気がする。
>
>Sub test()
>
>  Dim i As Integer
>  Dim ws As Worksheet
>  
>  Set ws = Worksheets("階層図")
>  
>  For i = 1 To 73 Step 2
>    ws.Range(ws.Cells(1, i), ws.Cells(65536, (i + 1))).Sort _
>      Key1:=ws.Range(ws.Cells(2, 1), ws.Cells(2, 1)), Header:=xlYes
>  Next i
>
>End Sub

回答ありがとうございます。
たしかにRowとColumを書いても上手くいきました。

8637 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free