Excel VBA質問箱 IV

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

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


10003 / 76736 ←次へ | 前へ→

【72287】Re:捺印数の照合
発言  UO3  - 12/7/8(日) 20:54 -

引用なし
パスワード
   ▼ピッポ さん:

>コードもなるべく、無理がない限り従来のコードをベース
>使用して頂けると今後の参考になります。

アップされたコードは、以前にももう下げたとおり、インデントが正しくついていません。
ですので、各ロジックの固まりが、どのように遷移するのか、どの単位でループするのか
はなはだ、わかりにくくなっています。

以下は、アップされたコードの中の細かなコードを削除し、大きな流れを把握する部分のみを残して
それにインデントをつけたものです。

1組の If/End If や For/Next が同じ位置(桁)から始まっています。
まずは、これを印刷し、セロハンテープで貼り合わせて1枚の紙にして、ひとかたまりのブロックを
そのレベル別に(始まっている桁別に)蛍光ペンあたりで色別に塗り分けた上で
じっくりと、【流れ】をおいかけてください。

とくに後半のシートが複数ある場合の流れで、随分奇妙なループになっていることが
わかるはずです。

まず、このあたりから整理されたらよろしいかと思います。

For Each c In sh1.Range("F11", sh1.Range("F" & sh1.Rows.Count).End(xlUp))

  捺印数 = sh1.Range("AF" & i).Value
  
  'F列にハイパーリンクなければスキップ
  If c.Hyperlinks.Count > 0 Then
  
    'リンク先フォルダが存在するものだけ
    If myFso.FolderExists(oFold) Then
    
      For Each myFile In myFso.GetFolder(oFold).Files
      
        If e = "xls" Then
        
          シート数 = sh1.Range("AG" & i).Value
          
          'ワークシート数が1つの場合
          If シート数 = 1 Then
          
            'ブックオープンし、リンク先フォルダのxlsファイルに図形があるか判定
            Set fWb = Workbooks.Open(oFold & "\" & fName)
            
            For Each fSh In fWb.Worksheets
              i2 = 0
              For Each MyOb In fSh.Shapes '

                If MyOb.Type = msoPicture Then  '
                  If Not Intersect(MyOb.TopLeftCell, fSh.Range("A1:BV9")) Is Nothing Then
                    '左上角指定で選択されたシートのみを対象にする
                    'このifが無いとシート全体が対象になる
                    i2 = i2 + 1
                  End If
                End If

              Next

              fWb.Close False
              If i2 <> 捺印数 Then Exit For

            Next

            If i2 <> 捺印数 Then Exit For   
            
          End If
          
          
          If シート数 >= 2 Then
          
            'ブックオープンし、リンク先フォルダのxlsファイルに図形があるか判定
            Set fWb = Workbooks.Open(oFold & "\" & fName)
            
            For Each fSh In fWb.Worksheets
            
              y = fWb.Sheets.Count
              
              For n = 1 To y        'シート数分だけループ
              
                i2 = 0
                
                For Each MyOb In fSh.Shapes '
                
                  If MyOb.Type = msoPicture Then  '
                  
                  
                    If Not Intersect(MyOb.TopLeftCell, fSh.Range("A1:BV9")) Is Nothing Then
                    '左上角指定で選択されたシートのみを対象にする
                    'このifが無いとシート全体が対象になる
                    i2 = i2 + 1
                    
                    End If
                    
                  End If
                  
                Next
                
                If i2 <> 捺印数 Then Exit For
              
              Next
              
              fWb.Close False
              If i2 = 捺印数 Then Exit For
            
            Next
          
          End If
          
          
        End If
      Next
      
      '問題有り無しをJ列に記入
    
    End If
  
  End If

Next

0 hits

【72228】捺印数の照合 ピッポ 12/6/24(日) 0:07 質問
【72233】Re:捺印数の照合 UO3 12/6/24(日) 8:23 発言
【72237】Re:捺印数の照合 UO3 12/6/24(日) 9:59 発言
【72238】Re:捺印数の照合 ピッポ 12/6/24(日) 14:25 回答
【72239】Re:捺印数の照合 UO3 12/6/24(日) 14:49 発言
【72241】Re:捺印数の照合 ピッポ 12/6/25(月) 0:25 お礼
【72276】Re:捺印数の照合 ピッポ 12/7/7(土) 9:42 発言
【72279】Re:捺印数の照合 UO3 12/7/7(土) 17:34 発言
【72281】Re:捺印数の照合 ピッポ 12/7/8(日) 11:39 発言
【72282】Re:捺印数の照合 UO3 12/7/8(日) 16:18 発言
【72284】Re:捺印数の照合 ピッポ 12/7/8(日) 16:47 発言
【72286】Re:捺印数の照合 UO3 12/7/8(日) 18:44 発言
【72283】Re:捺印数の照合 UO3 12/7/8(日) 16:35 発言
【72285】Re:捺印数の照合 ピッポ 12/7/8(日) 18:15 発言
【72287】Re:捺印数の照合 UO3 12/7/8(日) 20:54 発言
【72288】Re:捺印数の照合 UO3 12/7/9(月) 10:29 発言
【72294】Re:捺印数の照合 ピッポ 12/7/9(月) 18:00 発言
【72298】Re:捺印数の照合 UO3 12/7/10(火) 12:31 発言
【72329】Re:捺印数の照合 ピッポ 12/7/12(木) 18:12 発言
【72334】Re:捺印数の照合 UO3 12/7/13(金) 9:45 発言
【72339】Re:捺印数の照合 ピッポ 12/7/14(土) 21:26 お礼
【72299】Re:捺印数の照合 UO3 12/7/10(火) 12:42 発言

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