Range и ColumnWidth упрощение кода
Alex9185
Дата: Вторник, 10.12.2024, 13:17 |
Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация:
0
±
Замечаний:
0% ±
Код позволяет на основе данных в ячейках устанавливать ширину столбцов. Проблема в том, что столбцов много, конечный пока DA, но будет больше. Надо чтобы Range брал значение из строки 12 в своем столбце. [vba]Код
Range("B:B").ColumnWidth = Range("B12").Value Range("C:C").ColumnWidth = Range("C12").Value Range("D:D").ColumnWidth = Range("D12").Value Range("E:E").ColumnWidth = Range("E12").Value Range("F:F").ColumnWidth = Range("F12").Value Range("F:F").ColumnWidth = Range("F12").Value Range("G:G").ColumnWidth = Range("G12").Value Range("H:H").ColumnWidth = Range("H12").Value Range("I:I").ColumnWidth = Range("I12").Value Range("J:J").ColumnWidth = Range("J12").Value Range("K:K").ColumnWidth = Range("K12").Value Range("L:L").ColumnWidth = Range("L12").Value Range("M:M").ColumnWidth = Range("M12").Value Range("N:N").ColumnWidth = Range("N12").Value Range("O:O").ColumnWidth = Range("O12").Value Range("P:P").ColumnWidth = Range("P12").Value Range("Q:Q").ColumnWidth = Range("Q12").Value Range("R:R").ColumnWidth = Range("R12").Value Range("S:S").ColumnWidth = Range("S12").Value Range("T:T").ColumnWidth = Range("T12").Value Range("U:U").ColumnWidth = Range("U12").Value Range("V:V").ColumnWidth = Range("V12").Value Range("W:W").ColumnWidth = Range("W12").Value Range("X:X").ColumnWidth = Range("X12").Value Range("Y:Y").ColumnWidth = Range("Y12").Value Range("Z:Z").ColumnWidth = Range("Z12").Value Range("AA:AA").ColumnWidth = Range("AA12").Value Range("AB:AB").ColumnWidth = Range("AB12").Value Range("AC:AC").ColumnWidth = Range("AC12").Value Range("AE:AE").ColumnWidth = Range("AE12").Value Range("AF:AF").ColumnWidth = Range("AF12").Value Range("AG:AG").ColumnWidth = Range("AG12").Value Range("AH:AH").ColumnWidth = Range("AH12").Value Range("AI:AI").ColumnWidth = Range("AI12").Value Range("AJ:AJ").ColumnWidth = Range("AJ12").Value Range("AK:AK").ColumnWidth = Range("AK12").Value Range("AL:AL").ColumnWidth = Range("AL12").Value Range("AM:AM").ColumnWidth = Range("AM12").Value Range("AN:AN").ColumnWidth = Range("AN12").Value Range("AO:AO").ColumnWidth = Range("AO12").Value Range("AP:AP").ColumnWidth = Range("AP12").Value Range("AQ:AQ").ColumnWidth = Range("AQ12").Value Range("AR:AR").ColumnWidth = Range("AR12").Value Range("AS:AS").ColumnWidth = Range("AS12").Value Range("AT:AT").ColumnWidth = Range("AT12").Value Range("AU:AU").ColumnWidth = Range("AU12").Value Range("AV:AV").ColumnWidth = Range("AV12").Value Range("AW:AW").ColumnWidth = Range("AW12").Value Range("AX:AX").ColumnWidth = Range("AX12").Value .......... Range("DA:DA").ColumnWidth = Range("DA12").Value
[/vba]
Код позволяет на основе данных в ячейках устанавливать ширину столбцов. Проблема в том, что столбцов много, конечный пока DA, но будет больше. Надо чтобы Range брал значение из строки 12 в своем столбце. [vba]Код
Range("B:B").ColumnWidth = Range("B12").Value Range("C:C").ColumnWidth = Range("C12").Value Range("D:D").ColumnWidth = Range("D12").Value Range("E:E").ColumnWidth = Range("E12").Value Range("F:F").ColumnWidth = Range("F12").Value Range("F:F").ColumnWidth = Range("F12").Value Range("G:G").ColumnWidth = Range("G12").Value Range("H:H").ColumnWidth = Range("H12").Value Range("I:I").ColumnWidth = Range("I12").Value Range("J:J").ColumnWidth = Range("J12").Value Range("K:K").ColumnWidth = Range("K12").Value Range("L:L").ColumnWidth = Range("L12").Value Range("M:M").ColumnWidth = Range("M12").Value Range("N:N").ColumnWidth = Range("N12").Value Range("O:O").ColumnWidth = Range("O12").Value Range("P:P").ColumnWidth = Range("P12").Value Range("Q:Q").ColumnWidth = Range("Q12").Value Range("R:R").ColumnWidth = Range("R12").Value Range("S:S").ColumnWidth = Range("S12").Value Range("T:T").ColumnWidth = Range("T12").Value Range("U:U").ColumnWidth = Range("U12").Value Range("V:V").ColumnWidth = Range("V12").Value Range("W:W").ColumnWidth = Range("W12").Value Range("X:X").ColumnWidth = Range("X12").Value Range("Y:Y").ColumnWidth = Range("Y12").Value Range("Z:Z").ColumnWidth = Range("Z12").Value Range("AA:AA").ColumnWidth = Range("AA12").Value Range("AB:AB").ColumnWidth = Range("AB12").Value Range("AC:AC").ColumnWidth = Range("AC12").Value Range("AE:AE").ColumnWidth = Range("AE12").Value Range("AF:AF").ColumnWidth = Range("AF12").Value Range("AG:AG").ColumnWidth = Range("AG12").Value Range("AH:AH").ColumnWidth = Range("AH12").Value Range("AI:AI").ColumnWidth = Range("AI12").Value Range("AJ:AJ").ColumnWidth = Range("AJ12").Value Range("AK:AK").ColumnWidth = Range("AK12").Value Range("AL:AL").ColumnWidth = Range("AL12").Value Range("AM:AM").ColumnWidth = Range("AM12").Value Range("AN:AN").ColumnWidth = Range("AN12").Value Range("AO:AO").ColumnWidth = Range("AO12").Value Range("AP:AP").ColumnWidth = Range("AP12").Value Range("AQ:AQ").ColumnWidth = Range("AQ12").Value Range("AR:AR").ColumnWidth = Range("AR12").Value Range("AS:AS").ColumnWidth = Range("AS12").Value Range("AT:AT").ColumnWidth = Range("AT12").Value Range("AU:AU").ColumnWidth = Range("AU12").Value Range("AV:AV").ColumnWidth = Range("AV12").Value Range("AW:AW").ColumnWidth = Range("AW12").Value Range("AX:AX").ColumnWidth = Range("AX12").Value .......... Range("DA:DA").ColumnWidth = Range("DA12").Value
[/vba] Alex9185
Ответить
Сообщение Код позволяет на основе данных в ячейках устанавливать ширину столбцов. Проблема в том, что столбцов много, конечный пока DA, но будет больше. Надо чтобы Range брал значение из строки 12 в своем столбце. [vba]Код
Range("B:B").ColumnWidth = Range("B12").Value Range("C:C").ColumnWidth = Range("C12").Value Range("D:D").ColumnWidth = Range("D12").Value Range("E:E").ColumnWidth = Range("E12").Value Range("F:F").ColumnWidth = Range("F12").Value Range("F:F").ColumnWidth = Range("F12").Value Range("G:G").ColumnWidth = Range("G12").Value Range("H:H").ColumnWidth = Range("H12").Value Range("I:I").ColumnWidth = Range("I12").Value Range("J:J").ColumnWidth = Range("J12").Value Range("K:K").ColumnWidth = Range("K12").Value Range("L:L").ColumnWidth = Range("L12").Value Range("M:M").ColumnWidth = Range("M12").Value Range("N:N").ColumnWidth = Range("N12").Value Range("O:O").ColumnWidth = Range("O12").Value Range("P:P").ColumnWidth = Range("P12").Value Range("Q:Q").ColumnWidth = Range("Q12").Value Range("R:R").ColumnWidth = Range("R12").Value Range("S:S").ColumnWidth = Range("S12").Value Range("T:T").ColumnWidth = Range("T12").Value Range("U:U").ColumnWidth = Range("U12").Value Range("V:V").ColumnWidth = Range("V12").Value Range("W:W").ColumnWidth = Range("W12").Value Range("X:X").ColumnWidth = Range("X12").Value Range("Y:Y").ColumnWidth = Range("Y12").Value Range("Z:Z").ColumnWidth = Range("Z12").Value Range("AA:AA").ColumnWidth = Range("AA12").Value Range("AB:AB").ColumnWidth = Range("AB12").Value Range("AC:AC").ColumnWidth = Range("AC12").Value Range("AE:AE").ColumnWidth = Range("AE12").Value Range("AF:AF").ColumnWidth = Range("AF12").Value Range("AG:AG").ColumnWidth = Range("AG12").Value Range("AH:AH").ColumnWidth = Range("AH12").Value Range("AI:AI").ColumnWidth = Range("AI12").Value Range("AJ:AJ").ColumnWidth = Range("AJ12").Value Range("AK:AK").ColumnWidth = Range("AK12").Value Range("AL:AL").ColumnWidth = Range("AL12").Value Range("AM:AM").ColumnWidth = Range("AM12").Value Range("AN:AN").ColumnWidth = Range("AN12").Value Range("AO:AO").ColumnWidth = Range("AO12").Value Range("AP:AP").ColumnWidth = Range("AP12").Value Range("AQ:AQ").ColumnWidth = Range("AQ12").Value Range("AR:AR").ColumnWidth = Range("AR12").Value Range("AS:AS").ColumnWidth = Range("AS12").Value Range("AT:AT").ColumnWidth = Range("AT12").Value Range("AU:AU").ColumnWidth = Range("AU12").Value Range("AV:AV").ColumnWidth = Range("AV12").Value Range("AW:AW").ColumnWidth = Range("AW12").Value Range("AX:AX").ColumnWidth = Range("AX12").Value .......... Range("DA:DA").ColumnWidth = Range("DA12").Value
[/vba] Автор - Alex9185 Дата добавления - 10.12.2024 в 13:17
Апострофф
Дата: Вторник, 10.12.2024, 13:37 |
Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 460
Репутация:
127
±
Замечаний:
0% ±
Excel 1997
[vba]Код
Sub AAAAAAAAA() For C = 2 To Columns("DA").Column Columns(C).ColumnWidth = Cells(12, C) Next C End Sub
[/vba]
[vba]Код
Sub AAAAAAAAA() For C = 2 To Columns("DA").Column Columns(C).ColumnWidth = Cells(12, C) Next C End Sub
[/vba] Апострофф
Сообщение отредактировал Апострофф - Вторник, 10.12.2024, 13:39
Ответить
Сообщение [vba]Код
Sub AAAAAAAAA() For C = 2 To Columns("DA").Column Columns(C).ColumnWidth = Cells(12, C) Next C End Sub
[/vba] Автор - Апострофф Дата добавления - 10.12.2024 в 13:37
Alex9185
Дата: Вторник, 10.12.2024, 14:05 |
Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация:
0
±
Замечаний:
0% ±
Большое спасибо. Работает. For C = 2 To Columns("DA").Column Columns©.ColumnWidth = Cells(12, C )почему?
Большое спасибо. Работает. For C = 2 To Columns("DA").Column Columns©.ColumnWidth = Cells(12, C )почему? Alex9185
Сообщение отредактировал Alex9185 - Вторник, 10.12.2024, 15:47
Ответить
Сообщение Большое спасибо. Работает. For C = 2 To Columns("DA").Column Columns©.ColumnWidth = Cells(12, C )почему? Автор - Alex9185 Дата добавления - 10.12.2024 в 14:05
_Boroda_
Дата: Вторник, 10.12.2024, 14:07 |
Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16731
Репутация:
6530
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Думаю, справа налево должно быть быстрее. И обновление экрана еще [vba]Код
Sub ShirCol() Application.ScreenUpdating = 0'откл обновление экрана For C = Columns("DA").Column To 2 Step -1' цикл от номера столбца DA до 2 Columns(C).ColumnWidth = Cells(12, C).Value' ширине столбца присваиваем значение из ячейки 12-й строки этого столбца Next C'окончание цикла Application.ScreenUpdating = 1'обновление экрана включаем End Sub
[/vba]
Думаю, справа налево должно быть быстрее. И обновление экрана еще [vba]Код
Sub ShirCol() Application.ScreenUpdating = 0'откл обновление экрана For C = Columns("DA").Column To 2 Step -1' цикл от номера столбца DA до 2 Columns(C).ColumnWidth = Cells(12, C).Value' ширине столбца присваиваем значение из ячейки 12-й строки этого столбца Next C'окончание цикла Application.ScreenUpdating = 1'обновление экрана включаем End Sub
[/vba] _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Думаю, справа налево должно быть быстрее. И обновление экрана еще [vba]Код
Sub ShirCol() Application.ScreenUpdating = 0'откл обновление экрана For C = Columns("DA").Column To 2 Step -1' цикл от номера столбца DA до 2 Columns(C).ColumnWidth = Cells(12, C).Value' ширине столбца присваиваем значение из ячейки 12-й строки этого столбца Next C'окончание цикла Application.ScreenUpdating = 1'обновление экрана включаем End Sub
[/vba] Автор - _Boroda_ Дата добавления - 10.12.2024 в 14:07
Gustav
Дата: Вторник, 10.12.2024, 14:43 |
Сообщение № 5
Группа: Админы
Ранг: Участник клуба
Сообщений: 2806
Репутация:
1183
±
Замечаний:
±
начинал с Excel 4.0, видел 2.1
Я, может, что-то не понял, но у меня поставленную задачу вполне решает такой код из одного оператора, без цикла по колонкам: [vba]Код
Sub cw() Range("B12:DA12").ColumnWidth = Range("B12:DA12").Value End Sub
[/vba] ВАЖНО! Только не ставьте слева полные колонки типа Range("B:DA").ColumnWidth - зависнете! Можно сориентироваться на другую строку, например, первую: Range("B1:DA1").ColumnWidth. Ведь, в конце концов, чтобы задать ширину всего столбца, достаточно задать ширину только одной его ячейки.
Я, может, что-то не понял, но у меня поставленную задачу вполне решает такой код из одного оператора, без цикла по колонкам: [vba]Код
Sub cw() Range("B12:DA12").ColumnWidth = Range("B12:DA12").Value End Sub
[/vba] ВАЖНО! Только не ставьте слева полные колонки типа Range("B:DA").ColumnWidth - зависнете! Можно сориентироваться на другую строку, например, первую: Range("B1:DA1").ColumnWidth. Ведь, в конце концов, чтобы задать ширину всего столбца, достаточно задать ширину только одной его ячейки. Gustav
МОИ: Ник , Tip box: 41001663842605
Ответить
Сообщение Я, может, что-то не понял, но у меня поставленную задачу вполне решает такой код из одного оператора, без цикла по колонкам: [vba]Код
Sub cw() Range("B12:DA12").ColumnWidth = Range("B12:DA12").Value End Sub
[/vba] ВАЖНО! Только не ставьте слева полные колонки типа Range("B:DA").ColumnWidth - зависнете! Можно сориентироваться на другую строку, например, первую: Range("B1:DA1").ColumnWidth. Ведь, в конце концов, чтобы задать ширину всего столбца, достаточно задать ширину только одной его ячейки. Автор - Gustav Дата добавления - 10.12.2024 в 14:43
and_evg
Дата: Вторник, 10.12.2024, 15:25 |
Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 469
Репутация:
82
±
Замечаний:
0% ±
Excel 2007
Ответить
Сообщение КрасивоАвтор - and_evg Дата добавления - 10.12.2024 в 15:25
Alex9185
Дата: Вторник, 10.12.2024, 15:35 |
Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация:
0
±
Замечаний:
0% ±
ВАЖНО! Только не ставьте слева полные колонки типа Range("B:DA").ColumnWidth - зависнете! Можно сориентироваться на другую строку, например, первую: Range("B1:DA1").ColumnWidth. Ведь, в конце концов, чтобы задать ширину всего столбца, достаточно задать ширину только одной его ячейки.
Спасибо. Работает.
ВАЖНО! Только не ставьте слева полные колонки типа Range("B:DA").ColumnWidth - зависнете! Можно сориентироваться на другую строку, например, первую: Range("B1:DA1").ColumnWidth. Ведь, в конце концов, чтобы задать ширину всего столбца, достаточно задать ширину только одной его ячейки.
Спасибо. Работает.Alex9185
Сообщение отредактировал Alex9185 - Вторник, 10.12.2024, 15:42
Ответить
Сообщение ВАЖНО! Только не ставьте слева полные колонки типа Range("B:DA").ColumnWidth - зависнете! Можно сориентироваться на другую строку, например, первую: Range("B1:DA1").ColumnWidth. Ведь, в конце концов, чтобы задать ширину всего столбца, достаточно задать ширину только одной его ячейки.
Спасибо. Работает.Автор - Alex9185 Дата добавления - 10.12.2024 в 15:35