【发布时间】:2016-11-06 17:55:20
【问题描述】:
已解决(在 cmets 中是该问题的解决方案,谢谢 Ron)
刚刚注册,因为我无法找到此任务的答案,尽管我已经非常努力地完成了它而没有打扰。
问题是,每次更改特定单元格的值时,我都会尝试在特定单元格上进行 VLookUp。在我要求 excel 使用“Worksheet_Change”创建它们之前,这些单元格不存在
工作表根据我的要求添加尽可能多的行,并使用我将选择的字段对其进行编辑。
例如。我需要放置 3 个流程变量,所以我在第一行(“$R$30”)旁边输入“3”。通过进行此更改,excel 增加了 2 行(在第一个编程部分的末尾,我得到了已经存在的第一行,然后再增加 2 行来完成我需要的 3 行)。
完成这部分后,我需要使用来自“流程单元”(“$R$...”)的信息,使用“验证数据”列表(已经完成并且工作正常)更新流程定义。自动在其旁边添加定义代码。
例如。当我从验证数据中选择“流量校准”时,旁边会出现“XD61DD”。
对于第一行,它可以正常工作...我无法使其适用于所有添加的行。
这是我一直在编写的代码:(我正在学习,请不要对我太苛刻,我知道这就像石器时代的编码:P)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cant As Integer
Dim RowNumber As Integer
If Target.Address = "$AG$30" Then
If Range("$AG$30") <> "" Then
cant = Range("$AG$30")
For i = 1 To cant - 1
Var = 30 + i
Range("A" & Var).Select
RowNumber = ActiveCell.Row
Rows(RowNumber).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
rango1 = "L" & RowNumber & ":" & "Q" & RowNumber
rango2 = "R" & RowNumber & ":" & "AF" & RowNumber
Range(rango1).Select
Selection.Merge True
Range(rango2).Select
Selection.Merge True
rango3 = "AG" & RowNumber
Range(rango3).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
:=xlBetween
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
Next i
End If
End If
直到这里它工作正常,第一部分仅供参考,但是:
Range("R30").Select
If Target.Address = "$R$30" Then
If Range("$R$30") <> "" Then
Range("$L$30") = Application.VLookup(Range("$R$30"), Range("$BG$3:$BH$9"), 2, False)
End If
If Range("$R$30") = "" Then
Range("$L$30") = ""
End If
End If
End Sub
我留下了“$R$30”,因为它工作正常,但我需要对“$R$31”执行相同的指令,因此,在创建行时。
我真的希望你能帮助我。
提前致谢。
阿古斯
【问题讨论】:
标签: excel vba dynamic vlookup target