这个非常简单的VBA宏有两个问题。
首先,在读取第一行中的最后一个单元格并完成它的工作后,它不会跳转到集合中的next row
。以前从未使用VBA,我有一个不寻常的要求,计算出所提供的电子表格的行集中所有黑色单元格的百分比并打印它的值。
Private Sub CommandButton1_Click()
Dim rng As Range,
Dim row As Range,
Dim cell As Range,
Dim BlackCount As Integer,
Dim myCellCount As Integer,
myCellCount = 0
Set rng = Range("H4:BL540")
For Each row In rng.Rows
For Each cell In row.Cells
If cell.Interior.ColorIndex = 1 Then
BlackCount = BlackCount + 1
End If
Debug.Print cell.Interior.ColorIndex & " " & myCellCount & " " & rng.Rows.row
myCellCount = myCellCount + 1
calc = 100 / myCellCount
Total = calc * BlackCount
Next cell
Range("BM" & rng.Rows.row).Value = Total
myCellCount = 0
BlackCount = 0
calc = 0
Total = 0
Next row
End Sub
我添加了一个Debug.Print
命令来显示我显示的值。
1 0 4
1 1 4
1 2 4
1 3 4
1 4 4
1 5 4
-4142 6 4
1 7 4
1 8 4
1 9 4
1 10 4
1 11 4
1 12 4
1 13 4
1 14 4
1 15 4
1 16 4
1 17 4
1 18 4
1 19 4
1 20 4
1 21 4
1 22 4
1 23 4
1 24 4
1 25 4
1 26 4
1 27 4
1 28 4
1 29 4
1 30 4
1 31 4
1 32 4
1 33 4
1 34 4
1 35 4
1 36 4
1 37 4
1 38 4
1 39 4
1 40 4
1 41 4
1 42 4
1 43 4
1 44 4
1 45 4
-4142 46 4
-4142 47 4
-4142 48 4
-4142 49 4
-4142 50 4
-4142 51 4
-4142 52 4
-4142 53 4
-4142 54 4
-4142 55 4
-4142 56 4
第二个问题是,在我的输出中,我知道myCellCount
的值为9且rng.Rows.row
的值为4,实际cell.Interior.ColorIndex
的值为1当电池不是黑色时,实际上它是绿色的。
1 9 4
当然这应该是4 9 4
或任何合适的绿色阴影(不重要)。
此行中有许多绿色和红色cell.Interior.ColorIndex
值,但它似乎只能确认黑色和白色(无值),但绿色和红色为黑色/ ColourIndex = 1
。
对于ColourIndex
,我有什么遗漏或不了解的情况吗?
最后,有人能说出为什么这不会跳到集合的下一行吗?
由于
@Siddharth Rout的样本;
$H$4
1 0 4
$I$4
1 1 4
$J$4
1 2 4
$K$4
1 3 4