2017-08-03 18 views
1
Sub PercentCompletePipes() 
Dim k As Range 
Dim Counter As Integer 
Dim Green As Integer 
Dim Red As Integer 
Red = 0 
Green = 0 
xTitleId = "Percentage Completed Inverts" 
MsgBox "This macro defines the percentage of pipes with completed inverts. It ignores all PRIVATE pipes." 
MsgBox "WARNING: This macro only works with COMPLETED invert excel sheets." 
For Each k In ActiveSheet.UsedRange.Rows 
    Counter = 0 
    If Counter >= 4 Then 
     If ActiveSheet.Cells(k.Row, 1).Interior.ColorIndex = 4 Then 
      Green = Green + 1 
     ElseIf ActiveSheet.Cells(k.Row, 1).Interior.ColorIndex = 3 Then 
      Red = Red + 1 
     ElseIf ActiveSheet.Cells(k.Row, 1).Interior.ColorIndex = 6 Then 
      ActiveSheet.Cells(k.Row, 1).Value = "COMPLETED PIPES:" 
      ActiveSheet.Cells(k.Row, 2).Value = Green 
      ActiveSheet.Cells(k.Row + 1, 1).Value = "INCOMPLETE PIPES:" 
      ActiveSheet.Cells(k.Row + 1, 2).Value = Red 
      ActiveSheet.Cells(k.Row + 2, 1).Value = "PERCENTAGE COMPLETE:" 
      ActiveSheet.Cells(k.Row + 2, 2).Value = Green/(Red + Green) 
     End If 
    End If 
    Counter = Counter + 1 
Next k 




End Sub 

エントリレベルの質問のため申し訳ありませんが、各行の第一の細胞が緑色であるかかどうか、私はに基づいて、私のExcelシート内の行の完了をプリントアウトしようとしています赤(緑が完了し、赤が不完全)。それは他のすべての色(灰色、白など)を無視することになっています。上記のコードスニペットを使用すると、出力は生成されません。最初のセルを黄色の行(カラーインデックス= 6)で強調表示すると、出力が生成されます。 Image of excel file I'm trying to analyze.印刷数量

答えて

0
Sub PercentCompletePipes() 
Dim k As Range 
Dim Counter As Integer 
Dim Green As Integer 
Dim Red As Integer 
Red = 0 
Green = 0 
Counter = 0 
xTitleId = "Percentage Completed Inverts" 
MsgBox "This macro defines the percentage of pipes with completed inverts. It ignores all PRIVATE pipes." 
MsgBox "WARNING: This macro only works with COMPLETED invert excel sheets." 
For Each k In ActiveSheet.UsedRange.Rows 
    If Counter >= 4 Then 
     If ActiveSheet.Cells(k.Row, 1).Interior.ColorIndex = 4 Then 
      Green = Green + 1 
     ElseIf ActiveSheet.Cells(k.Row, 1).Interior.ColorIndex = 3 Then 
      Red = Red + 1 
     ElseIf ActiveSheet.Cells(k.Row, 1).Interior.ColorIndex = 6 Then 
      ActiveSheet.Cells(k.Row, 1).Value = "COMPLETED PIPES:" 
      ActiveSheet.Cells(k.Row, 2).Value = Green 
      ActiveSheet.Cells(k.Row + 1, 1).Value = "INCOMPLETE PIPES:" 
      ActiveSheet.Cells(k.Row + 1, 2).Value = Red 
      ActiveSheet.Cells(k.Row + 2, 1).Value = "PERCENTAGE COMPLETE:" 
      ActiveSheet.Cells(k.Row + 2, 2).Value = Green/(Red + Green) 
     End If 
    End If 
    Counter = Counter + 1 
Next k 




End Sub 

これを修正しました。 forループにカウンタ変数を誤って入れてしまった。