【问题标题】:Excel VBA change the value of a cell based on the value of another cell row by rowExcel VBA根据另一个单元格的值逐行更改单元格的值
【发布时间】:2020-11-28 05:04:04
【问题描述】:

请看随附的屏幕截图: enter image description here

我想在工作表中添加一个按钮,单击该按钮后,它将逐行检查该行的第一列是否包含“意大利”或“西班牙”。如果是,则应将其点(旁边的单元格)设置为 0。

我想用某种循环或迭代来做(不是用一堆 If/Else If),但我不是 VBA 专家,我是自学的,老实说我不知道不知道怎么做。

感谢您的宝贵时间。

【问题讨论】:

    标签: excel vba loops iteration


    【解决方案1】:

    只要您知道如何转到InsertShapes,选择任何形状(基本矩形、圆形或其他任何形状)并将其放入您的工作表中,您就可以右键单击该形状并指定宏。

    您可以将此宏粘贴到VBA宏编辑器中并保存,然后运行或按照我说的将其分配给您可以随意单击的形状。

    我相信其他人可以给你一个更好的宏。这是非常基本的。并且循环值非常低效且缓慢,但它可以满足您的要求。

    Sub MyFirstMacro()
        Dim myCell As Range
        Dim LastRow As Long
        LastRow = Range("A" & Rows.Count).End(xlUp).Row
    
        For Each myCell In Range("A1:A" & LastRow)
         If IsError(myCell.Value) Then
          myCell.Offset(0, 1) = "Do you know you had an error in " & myCell.Address & "???"
             Else:
                If myCell.Value = "Italy" Or myCell.Value = "Spain" Then
                myCell.Offset(0, 1) = 0
                End If
         End If
        Next myCell
    End Sub
    

    【讨论】:

    • 非常感谢!这对我帮助很大。我被困住了。感谢您的帮助!
    • 具有讽刺意味的是,我确实觉得这个宏是 a) 是的,通过迭代来完成,而且 b) 是一堆 if/else Ifs (本质上)。有一种更快更清洁的方法:(评估范围。方法)和数组。我将把它放在某个地方的代码审查上,这样我也可以学习改进。但是感谢您接受答案!
    猜你喜欢
    • 2019-05-12
    • 2020-12-14
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多