Excel VBA質問箱 IV

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

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


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

【53131】詳しく教えてください 考える人 07/12/16(日) 21:14 質問[未読]
【53132】Re:詳しく教えてください かみちゃん 07/12/16(日) 21:23 発言[未読]
【53156】Re:詳しく教えてください 考える人 07/12/17(月) 21:06 お礼[未読]
【53141】Re:詳しく教えてください Who Me? 07/12/17(月) 10:56 発言[未読]
【53152】Re:詳しく教えてください 考える人 07/12/17(月) 20:41 お礼[未読]
【53155】Re:詳しく教えてください yata 07/12/17(月) 21:06 発言[未読]

【53131】詳しく教えてください
質問  考える人  - 07/12/16(日) 21:14 -

引用なし
パスワード
   作業完了後、右のシートに移動するという設定をくむため、
人に以下の構文を教えてもらいました。
いろいろ付け加えて無事作業は完了したのですが、いまいち理解ができません。
特に?マークが何を意味しているのか教えてもらえないでしょうか。
ためしに−1を+1にしても左にはいかないようで、左に行かせる方法なども
参考のため知りたいのですが。

Sub Test1()
Dim i As Integer
For i = 2 To Worksheets.Count
If ActiveSheet.Name = Worksheets(i).Name Then  '?????
Worksheets(i - 1).Activate            '?????
End If
Next
End Sub

【53132】Re:詳しく教えてください
発言  かみちゃん  - 07/12/16(日) 21:23 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>If ActiveSheet.Name = Worksheets(i).Name Then  '?????
>Worksheets(i - 1).Activate            '?????

詳しくは、ヘルプで調べてから質問されたほうがいいかと思うのですが、
アクティブシートの名前と左からi番目のシートの名前が一致する場合、
左からi-1番目のシートをアクティブにする
という意味です。

> 左にはいかないようで、左に行かせる方法

という意味が、シートを移動したいのか、アクティブにしたいのかの意味がわかりません。

【53141】Re:詳しく教えてください
発言  Who Me?  - 07/12/17(月) 10:56 -

引用なし
パスワード
   質問の目的に適う回答ではありませんが
>作業完了後、右のシートに移動する
なら

With ActiveSheet
  If .Index > Worksheets.Count Then
   .Next.Activate
  End If
End With

などとする方が、すっきりしますね。

【53152】Re:詳しく教えてください
お礼  考える人  - 07/12/17(月) 20:41 -

引用なし
パスワード
   ありがとうございます。
試してみます。

【53155】Re:詳しく教えてください
発言  yata  - 07/12/17(月) 21:06 -

引用なし
パスワード
   >With ActiveSheet
>  If .Index > Worksheets.Count Then
>   .Next.Activate
>  End If
>End With
>
>などとする方が、すっきりしますね。

ずいぶんスッキリしましたね。勉強になりました。
  If .Index < Worksheets.Count Then
ですね。
元のコードを生かすなら
 Exit Sub を入れた方がいいかも。

'右のシートを開く(一番右のシートがアクティブなら実行されない)
Sub Test1()
Dim i As Integer
For i = 1 To Worksheets.Count - 1  '●一番右ならもう右へ行けないから
 If ActiveSheet.Name = Worksheets(i).Name Then
  Worksheets(i + 1).Activate '●右側だから一つ番号が大きくする
  Exit Sub  '●これを追加
 End If
Next
End Sub

'左のシートを開く
Sub Test2()
Dim i As Integer
For i = 2 To Worksheets.Count  '●一番左の場合はもう左へ行けないから2から始める
 If ActiveSheet.Name = Worksheets(i).Name Then
  Worksheets(i - 1).Activate
  Exit Sub
 End If
Next
End Sub

【53156】Re:詳しく教えてください
お礼  考える人  - 07/12/17(月) 21:06 -

引用なし
パスワード
   ご回答いただき、ありがとうございます。

似たような過去ログを見つけたのですが、
シートにナンバー(順番)をつけ、それを利用して
IFにとりこむという考え方でしょうか。

> 左にはいかないようで、左に行かせる方法
の意味はシートの移動を意味しておりました。

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