#excel #vba
Вопрос:
Поэтому я попытался скопировать свой «TotalRange», и после того, как он был вставлен, я попытался добавить новый список проверки данных в одну из ячеек. Он продолжает получать ошибку в строке 10.
Sub Order_AddTotals()
Dim LastRow As Long
With Sheet1
LastRow = .Range("P8:Q999").Find(What:="*", After:=.Range("P8"), Lookat:=xlPart, LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row 'First Avail Row
.Range("P" amp; LastRow 2 amp; ":W" amp; LastRow 5).Value = .Range("TotalRange").Value
.Range("Q" amp; LastRow 2).Formula = "=Sum(T8:T" amp; LastRow amp; ")" 'Sub Total
.Range("Q" amp; LastRow 3).Formula = "=Q" amp; LastRow 2 amp; "*TaxRate"
.Range("T" amp; LastRow 3).Formula = "=Q" amp; LastRow 2 amp; " Q" amp; LastRow 3 amp; "-T" amp; LastRow 2 'Total
.Range("T" amp; LastRow 4).Formula = "=Q" amp; LastRow 4 amp; "-T" amp; LastRow 3
.Range("Q" amp; LastRow 5).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="=Payment_Method" 'This part is the problem
End With
End Sub
Спасибо вам за вашу помощь.
Ответ №1:
(По крайней мере) две вещи могут привести к тому, что:
а) Формула недействительна. Есть ли у вас именованный диапазон Payment_Method
в вашем листе? Можете ли вы установить это вручную в своем листе?
б) Ячейка уже прошла проверку. Даже если это точно то же самое, вам нужно сначала удалить его. При настройке проверки с помощью кода всегда выдавайте Delete
первый (это нормально, даже если в ячейке в данный момент нет проверки).
With .Range("Q" amp; LastRow 5).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="=Payment_Method"
End With
Комментарии:
1. Спасибо. Очевидно, я не удалил его первым.