解決(在評論是針對這個問題的解決,謝謝羅恩)
剛剛簽署了,因爲我沒能找到一個答案,這個任務,雖然我已經試過真的很難做到這一點沒有困擾。動態Target.Adress Excel VBA中
事情是,我試圖在特定的單元格每次他們改變它的值時做一個VLookUp。直到我要求Excel使用「Worksheet_Change」創建它們時,這些單元格不存在
工作表添加儘可能多的行,然後根據需要選擇的字段進行編輯。
例如。我需要放3個過程變量,所以我在第一行旁邊輸入「3」(「$ R $ 30」)。通過這樣的改變,excel增加了2行(在第一個編程部分的末尾,我得到了第一個已經存在的部分,然後再增加2個部分來完成我需要的3行)。
完成這部分,我需要使用「process cell」(「$ R $ ...」)中的信息來更新具有「驗證數據」列表(已經完成且工作正常)的流程定義需要自動添加一個定義代碼。
例如。當我從驗證數據中選擇「Flow Calibration」時,我會在它旁邊看到「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「,等等,當行被創建。
我真的希望你能幫助我。
在此先感謝。
AGUS
我剛纔試過,它不工作...「類型不匹配」在「如果目標<>」「然後_」...不是確定「禁用事件」可以在哪裏工作 –
如果'Target'多於一個單元格,就會發生這種情況。換句話說,如果你的選擇恰好是多個單元格。查看我的編輯解決方案。 –
在事件處理程序運行時禁用事件的原因是爲了防止在事件處理程序運行時觸發事件處理程序。這可能導致無限循環。在調試時需要小心,因爲調試停止不會重新啓用事件處理程序---需要手動完成。 –