检查单元格是否为空,如果为空,则填充单元格,然后将结果与旧值进行比较&;如果不同,请使用VBA高亮显示?

检查单元格是否为空,如果为空,则填充单元格,然后将结果与旧值进行比较&;如果不同,请使用VBA高亮显示?,vba,excel,formatting,Vba,Excel,Formatting,我试图让这个函数在Z列中的一系列值之间循环,从第6行到存储在OS_PLs变量中的数字。我希望它检查单元格中是否已经有发票号……如果有,则转到下一个单元格……但是如果没有,则将此匹配公式放入,以查看它是否可以在平衡表上找到相应的发票号。然后,如果它在单元格中放置了原始值以外的内容,则使用黑色哈希标记以橙色突出显示该单元格 为了实现这一点,我尝试首先将初始值存储在变量“valuestore”中 接下来,我尝试确保清除上次运行此函数时仅包含“”的所有单元格(稍后在宏中,它复制范围并粘贴为值以去除公式)

我试图让这个函数在Z列中的一系列值之间循环,从第6行到存储在OS_PLs变量中的数字。我希望它检查单元格中是否已经有发票号……如果有,则转到下一个单元格……但是如果没有,则将此匹配公式放入,以查看它是否可以在平衡表上找到相应的发票号。然后,如果它在单元格中放置了原始值以外的内容,则使用黑色哈希标记以橙色突出显示该单元格

为了实现这一点,我尝试首先将初始值存储在变量“valuestore”中

接下来,我尝试确保清除上次运行此函数时仅包含“”的所有单元格(稍后在宏中,它复制范围并粘贴为值以去除公式),以便“isempty”检查正常工作

接下来,我让它检查单元格是否为空,如果为空,它应该只移动到下一个I,但如果为空,那么它应该输入匹配公式

最后,假设上一步中的单元格为空,则应将新值与旧值进行比较,如果不同,则应突出显示该单元格

无论出于何种原因,这似乎是在清除每个单元格,它似乎总是不显示valuestore变量的值,并且它在每个单元格中输入公式。它似乎唯一正确的做法(某种程度上)是突出显示以值结尾的单元格,而不是突出显示保留“”的单元格。但是,它也会突出显示最初包含发票号的单元格,这些发票号已被删除并已被覆盖

有人有什么想法吗

谢谢

For i = 6 To OS_PLs

   Dim valuestore As String
   Range("Z" & i).Value = valuestore
   MsgBox (valuestore)

    If Range("Z" & i).Value = """" Then
        Range("Z" & i).Clear
    End If

    If IsEmpty(Range("Z" & i)) Then
        Range("Z" & i).Select
            ActiveCell.FormulaR1C1 = _
                "=IFERROR(IF(LEFT(INDEX('AR balance.xlsx'!AR_Invoice_Nums,MATCH(RC[-20],'AR balance.xlsx'!AR_PL_Nums,0)),5)=""CMSHK"","""",INDEX('AR balance.xlsx'!AR_Invoice_Nums,MATCH(RC[-20],'AR balance.xlsx'!AR_PL_Nums,0))),"""")"

        If Not (Range("Z" & i)) = """" Then
            If Not (Range("Z" & i)) = valuestore Then
                With Selection.Interior
                .Pattern = xlUp
                .PatternColorIndex = xlAutomatic
                .Color = 49407
                .TintAndShade = 0
                .PatternTintAndShade = 0
                End With
            End If
        End If
    Else
    End If
Next i

对于空白单元格
范围(“Z”&i)。Value=“”
将始终返回
FALSE

Range(“Z”&i).Value=”“
将返回
TRUE


Range(“Z”&i).Value=vbNullString
可能是一个更具体的测试。

变量valuestore的值是多少。Range(“Z”&i).Value=valuestore不设置变量的值,它将valuestore值放入范围中。捕捉得好。谢谢……大概400行代码之后,我的大脑被炸了,我倒着输入!