Я пытаюсь создать код, который будет переключать ячейки в строке между введенной пользователем переменной или одной, вычисленной из таблицы поиска. У меня есть тот, который работает в основном, но он работает очень медленно! So:Добавить формулу в ячейки при выборе
Какие-либо предложения по этому поводу работают быстрее?
Как я могу заставить его смотреть только на ячейки, где изменяется значение в столбце (с выпадающим списком автоматической/ручной проверки данных)?
Я удалил формулу из нижеследующего, поскольку они немного длинны.
Код:
Application.ScreenUpdating = False
Application.AutoCorrect.AutoFillFormulasInLists = False
'define variables
Dim Tbl As Range
Dim RngAuto As Range
Dim TblRows As Integer
Dim i As Integer
Dim cell As Range
Set Tbl = Range(ActiveSheet.ListObjects(1))
TblRows = Tbl.Rows.Count
'MsgBox ("Warning, proceeding will clear all data for this row!")
For i = 1 To TblRows
If Tbl(i, 8).Text = "Aut" Then 'if set to automatic add formlars to cells
Tbl(i, 20).FormulaR1C1 = "Formula Here"
Tbl(i, 20).Interior.ColorIndex = 37
Tbl(i, 21).FormulaR1C1 = "Formula Here"
Tbl(i, 21).Interior.ColorIndex = 37
Tbl(i, 22).FormulaR1C1 = "Formula Here"
Tbl(i, 22).Interior.ColorIndex = 37
Tbl(i, 25).FormulaR1C1 = "Formula Here"
Tbl(i, 25).Interior.ColorIndex = 37
Tbl(i, 30).FormulaR1C1 = "Formula Here"
Tbl(i, 30).Interior.ColorIndex = 37
Tbl(i, 31).FormulaR1C1 = "Formula Here"
Tbl(i, 31).Interior.ColorIndex = 37
Tbl(i, 32).FormulaR1C1 = "Formula Here"
Tbl(i, 32).Interior.ColorIndex = 37
Tbl(i, 33).FormulaR1C1 = "Formula Here"
Tbl(i, 33).Interior.ColorIndex = 37
Tbl(i, 34).FormulaR1C1 = "Formula Here"
Tbl(i, 34).Interior.ColorIndex = 37
Else
Set RngAuto = Application.Union(Tbl(i, 20), Tbl(i, 21), Tbl(i, 22), Tbl(i, 25), Tbl(i, 30), Tbl(i, 31), Tbl(i, 32), Tbl(i, 33), Tbl(i, 34))
With RngAuto
.Interior.ColorIndex = 0
.Select
End With
For Each cell In Selection
cell.Value = cell.Value
Next cell
End If
Next i
Application.ScreenUpdating = True
End Sub
Заранее спасибо.
Попробуйте отключить и использовать 'Application.EnableEvents' –
' Как я могу сделать так, чтобы он смотрел только на ячейки, где значение в столбце (с выпадающим списком автоматической/ручной проверки данных) изменяется? 'Если значения изменены пользователем, а не формулой, то используйте «Worksheet_Change». См. [ЭТО] (http://stackoverflow.com/questions/13860894/ms-excel-crashes-when-vba-code-runs/13861640#13861640) 'Если не пересекаться (target, Columns (1)), то ничего 'Заменить' Столбцы (1) 'соответствующим столбцом. –
Отлично, спасибо. – Dan