Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Форматирование таблицы средствами ВБА - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Форматирование таблицы средствами ВБА
Муля2010 Дата: Понедельник, 16.01.2012, 19:56 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация: 12 ±
Замечаний: 0% ±

День добрый!
Помогите пожалуйста, доработать макрос "ФорматированиеОтчета" , который записаный рекодером. Макрос работает, но не учитывает динамики изменений таблицы., в длину. То есть, из месяца в месяц, таблица может, или удлинняться, или укорачиваться.
И вместе с таблицей, двигаются подписи ответственных лиц. Которые вставляет другой макрос. Всегда в одних и тех же столбцах и на одном и том же расстоянии , от нижнего края таблицы (через одну строку).
Формат выравнивания даных в ячейках, следующий. В закрашеных ячейках - по левому краю, в остальных , по правому. Таблица всегда начинается с 14 -ой строки.
К сообщению приложен файл: -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]

Автор - Саня
Дата добавления - 17.01.2012 в 17:45
Муля2010 Дата: Вторник, 17.01.2012, 23:38 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация: 12 ±
Замечаний: 0% ±

Саня,
СПАСИБО! Макрос работает, только немного тормозит. И, как мне кажется на больших обемах будет тормозить существенно. ниче нельзя сделать, чтоб прискорить?


С ув. Муля!
 
Ответить
СообщениеСаня,
СПАСИБО! Макрос работает, только немного тормозит. И, как мне кажется на больших обемах будет тормозить существенно. ниче нельзя сделать, чтоб прискорить?

Автор - Муля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]

Автор - Саня
Дата добавления - 18.01.2012 в 10:49
Муля2010 Дата: Среда, 18.01.2012, 11:32 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация: 12 ±
Замечаний: 0% ±

Саня, доброго дня!
Вставил. проблема вроди как исчезла. Благодарю за помощь и желаю всего найлучшего!


С ув. Муля!
 
Ответить
СообщениеСаня, доброго дня!
Вставил. проблема вроди как исчезла. Благодарю за помощь и желаю всего найлучшего!

Автор - Муля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]

Которые сбрасывают автоматическое вычисление формул (см. меню Сервис – параметры – вычисления – Автоматически и устанавливает вычисление Вручную.
А без этих строк существенно удлиняется время работы макроса.
Что можна сделать, чтобы и макрос работал как можно быстрее, и не удалялось автовычисление.
Я написал макрос, который восстанавливает автовычисления. Но как мне кажется, лишний макрос в проге – дополнительные проблемы. Или я опасаюсь напрасно?
К сообщению приложен файл: __.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)
Но как мне кажется, лишний макрос в проге – дополнительные проблемы.

лишний макрос, а особенно, в проге - это весьма опасная вещь.
чтобы не пороть околесицу, надо читать книжки, хотя бы чутка...

в конце макроса я тебе советовал совсем другие строки (тебя не смутил двойной сброс автовычислений?), посмотри повнимательней

Автор - Саня
Дата добавления - 06.02.2012 в 21:16
Муля2010 Дата: Вторник, 07.02.2012, 00:04 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация: 12 ±
Замечаний: 0% ±

Саня,
точно был невнимательным при копировании кода, а посколько макросы знаю плохо, то не мог докумекать допущеную ошибку.
Спасибо вам за помощь!
И еще маленький вопросик.
Например, макрос, который формирует отчет при завершении работы выдает сообщение о том, что отчет сформирован.
И вот. Когда мышку навожу на форму из сообщением, курсор принимает форму стрелки. А , когда перевожу на лист, он начинает что то там мотать.
Как это дразнящее явление убрать? То есть, чтобы его не было и в том случае, когда сообщение об ошибке еще находится на экране.


С ув. Муля!
 
Ответить
СообщениеСаня,
точно был невнимательным при копировании кода, а посколько макросы знаю плохо, то не мог докумекать допущеную ошибку.
Спасибо вам за помощь!
И еще маленький вопросик.
Например, макрос, который формирует отчет при завершении работы выдает сообщение о том, что отчет сформирован.
И вот. Когда мышку навожу на форму из сообщением, курсор принимает форму стрелки. А , когда перевожу на лист, он начинает что то там мотать.
Как это дразнящее явление убрать? То есть, чтобы его не было и в том случае, когда сообщение об ошибке еще находится на экране.

Автор - Муля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 надо...

Автор - Саня
Дата добавления - 07.02.2012 в 08:51
Муля2010 Дата: Вторник, 07.02.2012, 11:28 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация: 12 ±
Замечаний: 0% ±

Саня,
Доброго вам дня!
Первое у меня уже работает.
а второе - примите мою благодарность за разъяснение.
И всех вам земных благ!


С ув. Муля!
 
Ответить
СообщениеСаня,
Доброго вам дня!
Первое у меня уже работает.
а второе - примите мою благодарность за разъяснение.
И всех вам земных благ!

Автор - Муля2010
Дата добавления - 07.02.2012 в 11:28
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!