更有效的方法来复制VBA/Excel函数



晚上,

我在处理一些代码时遇到了一些小麻烦,我想知道是否有人能帮我。

我有一个Excel工作表,我需要使用Vlookup自动添加框大小,然后锁定单元格,除非选择了"其他",如果删除了公式,则替换它们。为每一行单独编写代码,一切都很完美。然而,我需要运行700多行,我不会写700次,因为这太荒谬了。我试过各种循环来解决这个问题,但我被卡住了。

有人能告诉我如何有效地运行x行吗?因此,这非常适用于第11行,当写入x次时,它适用于多行。当解决方案出现时,我可能会踢自己,这太令人沮丧了。

Private Sub lock_repair(ByVal Target As Range)
'Box 1
ActiveSheet.Unprotect Password:="pass"
If Target.Cells(1).Address = "$C$11" And Target.Cells(1).Value <> "OTHER" Then
Range("D11").Formula = "=IFERROR(VLOOKUP(C11, Data!$D$5:$G$24, 2,FALSE),0)"
Range("E11").Formula = "=IFERROR(VLOOKUP(C11, Data!$D$5:$G$24, 3,FALSE),0)"
Range("F11").Formula = "=IFERROR(VLOOKUP(C11, Data!$D$5:$G$24, 4,FALSE),0)"
ActiveSheet.Range("D11:F11").Locked = True
ElseIf Target.Cells(1).Address = "$C$11" And Target.Cells(1).Value = "OTHER" Then
ActiveSheet.Range("D11:F11").Locked = False

End If
ActiveSheet.Protect Password:="pass", UserInterfaceOnly:=True
End Sub

提前干杯。Dave

你是对的。您需要先在备份上进行测试。

Private Sub lock_repair(ByVal Target As Range)
'Box 1
ActiveSheet.Unprotect Password:="pass"
If Target.Cells(1).Column = 3 And Target.Cells(1).Value <> "OTHER" Then
Range("D" & Target.Row).Formula = "=IFERROR(VLOOKUP(C" & Target.Row & ", Data!$D$5:$G$24, 2,FALSE),0)"
Range("E" & Target.Row).Formula = "=IFERROR(VLOOKUP(C" & Target.Row & ", Data!$D$5:$G$24, 3,FALSE),0)"
Range("F" & Target.Row).Formula = "=IFERROR(VLOOKUP(C" & Target.Row & ", Data!$D$5:$G$24, 4,FALSE),0)"
ActiveSheet.Range("D" & Target.Row & ":F" & Target.Row).Locked = True
ElseIf Target.Cells(1).Column = 3 And Target.Cells(1).Value = "OTHER" Then
ActiveSheet.Range("D" & Target.Row & ":F" & Target.Row).Locked = False

End If
ActiveSheet.Protect Password:="pass", UserInterfaceOnly:=True
End Sub

最新更新