[[20170224114602]] 『日付シートの選択について』(ぷたろ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日付シートの選択について』(ぷたろ)

分かる方がいらっしゃいましたら
コメントください ><

VBA初心者になります。

「20170224」や「20170210」といった日付シートが複数あります。
日々、最新の日付で更新するため
日付シートを削除したり、追加したりするので
シートネーム(日付)はバラバラです。

シート名がコロコロ変わらなければ
Sheets("20170224")というように指定したり、
固定位置であればSheets(1)で表すことが出来ますよね。

ですが、「20170224_最新版」や「20170210_旧版」といったように
日付のあとに文字が入っていた場合に
Sheets("")で指定することは可能なのでしょうか?

シートの並べ替えがしたいので、どうにかできないかと悩んでいます。

いくら調べてもこれといった内容が検索結果として出てこないため
こちらの方に投稿させていただきました。

よろしくお願い致します。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


>Sheets("")で指定することは可能なのでしょうか?
できませんでしたか?

とりあえず試す。が第一歩だと思いますが。。。

>シートの並べ替えがしたいので、どうにかできないかと悩んでいます。
「シートの並べ替え」で検索したらサンプルが見つかると思いますが?

おお。僕のエクセルにはシートの並び替え機能がついていた^^;;
http://software.opensquare.net/relaxtools/
便利だけどあんまりお勧めはしません。

(まっつわん) 2017/02/24(金) 12:28


初心者向けのコードではありませんが、こんな感じでもできます。

 Sub test()
    Dim AR As Object
    Dim i As Long

    Set AR = CreateObject("System.Collections.ArrayList")
    For i = 1 To Sheets.Count
        AR.Add Sheets(i).Name
    Next i
    AR.Sort

    For i = AR.Count To 1 Step -1
        Sheets(AR(i - 1)).Move before:=Sheets(1)
    Next i
 End Sub
(???) 2017/02/24(金) 13:11

まっつわん様

ダウンロード形式では少し厳しいですね…
でもこういう機能がある物が知れて勉強になりました!
ありがとうございました^^
(ぷたろ) 2017/02/24(金) 13:18


???様

起動してみました!日付シートが一番前に来るように
コードが書いてあるようですが、
Aシート、Bシート、日付シートといったように
並び替え可能なのでしょうか??
(ぷたろ) 2017/02/24(金) 13:21


降順にしたいならば、ループさせる順番を逆にするだけです。それくらいは思いついて欲しかったですね。
    For i = AR.Count To 1 Step -1
      ↓
    For i = 1 To AR.Count
(???) 2017/02/24(金) 13:27

???様

すみません
"Aシート"と"Bシート"の順番は降順ではなく、固定で、
日付は降順という意味です。
つまり、
A,Bシートは指定の順番、
Bシート以降は日付シート(降順)

ご説明不足で申し訳ありません。
(ぷたろ) 2017/02/24(金) 13:33


昇順でも降順でもないと言うならば、例えばAシートは必ずSheets(1)であり、BシートはSheets(2)ですよね。
私は全シートを並び替えるコードを書きましたが、2シートは固定ならば、Sheets(3)以降だけ並び替えれば良いのでは?
応用してみてください。(3箇所書き換えるだけです)
(???) 2017/02/24(金) 13:37

???様

できました!
ご丁寧に、どうもありがとうございました。
(ぷたろ) 2017/02/24(金) 13:49


うまくできたようですね。検索してこのスレにたどり着いた人用に、答えを書いておきます。
(先頭2シートは固定として、3シート目以降を降順に並び替える例)

 Sub test()
    Dim AR As Object
    Dim i As Long

    Set AR = CreateObject("System.Collections.ArrayList")
    For i = 3 To Sheets.Count
        AR.Add Sheets(i).Name
    Next i
    AR.Sort

    For i = 1 To AR.Count
        Sheets(AR(i - 1)).Move before:=Sheets(3)
    Next i
 End Sub
(???) 2017/02/24(金) 13:59

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.