下面的缩写版Macro:从单元格中的公式中检索值到不同的合并单元格中,可以编辑检索到的值

时间:2016-06-14 05:58:28

标签: excel vba excel-vba

我刚开始在我的作品中使用宏。

我对VBA的了解现在非常有限。

我想出了下面的宏,目前工作正常。

我想缩短并固定这个宏。基本上,它的作用是复制并粘贴一个值, vlookup 公式(非VBA)的结果,从一个单元格到另一个单元格,并再次复制该值进入另一个不同的合并和命名单元格,因此可以进行编辑。主要查找值更改时,值更改/更新

这很好但是当我在SUB下添加新的宏时,它很慢。 Range("func_R, job_R, etc,") - 它们是合并的单元格(合并范围各不相同)。

这可以缩短吗?请帮帮我吗?

我已经看到了很多代码,我开始意识到所有这些 vlookup 和以下的宏都可以通过一些简单快速的代码完成。

Private Sub Worksheet_Change(ByVal Target As Range)
    'Value as text
    If Range("F17").Value <> Range("E17").Text Then
        Range("F17").FormulaR1C1 = Range("E17")
        Range("func_R").FormulaR1C1 = Range("F17")
    ElseIf Range("F18").Value <> Range("E18").Text Then
        Range("F18").FormulaR1C1 = Range("E18")
        Range("job_R").FormulaR1C1 = Range("F18")
    ElseIf Range("F20").Value <> Range("E20").Value Then
        Range("F20").FormulaR1C1 = Range("E20")
        Range("purp_R").FormulaR1C1 = Range("F20")
    ElseIf Range("F22").Value <> Range("E22").Value Then
        Range("F22").FormulaR1C1 = Range("E22")
        Range("duty_R").FormulaR1C1 = Range("F22")
    ElseIf Range("F25").Value <> Range("E25").Value Then
        Range("F25").FormulaR1C1 = Range("E25")
        Range("ikey_R").FormulaR1C1 = Range("F25")
    ElseIf Range("F26").Value <> Range("E26").Value Then
        Range("F26").FormulaR1C1 = Range("E26")
        Range("ekey_R").FormulaR1C1 = Range("F26")
    ElseIf Range("F28").Value <> Range("E28").Value Then
        Range("F28").FormulaR1C1 = Range("E28")
        Range("iimp_R").FormulaR1C1 = Range("F28")
    ElseIf Range("F29").Value <> Range("E29").Value Then
        Range("F29").FormulaR1C1 = Range("E29")
        Range("eimp_R").FormulaR1C1 = Range("F29")
    'Generel requirement
    ElseIf Range("F31").Value <> Range("E31").Value Then
        Range("F31").FormulaR1C1 = Range("E31")
        Range("req_1").FormulaR1C1 = Range("F31")
    ElseIf Range("F32").Value <> Range("E32").Value Then
        Range("F32").FormulaR1C1 = Range("E32")
        Range("req_2").FormulaR1C1 = Range("F32")
    ElseIf Range("F33").Value <> Range("E33").Value Then
        Range("F33").FormulaR1C1 = Range("E33")
        Range("req_3").FormulaR1C1 = Range("F33")
    ElseIf Range("F34").Value <> Range("E34").Value Then
        Range("F34").FormulaR1C1 = Range("E34")
        Range("req_4").FormulaR1C1 = Range("F34")
    ElseIf Range("F35").Value <> Range("E35").Value Then
        Range("F35").FormulaR1C1 = Range("E35")
        Range("req_5").FormulaR1C1 = Range("F35")
    End If
End Sub

0 个答案:

没有答案