使用VBA将不同的条件格式应用于一系列单元格

时间:2016-02-15 20:01:54

标签: excel vba excel-vba

试着了解如何继续。我让最终用户向我提供需要在Excel中的多个列中进行验证的信息。

由于传入的数据很可能是从源电子表格中复制和粘贴的,因此使用数据验证将很困难。

为了保持验证的正确性,我在一个名为“规则”的表格中镜像了我的数据布局,并输入了我想用于列的公式。

例如:在单元格A2中,我有以下内容: = NOT(AND(LEN(A2)的51,= IF(A2<> “中”,SUMPRODUCT(LEN(A2)-LEN(SUBSTITUTE(LOWER(A2),验证$ A $ 2:$ A $ 41” “)))= LEN(A2)))) 对于A列中除A1之外的所有单元格,将继续进行数据验证。

单元格B2将在其中具有相应的公式,依此类推,直到列BY。

我以下代码粗略估计了sigle列的情况,没有从单元格值中获取条件公式:

tvResult.setText(nodecimals((((Float.parseFloat(etBarfles.getText().toString()) *
                    (Float.parseFloat(etInhoudfles.getText().toString())) / (Float.parseFloat
                    (etLitersperminuut.getText().toString()))) / 60))));

我的理想终点是让这个工作,其中A2-A60000的条件格式规则/公式在工作表“规则”单元格“A2”中被执行,而B2-B60000的格式规则/公式位于工作表“规则”中“Cell”B2“&等等,直到Column BY。

提前感谢您的光临!

1 个答案:

答案 0 :(得分:0)

解决方案非常简单。您已完成90%的流程。只需在没有=或其他任何东西的情况下在单元格A2和B2中定义公式(参见示例)。

Formula example

以下是您改进的代码:

Sub repaint()
    Dim ws As Worksheet, wsRules As Worksheet

    'Disable updates/events
    Application.ScreenUpdating = False
    Application.EnableEvents = False

    'Define here your worksheets
    Set ws = Table1
    Set wsRules = Table2

    'Clear and reset format conditions in column A
    With Range(ws.Cells(2, 1), ws.Cells(60000, 1))
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, Formula1:="=" & wsRules.Cells(2, 1).Text
        With .FormatConditions(1)
            'TODO format your stuff
        End With
    End With

    'Clear and reset format conditions in column B
    With Range(ws.Cells(2, 2), ws.Cells(60000, 2))
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, Formula1:="=" & wsRules.Cells(2, 2).Text
        With .FormatConditions(1)
            'TODO format your stuff
        End With
    End With

    'Enable updates/events
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub