У меня есть макрос, который создает дополнительный диапазон от одного заданного, в зависимости от некоторых критериев. Этот поддиапазон затем копируется в определенном месте, где он формирует данные, считанные диаграммой.Избегание смены фокуса при выборе диапазона - Excel
Макрос вызывается каждый раз, когда я нажимаю на счетчик, так как это изменяет исходный диапазон, и поэтому необходимо вычислить новый дополнительный диапазон.
Эта процедура работает нормально, хотя она, вероятно, очень примитивна (первый опыт кодирования с VBA-Excel). Только когда я нажимаю на счетчик, чтобы обновлять данные и запускать процедуру, «фокус» листа перемещается от местоположения кнопки до начала диапазона, на котором работает макрос.
Я преодолеваю это, используя Application.Goto в конце процедуры, чтобы вернуть верхний левый угол окна туда, где находится Chart и кнопка.
Однако это означает, что каждый раз, когда я запускаю макрос, содержимое окна перемещается в диапазон, а затем обратно туда, где я его хочу. Это не очень изящно, помимо потенциальной причины морской болезни ;-)
Мне было интересно, могу ли я избежать этого и как.
спасибо за любой ввод, код следует.
Sub test_copy2()
Dim InRange As Range
Dim c As Range, o As Range, t As Range
Dim r As Integer
Set InRange = Cells.Range("M434:ATF434")
Set o = Cells.Range("L434")
For Each c In InRange
If c.Offset(-219, 0).Value = 8448 Then
Set t = Application.Union(o, c)
Set o = t
End If
Next c
o.Copy
InRange(1, 1).Offset(2, -1).PasteSpecial (xlPasteValues)
Application.Goto Cells.Range("AF456"), Scroll:=True
End Sub
вам нужно 'Pastespecial' ли? Если нет, то используйте это, и сдвиг не произойдет. O.Copy InRange (1, 1) .Offset (2, -1) ' –
Спасибо за ответ Сидтарт. Не уверен, что я понимаю ваш вопрос. Когда я «оценил» необходимый диапазон, то есть знаю, какие ячейки удовлетворяют критерию, тогда мне нужно «физически» иметь эти ячейки где-то еще на листе, так как они представляют собой набор данных, который я должен отображать. –
См. Мой ответ ниже: –