Форматирование таблицы средствами ВБА
Муля2010
Дата: Понедельник, 16.01.2012, 19:56 |
Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация:
12
±
Замечаний:
0% ±
День добрый! Помогите пожалуйста, доработать макрос "ФорматированиеОтчета" , который записаный рекодером. Макрос работает, но не учитывает динамики изменений таблицы., в длину. То есть, из месяца в месяц, таблица может, или удлинняться, или укорачиваться. И вместе с таблицей, двигаются подписи ответственных лиц. Которые вставляет другой макрос. Всегда в одних и тех же столбцах и на одном и том же расстоянии , от нижнего края таблицы (через одну строку). Формат выравнивания даных в ячейках, следующий. В закрашеных ячейках - по левому краю, в остальных , по правому. Таблица всегда начинается с 14 -ой строки.
День добрый! Помогите пожалуйста, доработать макрос "ФорматированиеОтчета" , который записаный рекодером. Макрос работает, но не учитывает динамики изменений таблицы., в длину. То есть, из месяца в месяц, таблица может, или удлинняться, или укорачиваться. И вместе с таблицей, двигаются подписи ответственных лиц. Которые вставляет другой макрос. Всегда в одних и тех же столбцах и на одном и том же расстоянии , от нижнего края таблицы (через одну строку). Формат выравнивания даных в ячейках, следующий. В закрашеных ячейках - по левому краю, в остальных , по правому. Таблица всегда начинается с 14 -ой строки. Муля2010
К сообщению приложен файл:
-2.rar
(29.5 Kb)
С ув. Муля!
Ответить
Сообщение День добрый! Помогите пожалуйста, доработать макрос "ФорматированиеОтчета" , который записаный рекодером. Макрос работает, но не учитывает динамики изменений таблицы., в длину. То есть, из месяца в месяц, таблица может, или удлинняться, или укорачиваться. И вместе с таблицей, двигаются подписи ответственных лиц. Которые вставляет другой макрос. Всегда в одних и тех же столбцах и на одном и том же расстоянии , от нижнего края таблицы (через одну строку). Формат выравнивания даных в ячейках, следующий. В закрашеных ячейках - по левому краю, в остальных , по правому. Таблица всегда начинается с 14 -ой строки. Автор - Муля2010 Дата добавления - 16.01.2012 в 19:56
Саня
Дата: Вторник, 17.01.2012, 17:45 |
Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация:
560
±
Замечаний:
0% ±
XL 2016
низ таблицы считается по последней ячейке первого столбца [vba]Код
Sub ФорматированиеОтчета() Const fr As Integer = 14 Dim lr As Integer lr = Range("A" & Cells.Rows.Count).End(xlUp).Row With Range("B" & fr & ":D" & lr) .HorizontalAlignment = xlLeft ' .VerticalAlignment = xlBottom ' .WrapText = False ' .Orientation = 0 '? ' .AddIndent = False ' .IndentLevel = 0 ' .ShrinkToFit = False ' .ReadingOrder = xlContext ' .MergeCells = False End With With Range("E" & fr & ":AE" & lr) .HorizontalAlignment = xlRight ' .VerticalAlignment = xlBottom ' .WrapText = False ' .Orientation = 0 '? ' .AddIndent = False ' .IndentLevel = 0 ' .ShrinkToFit = False ' .ReadingOrder = xlContext ' .MergeCells = False End With lr = lr + 2 With Range("R" & lr & ":W" & lr & "," & "Y" & lr & ":AD" & lr) .HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("A10").Select End Sub
[/vba]
низ таблицы считается по последней ячейке первого столбца [vba]Код
Sub ФорматированиеОтчета() Const fr As Integer = 14 Dim lr As Integer lr = Range("A" & Cells.Rows.Count).End(xlUp).Row With Range("B" & fr & ":D" & lr) .HorizontalAlignment = xlLeft ' .VerticalAlignment = xlBottom ' .WrapText = False ' .Orientation = 0 '? ' .AddIndent = False ' .IndentLevel = 0 ' .ShrinkToFit = False ' .ReadingOrder = xlContext ' .MergeCells = False End With With Range("E" & fr & ":AE" & lr) .HorizontalAlignment = xlRight ' .VerticalAlignment = xlBottom ' .WrapText = False ' .Orientation = 0 '? ' .AddIndent = False ' .IndentLevel = 0 ' .ShrinkToFit = False ' .ReadingOrder = xlContext ' .MergeCells = False End With lr = lr + 2 With Range("R" & lr & ":W" & lr & "," & "Y" & lr & ":AD" & lr) .HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("A10").Select End Sub
[/vba] Саня
Ответить
Сообщение низ таблицы считается по последней ячейке первого столбца [vba]Код
Sub ФорматированиеОтчета() Const fr As Integer = 14 Dim lr As Integer lr = Range("A" & Cells.Rows.Count).End(xlUp).Row With Range("B" & fr & ":D" & lr) .HorizontalAlignment = xlLeft ' .VerticalAlignment = xlBottom ' .WrapText = False ' .Orientation = 0 '? ' .AddIndent = False ' .IndentLevel = 0 ' .ShrinkToFit = False ' .ReadingOrder = xlContext ' .MergeCells = False End With With Range("E" & fr & ":AE" & lr) .HorizontalAlignment = xlRight ' .VerticalAlignment = xlBottom ' .WrapText = False ' .Orientation = 0 '? ' .AddIndent = False ' .IndentLevel = 0 ' .ShrinkToFit = False ' .ReadingOrder = xlContext ' .MergeCells = False End With lr = lr + 2 With Range("R" & lr & ":W" & lr & "," & "Y" & lr & ":AD" & lr) .HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("A10").Select End Sub
[/vba] Автор - Саня Дата добавления - 17.01.2012 в 17:45
Муля2010
Дата: Вторник, 17.01.2012, 23:38 |
Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация:
12
±
Замечаний:
0% ±
Саня , СПАСИБО! Макрос работает, только немного тормозит. И, как мне кажется на больших обемах будет тормозить существенно. ниче нельзя сделать, чтоб прискорить?
Саня , СПАСИБО! Макрос работает, только немного тормозит. И, как мне кажется на больших обемах будет тормозить существенно. ниче нельзя сделать, чтоб прискорить?Муля2010
С ув. Муля!
Ответить
Сообщение Саня , СПАСИБО! Макрос работает, только немного тормозит. И, как мне кажется на больших обемах будет тормозить существенно. ниче нельзя сделать, чтоб прискорить?Автор - Муля2010 Дата добавления - 17.01.2012 в 23:38
Саня
Дата: Среда, 18.01.2012, 10:49 |
Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация:
560
±
Замечаний:
0% ±
XL 2016
не знаю, чему там тормозить, макрос тривиальный, видимо, лист навороченный. добавь в начало и конец своей процедуры: [vba]Код
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual '... Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True
[/vba]
не знаю, чему там тормозить, макрос тривиальный, видимо, лист навороченный. добавь в начало и конец своей процедуры: [vba]Код
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual '... Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True
[/vba] Саня
Ответить
Сообщение не знаю, чему там тормозить, макрос тривиальный, видимо, лист навороченный. добавь в начало и конец своей процедуры: [vba]Код
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual '... Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True
[/vba] Автор - Саня Дата добавления - 18.01.2012 в 10:49
Муля2010
Дата: Среда, 18.01.2012, 11:32 |
Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация:
12
±
Замечаний:
0% ±
Саня , доброго дня! Вставил. проблема вроди как исчезла. Благодарю за помощь и желаю всего найлучшего!
Саня , доброго дня! Вставил. проблема вроди как исчезла. Благодарю за помощь и желаю всего найлучшего!Муля2010
С ув. Муля!
Ответить
Сообщение Саня , доброго дня! Вставил. проблема вроди как исчезла. Благодарю за помощь и желаю всего найлучшего!Автор - Муля2010 Дата добавления - 18.01.2012 в 11:32
Муля2010
Дата: Понедельник, 06.02.2012, 20:02 |
Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация:
12
±
Замечаний:
0% ±
День добрый! Макрописцы, подскажите пожалуйста, как быть. Есть макрос для форматирования таблицы [vba]Код
Sub ФорматированиеОтчета() 'Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Const fr As Integer = 14 Dim lr As Integer lr = Range("A" & Cells.Rows.Count).End(xlUp).Row With Range("B" & fr & ":D" & lr) .HorizontalAlignment = xlLeft End With With Range("E" & fr & ":AE" & lr) .HorizontalAlignment = xlRight End With lr = lr + 2 With Range("R" & lr & ":W" & lr & "," & "Y" & lr & ":AD" & lr) .HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("A10").Select Application.ScreenUpdating = False Application.Calculation = xlCalculationManual End Sub
[/vba] И в нем имеются следующие строки: В начале макроса: [vba]Код
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual
[/vba] И в коце: [vba]Код
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual
[/vba] Которые сбрасывают автоматическое вычисление формул (см. меню Сервис – параметры – вычисления – Автоматически и устанавливает вычисление Вручную. А без этих строк существенно удлиняется время работы макроса. Что можна сделать, чтобы и макрос работал как можно быстрее, и не удалялось автовычисление. Я написал макрос, который восстанавливает автовычисления. Но как мне кажется, лишний макрос в проге – дополнительные проблемы. Или я опасаюсь напрасно?
День добрый! Макрописцы, подскажите пожалуйста, как быть. Есть макрос для форматирования таблицы [vba]Код
Sub ФорматированиеОтчета() 'Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Const fr As Integer = 14 Dim lr As Integer lr = Range("A" & Cells.Rows.Count).End(xlUp).Row With Range("B" & fr & ":D" & lr) .HorizontalAlignment = xlLeft End With With Range("E" & fr & ":AE" & lr) .HorizontalAlignment = xlRight End With lr = lr + 2 With Range("R" & lr & ":W" & lr & "," & "Y" & lr & ":AD" & lr) .HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("A10").Select Application.ScreenUpdating = False Application.Calculation = xlCalculationManual End Sub
[/vba] И в нем имеются следующие строки: В начале макроса: [vba]Код
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual
[/vba] И в коце: [vba]Код
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual
[/vba] Которые сбрасывают автоматическое вычисление формул (см. меню Сервис – параметры – вычисления – Автоматически и устанавливает вычисление Вручную. А без этих строк существенно удлиняется время работы макроса. Что можна сделать, чтобы и макрос работал как можно быстрее, и не удалялось автовычисление. Я написал макрос, который восстанавливает автовычисления. Но как мне кажется, лишний макрос в проге – дополнительные проблемы. Или я опасаюсь напрасно? Муля2010
К сообщению приложен файл:
__.rar
(30.2 Kb)
С ув. Муля!
Ответить
Сообщение День добрый! Макрописцы, подскажите пожалуйста, как быть. Есть макрос для форматирования таблицы [vba]Код
Sub ФорматированиеОтчета() 'Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Const fr As Integer = 14 Dim lr As Integer lr = Range("A" & Cells.Rows.Count).End(xlUp).Row With Range("B" & fr & ":D" & lr) .HorizontalAlignment = xlLeft End With With Range("E" & fr & ":AE" & lr) .HorizontalAlignment = xlRight End With lr = lr + 2 With Range("R" & lr & ":W" & lr & "," & "Y" & lr & ":AD" & lr) .HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("A10").Select Application.ScreenUpdating = False Application.Calculation = xlCalculationManual End Sub
[/vba] И в нем имеются следующие строки: В начале макроса: [vba]Код
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual
[/vba] И в коце: [vba]Код
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual
[/vba] Которые сбрасывают автоматическое вычисление формул (см. меню Сервис – параметры – вычисления – Автоматически и устанавливает вычисление Вручную. А без этих строк существенно удлиняется время работы макроса. Что можна сделать, чтобы и макрос работал как можно быстрее, и не удалялось автовычисление. Я написал макрос, который восстанавливает автовычисления. Но как мне кажется, лишний макрос в проге – дополнительные проблемы. Или я опасаюсь напрасно? Автор - Муля2010 Дата добавления - 06.02.2012 в 20:02
Саня
Дата: Понедельник, 06.02.2012, 21:16 |
Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация:
560
±
Замечаний:
0% ±
XL 2016
Quote (Муля2010 )
Но как мне кажется, лишний макрос в проге – дополнительные проблемы.
лишний макрос, а особенно, в проге - это весьма опасная вещь. чтобы не пороть околесицу, надо читать книжки, хотя бы чутка... в конце макроса я тебе советовал совсем другие строки (тебя не смутил двойной сброс автовычислений?), посмотри повнимательней
Quote (Муля2010 )
Но как мне кажется, лишний макрос в проге – дополнительные проблемы.
лишний макрос, а особенно, в проге - это весьма опасная вещь. чтобы не пороть околесицу, надо читать книжки, хотя бы чутка... в конце макроса я тебе советовал совсем другие строки (тебя не смутил двойной сброс автовычислений?), посмотри повнимательнейСаня
Ответить
Сообщение Quote (Муля2010 )
Но как мне кажется, лишний макрос в проге – дополнительные проблемы.
лишний макрос, а особенно, в проге - это весьма опасная вещь. чтобы не пороть околесицу, надо читать книжки, хотя бы чутка... в конце макроса я тебе советовал совсем другие строки (тебя не смутил двойной сброс автовычислений?), посмотри повнимательнейАвтор - Саня Дата добавления - 06.02.2012 в 21:16
Муля2010
Дата: Вторник, 07.02.2012, 00:04 |
Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация:
12
±
Замечаний:
0% ±
Саня , точно был невнимательным при копировании кода, а посколько макросы знаю плохо, то не мог докумекать допущеную ошибку. Спасибо вам за помощь! И еще маленький вопросик. Например, макрос, который формирует отчет при завершении работы выдает сообщение о том, что отчет сформирован. И вот. Когда мышку навожу на форму из сообщением, курсор принимает форму стрелки. А , когда перевожу на лист, он начинает что то там мотать. Как это дразнящее явление убрать? То есть, чтобы его не было и в том случае, когда сообщение об ошибке еще находится на экране.
Саня , точно был невнимательным при копировании кода, а посколько макросы знаю плохо, то не мог докумекать допущеную ошибку. Спасибо вам за помощь! И еще маленький вопросик. Например, макрос, который формирует отчет при завершении работы выдает сообщение о том, что отчет сформирован. И вот. Когда мышку навожу на форму из сообщением, курсор принимает форму стрелки. А , когда перевожу на лист, он начинает что то там мотать. Как это дразнящее явление убрать? То есть, чтобы его не было и в том случае, когда сообщение об ошибке еще находится на экране.Муля2010
С ув. Муля!
Ответить
Сообщение Саня , точно был невнимательным при копировании кода, а посколько макросы знаю плохо, то не мог докумекать допущеную ошибку. Спасибо вам за помощь! И еще маленький вопросик. Например, макрос, который формирует отчет при завершении работы выдает сообщение о том, что отчет сформирован. И вот. Когда мышку навожу на форму из сообщением, курсор принимает форму стрелки. А , когда перевожу на лист, он начинает что то там мотать. Как это дразнящее явление убрать? То есть, чтобы его не было и в том случае, когда сообщение об ошибке еще находится на экране.Автор - Муля2010 Дата добавления - 07.02.2012 в 00:04
Саня
Дата: Вторник, 07.02.2012, 08:51 |
Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация:
560
±
Замечаний:
0% ±
XL 2016
Quote (Муля2010 )
макрос, который формирует отчет при завершении работы выдает сообщение о том, что отчет сформирован.
в конце макроса [vba]Code
msgbox "Отчет сформирован"
[/vba] в конце, запомни. 2-е - это я думаю тебе в корпорацию Microsoft надо...
Quote (Муля2010 )
макрос, который формирует отчет при завершении работы выдает сообщение о том, что отчет сформирован.
в конце макроса [vba]Code
msgbox "Отчет сформирован"
[/vba] в конце, запомни. 2-е - это я думаю тебе в корпорацию Microsoft надо...Саня
Ответить
Сообщение Quote (Муля2010 )
макрос, который формирует отчет при завершении работы выдает сообщение о том, что отчет сформирован.
в конце макроса [vba]Code
msgbox "Отчет сформирован"
[/vba] в конце, запомни. 2-е - это я думаю тебе в корпорацию Microsoft надо...Автор - Саня Дата добавления - 07.02.2012 в 08:51
Муля2010
Дата: Вторник, 07.02.2012, 11:28 |
Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация:
12
±
Замечаний:
0% ±
Саня , Доброго вам дня! Первое у меня уже работает. а второе - примите мою благодарность за разъяснение. И всех вам земных благ!
Саня , Доброго вам дня! Первое у меня уже работает. а второе - примите мою благодарность за разъяснение. И всех вам земных благ!Муля2010
С ув. Муля!
Ответить
Сообщение Саня , Доброго вам дня! Первое у меня уже работает. а второе - примите мою благодарность за разъяснение. И всех вам земных благ!Автор - Муля2010 Дата добавления - 07.02.2012 в 11:28