2017-05-08 4 views
0

私は今やっている仕事に問題があります。おそらく、私はMINSUMの範囲(テーブル)を計算するforループを持っています。私はワークブックに10枚のワークシートを持っているので、ワークブックの各ワークシートにループをループするために別のループを追加しました。ただし、コードはエラーなく実行されますが、出力は期待どおりではありません。未使用の範囲でも計算されます。私のコードに何かエラーがありますか?計算を行うためにブック内の各ワークシートをループする方法は?

Sub calc() 
Dim ws As Worksheet 
Dim y As Workbook 
Dim rng As Range 
Dim i As Integer, r As Long, j As Long 

Set y = ThisWorkbook 

For Each ws In y.Worksheets 
For Each rng In ws.UsedRange.SpecialCells(xlCellTypeConstants, 3).Areas 
    If rng.Rows.Count > 1 And rng.Columns.Count = 14 Then 
     j = 2 
     r = rng.Cells(rng.Rows.Count, 1).Row + 1 
     Cells(r, rng.Columns(1).Column).Value = "SUMMARY" 
     For i = rng.Columns(2).Column To rng.Columns(2).Column + 12 
      If i = rng.Columns(12).Column Then 
       Cells(r, i).Formula = "=MIN(" & rng.Columns(j).Address & ")" 
       j = j + 1 
       Else 
       Cells(r, i).Formula = "=SUM(" & rng.Columns(j).Address & ")" 
       j = j + 1 
      End If 
     Next i 
    End If 
Next rng 
Next 

End Sub 

答えて

0
あなたはいつもあなたが使用したときに言及されているシートの資格べきで

CellsRangeなど例えば

Cells(r, rng.Columns(1).Column).Value = "SUMMARY" 

アクティブシートを参照しているラインしかし、おそらくwsが参照しているシート、つまり

を参照したいと思うでしょう210
ws.Cells(r, rng.Columns(1).Column).Value = "SUMMARY" 

あなたのコードは、おそらく次のようになります。

Sub calc() 
Dim ws As Worksheet 
Dim y As Workbook 
Dim rng As Range 
Dim i As Integer, r As Long, j As Long 

Set y = ThisWorkbook 

For Each ws In y.Worksheets 
For Each rng In ws.UsedRange.SpecialCells(xlCellTypeConstants, 3).Areas 
    If rng.Rows.Count > 1 And rng.Columns.Count = 14 Then 
     j = 2 
     r = rng.Cells(rng.Rows.Count, 1).Row + 1 
     ws.Cells(r, rng.Columns(1).Column).Value = "SUMMARY" 
     For i = rng.Columns(2).Column To rng.Columns(2).Column + 12 
      If i = rng.Columns(12).Column Then 
       ws.Cells(r, i).Formula = "=MIN(" & rng.Columns(j).Address & ")" 
       j = j + 1 
      Else 
       ws.Cells(r, i).Formula = "=SUM(" & rng.Columns(j).Address & ")" 
       j = j + 1 
      End If 
     Next i 
    End If 
Next rng 
Next 

End Sub 
+0

こんにちはYowE3K、ありがとう!!それはとてもうまくいく。 – mmaz

関連する問題