Vba excel как обновить лист
Всем доброго времени суток, господа!
Пришло время мне создавать темы и задавать вопросы!Попробовал написать макрос.Вот он[vba]
Sub Макрос2()
'
' Макрос2 Макрос
'
'
Windows("план сентябрь-ноябрь 2015.xlsx").Activate
Sheets("ПЛАН").Select
Range("A1:CA214").Select
Selection.Copy
Windows("Закупки СЕНТЯБРЬ 2015.xlsm").Activate
Sheets("ПЛАН").Select
Range("A1").Select
ActiveSheet.Paste
End Sub
[/vba]вроде работает,но есть пара вопросов.Как сделать так, что бы он мог работать и с закрытой книгой "план сентябрь-ноябрь 2015.xlsx". И как сделать , что бы он срабатывал при открытии книги "Закупки СЕНТЯБРЬ 2015.xlsm"
[p.s.]записано макрорекордером,малость подредактировано мной.
и вдогонку:нажимаю исходный текст и не вижу макроса.где он?
Всем доброго времени суток, господа!
Пришло время мне создавать темы и задавать вопросы!Попробовал написать макрос.Вот он[vba]
Sub Макрос2()
'
' Макрос2 Макрос
'
'
Windows("план сентябрь-ноябрь 2015.xlsx").Activate
Sheets("ПЛАН").Select
Range("A1:CA214").Select
Selection.Copy
Windows("Закупки СЕНТЯБРЬ 2015.xlsm").Activate
Sheets("ПЛАН").Select
Range("A1").Select
ActiveSheet.Paste
End Sub
[/vba]вроде работает,но есть пара вопросов.Как сделать так, что бы он мог работать и с закрытой книгой "план сентябрь-ноябрь 2015.xlsx". И как сделать , что бы он срабатывал при открытии книги "Закупки СЕНТЯБРЬ 2015.xlsm"
[p.s.]записано макрорекордером,малость подредактировано мной.
и вдогонку:нажимаю исходный текст и не вижу макроса.где он? китин
Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
Sub Макрос2()
'
' Макрос2 Макрос
'
'
Windows("план сентябрь-ноябрь 2015.xlsx").Activate
Sheets("ПЛАН").Select
Range("A1:CA214").Select
Selection.Copy
Windows("Закупки СЕНТЯБРЬ 2015.xlsm").Activate
Sheets("ПЛАН").Select
Range("A1").Select
ActiveSheet.Paste
End Sub
[/vba]вроде работает,но есть пара вопросов.Как сделать так, что бы он мог работать и с закрытой книгой "план сентябрь-ноябрь 2015.xlsx". И как сделать , что бы он срабатывал при открытии книги "Закупки СЕНТЯБРЬ 2015.xlsm"
[p.s.]записано макрорекордером,малость подредактировано мной.
и вдогонку:нажимаю исходный текст и не вижу макроса.где он? Автор - китин
Дата добавления - 02.09.2015 в 15:56
мой инструмент Excel выполняет длинную задачу, и я пытаюсь быть добрым к пользователю, предоставляя отчет о ходе работы в строке состояния или в некоторой ячейке на листе, как показано ниже. Но экран не обновляется или перестает обновляться в какой-то момент (например, 33%). Задача в конечном итоге завершается, но индикатор выполнения бесполезен.
что я могу сделать, чтобы принудительно обновить экран?
Я использую Excel 2003.
добавить функция doevents функция внутри цикла, см. ниже.
вы также можете убедиться, что строка состояния видна пользователю и сбросить ее после завершения кода.
текстовые поля в листах иногда не обновляются когда изменяется их текст или форматирование, и даже команда DoEvent не помогает.
поскольку в Excel нет команды для обновления листа таким образом, пользовательская форма может быть обновлена, это необходимо чтобы использовать трюк, чтобы заставить Excel обновить экран.
следующие команды, кажется, сделать трюк:
вызовите DoEvents в петле.
это повлияет на производительность, поэтому вы можете вызвать его только на каждой, скажем, 10-й итерации.
Однако, если у вас есть только 30, это не проблема.
это не прямой ответ на ваш вопрос вообще, а просто предоставление альтернативы. Я нашел во многих длинных вычислениях Excel большую часть времени ожидания имеет значения обновления Excel на экране. Если это так, вы можете вставить следующий код в передней части вашего субпартнера:
и положить этому конец
я обнаружил, что это часто ускоряет любой код, с которым я работаю, настолько, что приходится предупреждать пользователя о прогресс не нужен. Это просто идея для вас, чтобы попробовать, и ее эффективность в значительной степени зависит от вашего листа и расчетов.
в частности, если вы имеете дело с пользовательская форма, то вы можете попробовать перекрашивать метод. Вы можете столкнуться с проблемой с функция doevents Если вы используете триггеры событий в вашей форме. Например, любые клавиши, нажатые во время работы функции, будут отправлены функция doevents ввод с клавиатуры будет обработан до обновления экрана, поэтому, если вы меняете ячейки в электронной таблице, удерживая одну из клавиш со стрелками на клавиатура, затем событие изменения ячейки будет продолжать работать до завершения основной функции.
пользовательская форма не будет обновляться в некоторых случаях, потому что функция doevents будет стрелять события; однако,перекрашивать обновит пользовательскую форму, и пользователь увидит изменения на экране, даже если другое событие сразу же следует за предыдущим событием.
в коде UserForm это так же просто, как:
написать DoEvents непосредственно перед строкой, в которой вы обновляете пользовательский интерфейс, он должен работать.
У меня есть книга с 20 различными сводными таблицами. Есть ли простой способ найти все сводные таблицы и обновить их в VBA?
или, если ваша версия Excel достаточно старый,
этот код VBA обновит все сводные таблицы / диаграммы в книге.
другой непрограммный вариант:
- щелкните правой кнопкой мыши на каждой сводной таблице
- выберите параметры таблицы
- ТИК 'открыть'.
- нажмите на кнопку OK
это обновит сводную таблицу при каждом открытии книги.
ActiveWorkbook.RefreshAll обновляет все, не только сводные таблицы, но и запросы ODBC. У меня есть несколько запросов VBA, которые ссылаются на подключения к данным, и с помощью этой опции происходит сбой, поскольку команда запускает подключения к данным без подробностей, предоставленных из VBA
Я рекомендую этот вариант, если вы хотите обновить только пивоты
при определенных обстоятельствах вы можете различать сводную таблицу и ее сводную кэш-память. Кэш имеет свой собственный метод обновления и свои собственные коллекции. Таким образом, мы могли бы обновить все PivotCaches вместо сводных таблиц.
разница? Когда вы создаете новую сводную таблицу, вас спрашивают, Хотите ли вы ее на основе предыдущей таблицы. Если вы скажете нет, эта сводная таблица получает свой собственный кэш и удваивает размер исходных данных. Если вы говорите, Да, вы держите Книга небольшая, но ее можно добавить в коллекцию сводных таблиц, имеющих общий кэш. Вся коллекция обновляется при обновлении любой сводной таблицы в этой коллекции. Таким образом, можно представить себе разницу между обновлением каждого кэша в книге и обновлением каждой сводной таблицы в книге.
в панели инструментов сводной таблицы есть опция обновить все. Этого достаточно. Не нужно делать ничего другого.
у вас сводные таблицы коллекция на VB лист "объект". Таким образом, быстрый цикл, как это будет работать:
Записки из окопов:
- не забудьте снять защиту с любых защищенных листов перед обновлением сводной таблицы.
- сохранить часто.
- Я подумаю о большем и обновлю в свое время. :)
код используется в модуле активировать лист, поэтому он отображает мерцание / сбой при активации листа.
даже мы можем обновить конкретное соединение и, в свою очередь, он обновит все шарниры, связанные с ним.
для этого кода я создал slicer из таблицы, присутствующей в Excel:
я использовал команду, указанную ниже, в недавнем прошлом, и, похоже, она работает нормально.
надеюсь, что это поможет.
Если вы используете MS Excel 2003, то перейдите в вид - >панель инструментов - >сводная таблица из этой панели инструментов мы можем сделать обновление, нажав ! этот символ.
Здравствуйте!
Подскажите пожалуйста как можно автоматически обновить лист при поступлении новых данных
и в чем у меня возможная ошибка. Описание на скриншоте.
Сам код, не знаю в чем ошибка. Спец. я довольно слабый пока.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, j As Integer
'Application.Calculate
'If Not Intersect(Target, Range("C2:C21")) Is Nothing Then
'Application.EnableEvents = False
For j = 1 To Cells(2, 12).Value
For i = 1 To 20
If Cells(1 + j, 6).Value = Cells(1 + i, 2).Value Then
If Cells(1 + i, 1).Value <> 0 Then
Cells(1 + j, 5).Value = Cells(1 + j, 5).Value + Cells(1 + i, 1).Value
Cells(1 + i, 1).Value = 0
End If
End If
Next
Next
'Application.EnableEvents = True
'End If
' If Not Intersect(Target, Range("A2:A21")) Is Nothing Then
' Application.EnableEvents = False
For i = 1 To 20
For j = 1 To Cells(2, 12).Value
If Cells(1 + j, 6).Value = Cells(1 + i, 2).Value Then
If Cells(1 + i, 3).Value <> 0 Then
Cells(1 + j, 7).Value = Cells(1 + j, 7).Value + Cells(1 + i, 3).Value
Cells(1 + i, 3).Value = 0
End If
End If
Next
Next
'Application.EnableEvents = True
'End If
End Sub
Здравствуйте!
Подскажите пожалуйста как можно автоматически обновить лист при поступлении новых данных
и в чем у меня возможная ошибка. Описание на скриншоте.
Сам код, не знаю в чем ошибка. Спец. я довольно слабый пока.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, j As Integer
'Application.Calculate
'If Not Intersect(Target, Range("C2:C21")) Is Nothing Then
'Application.EnableEvents = False
For j = 1 To Cells(2, 12).Value
For i = 1 To 20
If Cells(1 + j, 6).Value = Cells(1 + i, 2).Value Then
If Cells(1 + i, 1).Value <> 0 Then
Cells(1 + j, 5).Value = Cells(1 + j, 5).Value + Cells(1 + i, 1).Value
Cells(1 + i, 1).Value = 0
End If
End If
Next
Next
'Application.EnableEvents = True
'End If
' If Not Intersect(Target, Range("A2:A21")) Is Nothing Then
' Application.EnableEvents = False
For i = 1 To 20
For j = 1 To Cells(2, 12).Value
If Cells(1 + j, 6).Value = Cells(1 + i, 2).Value Then
If Cells(1 + i, 3).Value <> 0 Then
Cells(1 + j, 7).Value = Cells(1 + j, 7).Value + Cells(1 + i, 3).Value
Cells(1 + i, 3).Value = 0
End If
End If
Next
Next
'Application.EnableEvents = True
'End If
End Sub
Сам код, не знаю в чем ошибка. Спец. я довольно слабый пока.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, j As Integer
'Application.Calculate
'If Not Intersect(Target, Range("C2:C21")) Is Nothing Then
'Application.EnableEvents = False
For j = 1 To Cells(2, 12).Value
For i = 1 To 20
If Cells(1 + j, 6).Value = Cells(1 + i, 2).Value Then
If Cells(1 + i, 1).Value <> 0 Then
Cells(1 + j, 5).Value = Cells(1 + j, 5).Value + Cells(1 + i, 1).Value
Cells(1 + i, 1).Value = 0
End If
End If
Next
Next
'Application.EnableEvents = True
'End If
' If Not Intersect(Target, Range("A2:A21")) Is Nothing Then
' Application.EnableEvents = False
For i = 1 To 20
For j = 1 To Cells(2, 12).Value
If Cells(1 + j, 6).Value = Cells(1 + i, 2).Value Then
If Cells(1 + i, 3).Value <> 0 Then
Cells(1 + j, 7).Value = Cells(1 + j, 7).Value + Cells(1 + i, 3).Value
Cells(1 + i, 3).Value = 0
End If
End If
Next
Next
'Application.EnableEvents = True
'End If
End Sub
И сам файл. Автор - foxrm
Дата добавления - 23.09.2013 в 20:18
Есть рабочий макрос на обновление данных в книге каждую секунду,
много ячеек с показателями времени, которые нужно видеть и понимать,что процесс идет
[vba]
Когда у Вас появится personal.xls* - то это файл вообще не сможете закрыть (если нет запроса разрешить макросы). Этот макрос времени нужно дорабатывать.
shurikus также обращал внимание на проблему файла с этим макросом
ВОПРОС: каким другим методом можно нормально пересчитать активный лист (обновить данные)
Есть рабочий макрос на обновление данных в книге каждую секунду,
много ячеек с показателями времени, которые нужно видеть и понимать,что процесс идет
[vba]
Когда у Вас появится personal.xls* - то это файл вообще не сможете закрыть (если нет запроса разрешить макросы). Этот макрос времени нужно дорабатывать.
shurikus также обращал внимание на проблему файла с этим макросом
ВОПРОС: каким другим методом можно нормально пересчитать активный лист (обновить данные) VN
Есть рабочий макрос на обновление данных в книге каждую секунду,
много ячеек с показателями времени, которые нужно видеть и понимать,что процесс идет
[vba]
Когда у Вас появится personal.xls* - то это файл вообще не сможете закрыть (если нет запроса разрешить макросы). Этот макрос времени нужно дорабатывать.
shurikus также обращал внимание на проблему файла с этим макросом
ВОПРОС: каким другим методом можно нормально пересчитать активный лист (обновить данные) Автор - VN
Дата добавления - 21.03.2014 в 18:17
А чем не устраивает нынешний метод и зачем пересчитывать весь файл , а не только нужные ячейки? Stormy
Stormy,
Этот метод отлично выполняет свою задачу - но при открытии второго файла их уже не закрыть простым способом,
Нужные ячейки указать можно, но проблема не в этом
Stormy,
Этот метод отлично выполняет свою задачу - но при открытии второго файла их уже не закрыть простым способом,
Нужные ячейки указать можно, но проблема не в этом VN
VN, а почему Вы начали новую тему вместо того чтобы продолжить в той, где Вам начинали пытаться помочь?
Как мы здесь, не зная предыстории, можем догадаться, почему Вам обязательно нужно принудительно обновлять лист, а автоматическое обновление Вас не устраивает?
Да и цитаты Вы оформляете так, что не понятно, когда и по какому поводу они были сказаны (без ссылки, даты, времени)…
Ну неужели так трудно в нужном посте выделить цитируемый фрагмент и просто нажать там же "Цитата", а потом уже скопипастить автоматически созданную и корректно оформленную цитату туда, куда Вам нужно?
VN, а почему Вы начали новую тему вместо того чтобы продолжить в той, где Вам начинали пытаться помочь?
Как мы здесь, не зная предыстории, можем догадаться, почему Вам обязательно нужно принудительно обновлять лист, а автоматическое обновление Вас не устраивает?
Да и цитаты Вы оформляете так, что не понятно, когда и по какому поводу они были сказаны (без ссылки, даты, времени)…
Ну неужели так трудно в нужном посте выделить цитируемый фрагмент и просто нажать там же "Цитата", а потом уже скопипастить автоматически созданную и корректно оформленную цитату туда, куда Вам нужно? Alex_ST
С уважением,
Алексей
MS Excel 2003 - the best.
Alex_ST,
Извините, старался следовать правилам - одна тема - один ВОПРОС
к томуже замечание HUGO вообще в теме о формулах
а коректное пользование ФОРУМОМ - простите новичка, исправлюсь,
предистории нет, а были замечания по некоректной работе приложенного файла с ЭТИМ макросом в другой теме
Также была тема с ЭТИМ макросом НО другим вопросом
Alex_ST,
Извините, старался следовать правилам - одна тема - один ВОПРОС
к томуже замечание HUGO вообще в теме о формулах
а коректное пользование ФОРУМОМ - простите новичка, исправлюсь,
предистории нет, а были замечания по некоректной работе приложенного файла с ЭТИМ макросом в другой теме
Также была тема с ЭТИМ макросом НО другим вопросом
а коректное пользование ФОРУМОМ - простите новичка, исправлюсь,
предистории нет, а были замечания по некоректной работе приложенного файла с ЭТИМ макросом в другой теме
Также была тема с ЭТИМ макросом НО другим вопросом
ну вот, цитаты научился вставлять
С уважением к жителям любимого форума Автор - VN
Дата добавления - 22.03.2014 в 00:44
Можно доработать этот ontime - просто время старта нужно заносить через переменную, а при закрытии файла этот таймер отключать.
Вот пример:
[vba]
Можно доработать этот ontime - просто время старта нужно заносить через переменную, а при закрытии файла этот таймер отключать.
Вот пример:
[vba]
[/vba]
StopScript вызывать когда нужно остановить таймер. Автор - Hugo
Дата добавления - 22.03.2014 в 00:53
Читайте также: