我刚开始在我的作品中使用宏。
我对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