在VBA宏中执行简单的数学运算

时间:2019-01-31 17:50:07

标签: excel vba

我正在尝试对一列数字进行简单检查。检查是“如果大于50则减去50”,然后我可能需要进行一些突出显示/格式化,以显示该单元已被操纵。

工作表名称每次都会更改,因此我不想指定工作表名称。另外,行数会改变,因此我一直在使用遍历每一行的“范围”。

我有一个代码段,可以将单元格值设置为文本,但是我不知道如何对所讨论的单元格执行简单的数学运算。

这是用于更改值的代码段。

Public Sub testforfifty()
    Dim rcell As Range, rng As Range
    Set rng = Application.ActiveSheet.Range("D1:D" & Application.ActiveSheet.UsedRange.Rows.Count)
    For Each rcell In rng.Cells
        If rcell.Value > 50 Then rcell.Value = "GreaterThan50"
    Next rcell
End Sub

我需要的是这样的

Public Sub testforfifty()
    Dim rcell As Range, rng As Range
    Set rng = Application.ActiveSheet.Range("D1:D" & Application.ActiveSheet.UsedRange.Rows.Count)
    For Each rcell In rng.Cells
        If rcell.Value > 50 Then rcell.Value = rcell - 50
        Target.Interior.ColorIndex = 8
    Next rcell
End Sub

2 个答案:

答案 0 :(得分:0)

问题是我的某些单元格中有文本而不是数字,并且不仅向前移动,而且停止并出现错误。 “可以满足我的需要”的代码可以工作,但是不能处理非整数,并且如果获取带有文本的单元格,则循环会中断。另外,突出部分还没有成型,但是这是一个单独的线程/问题,我仍然工作在我自己。

我添加了它,即使它碰到不是数字的单元格(并且只是移至下一个单元格),它也可以正常工作

   If IsNumeric(rcell.Value) = True Then

答案 1 :(得分:0)

在那里获取一个Clng()来强制表示单元格值。但如果通过文本,则提前警告会引发错误!

Clng(rcell.Value) > 50