【问题标题】:More efficient method in order to replicate function VBA/Excel更有效的方法来复制函数 VBA/Excel
【发布时间】:2017-10-17 16:01:35
【问题描述】:

晚上好,

我一直在编写的一些代码遇到了一些问题,想知道是否有人可以帮助我。

我有一个 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

提前干杯。 戴夫

【问题讨论】:

    标签: excel vba loops


    【解决方案1】:

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

        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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      相关资源
      最近更新 更多