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

Вход

Регистрация

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

 

= Мир MS Excel/Range и ColumnWidth упрощение кода - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
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
Дата добавления - 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]


Сообщение отредактировал Апострофф - Вторник, 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)

почему?


Сообщение отредактировал 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]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
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. Ведь, в конце концов, чтобы задать ширину всего столбца, достаточно задать ширину только одной его ячейки.


МОИ: Ник, 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. Ведь, в конце концов, чтобы задать ширину всего столбца, достаточно задать ширину только одной его ячейки.


Спасибо. Работает.


Сообщение отредактировал Alex9185 - Вторник, 10.12.2024, 15:42
 
Ответить
Сообщение
ВАЖНО! Только не ставьте слева полные колонки типа Range("B:DA").ColumnWidth - зависнете! Можно сориентироваться на другую строку, например, первую: Range("B1:DA1").ColumnWidth. Ведь, в конце концов, чтобы задать ширину всего столбца, достаточно задать ширину только одной его ячейки.


Спасибо. Работает.

Автор - Alex9185
Дата добавления - 10.12.2024 в 15:35
  • Страница 1 из 1
  • 1
Поиск:

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