Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2013)
VBAがわからず、ループの仕方がわかりません。
投稿日時: 18/05/06 16:54:05
投稿者: macroはじめたばかり

初めて投稿させていただきます。
 
マクロを使い始め、いろいろと調べているとVBAで修正ができることを知りました。
少しづつ独学していますが、カメの歩みのようなペースです。
仕事はエクセルのデータ管理が多く簡単な作業ですが量が膨大だったりするので
こちらでVBAを学べればと思っておりますので、教えていただければ幸いです。
 
Excel 特定のシート以外をマクロ実行してほしいのですが、ループの仕方がわかりません。
 
1つのExcelファイルに
店舗名がシート名となっているのシートが大量にあり、また店舗が増えるとシートも増えます。
それと、同じExcelファイルに「集計」シートが1シートあります。
 
その集計シート以外を下記の作業と言うか…
(すみませんしょうもない作業ですが汗)
 
1、オートフィルタのクリア(解除ではなく)
 
2、F6を選択
(F6でウインド枠固定されてますがスクロールされていたら見えないので表示させたいため)
 
3、A1を選択
 
4、先頭のシートに戻る
 
を、行いたいたく、マクロで記録はしましたが、
そのあとの「集計シート以外のシートすべて繰り返し」をVBAで行えればと思います。
 
データ持ち出しができない会社のため文字だけの情報で申し訳ございません。
また、必要な情報記載していなかったら申し訳ございません。
教えていただけると幸いです。

回答
投稿日時: 18/05/06 17:39:13
投稿者: WinArrow
投稿者のウェブサイトに移動

繰り返し部分は、マクロの記録では対応していませんから
 その部部のみ
  
   
ブックに存在するシートの中から、必要な(または、不要な)シートを判断する
  
例、シート名が"集計"以外を必要なシートと判断する
  
Dim TSheet AS Worksheet
   
 For Each TSheet In Activeworkbook.Sheets
     If TSheet.Name <> "集計" Then
        '必要な処理
    End If
 Next
  

回答
投稿日時: 18/05/06 17:42:13
投稿者: K.Hiwasa
投稿者のウェブサイトに移動

こんにちは。
 
ループについては、こちらが参考になると思います。
https://www.moug.net/tech/exvba/0110003.html
 
ループ内で、シート名が「集計」以外だったら処理を実施すると
すればよいでしょう。

投稿日時: 18/05/07 09:17:18
投稿者: macroはじめたばかり

ありがとうございます!
ワークシートのループはFor Eachになるのですね。
今回、ifとループの勉強になりました。
私の業務ではこういった作業が多いので、
今回教えていただいた事で他の業務にも広げていきながら
さらに勉強しようと思います。
とても助かりました。ありがとうございました!
 
〜自分の記録用として〜
Sub sampleA()
    Dim eachSheet As Worksheet
    Dim memSN As String
     
    sheets(1).Select
    memSN = ActiveSheet.Name
    For Each eachSheet In ThisWorkbook.Worksheets
    If eachSheet.Name <> "?W?v" Then
    eachSheet.Select
    If eachSheet.FilterMode Then
    eachSheet.ShowAllData
    End If
    eachSheet.Range("F6").Select
    eachSheet.Range("A1").Select
    ActiveWindow.Zoom = 75
    End If
    Next eachSheet
     
    sheets("?W?v").Select
    ActiveWindow.Zoom = 75
    Range("A1").Select
     
    Worksheets(memSN).Select
End Sub