如何使用VBA计算所有背景颜色的单元格?

时间:2016-07-18 07:21:00

标签: excel vba excel-vba

我试图简单地计算具有背景颜色的列中的所有单元格。任何颜色都无关紧要。我使用了这个代码的模块:

Function CountCcolor(range_data As Range) As Long
    Dim datax As Range
    For Each datax In range_data
        If datax.Interior.ColorIndex <> xlNone Then
            CountCcolor = CountCcolor + 1
        End If
    Next datax
End Function

当我第一次应用公式时,这种方法很有效。当我更改填充表时,它不再响应。每次用户编辑单元格时,如何区分此功能?

2 个答案:

答案 0 :(得分:0)

您可以在相关的 Worksheet_Change 事件中使用以下代码刷新整个工作簿:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.tri as mtri

a_x = [1,2,3]
a_y1 = [1,2,1]
a_y2 = [4,5,6]

# Triangulate parameter space to determine the triangles
tri = mtri.Triangulation(a_x, a_y1)

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d')

# The triangles in parameter space determine which x, y, z points are
# connected by an edge
ax.plot_trisurf(a_x, a_y1, a_y2, triangles=tri.triangles, cmap=plt.cm.Spectral)

plt.show()

答案 1 :(得分:0)

没有通过填充单元格触发的事件。因此,我建议使用以下工作表宏

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Sh.Calculate
End Sub

除了你的宏。推理:填充范围后,您将(最终)选择该工作表上的其他单元格。此时,重新计算总和。它并不理想,因为它没有更新 您正在选择范围,而且可能是计算密集型。