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

Вход

Регистрация

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

 

= Мир MS Excel/max ширина столбца не выходя за границу страницы (макросом) - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » max ширина столбца не выходя за границу страницы (макросом) (Макросы/Sub)
max ширина столбца не выходя за границу страницы (макросом)
grh1 Дата: Четверг, 01.09.2022, 22:46 | Сообщение № 21
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
ZetMenChavo, нет Вы не поняли.
ПУНКТИРНАЯ линия (граница страницы) как была пунктирной, так и остается ПУНКТИРНОЙ - нельзя ее совмещать со сплошной.
А растягиваться должен столбец "В" , ширина же столбцов C,D,E,F должна не изменяться где КРАЙ таблицы это столбец F и растягивая столбец "В" столбец F должен упереться в синюю пунктирную и остановиться.
Вот и все.


Vadym Gorokh
 
Ответить
СообщениеZetMenChavo, нет Вы не поняли.
ПУНКТИРНАЯ линия (граница страницы) как была пунктирной, так и остается ПУНКТИРНОЙ - нельзя ее совмещать со сплошной.
А растягиваться должен столбец "В" , ширина же столбцов C,D,E,F должна не изменяться где КРАЙ таблицы это столбец F и растягивая столбец "В" столбец F должен упереться в синюю пунктирную и остановиться.
Вот и все.

Автор - grh1
Дата добавления - 01.09.2022 в 22:46
ZetMenChavo Дата: Четверг, 01.09.2022, 22:46 | Сообщение № 22
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
grh1, Если я всё же опять не правильно понял что вам нужно, выставьте вручную какой результат вам нужем и скиньте файл, а я уже доделаю код чтоб добивался того же самого.
 
Ответить
Сообщениеgrh1, Если я всё же опять не правильно понял что вам нужно, выставьте вручную какой результат вам нужем и скиньте файл, а я уже доделаю код чтоб добивался того же самого.

Автор - ZetMenChavo
Дата добавления - 01.09.2022 в 22:46
ZetMenChavo Дата: Четверг, 01.09.2022, 22:48 | Сообщение № 23
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
Цитата
столбец F должен упереться в синюю пунктирную и остановиться

Так в файле 33333 это и делается, разве нет?
 
Ответить
Сообщение
Цитата
столбец F должен упереться в синюю пунктирную и остановиться

Так в файле 33333 это и делается, разве нет?

Автор - ZetMenChavo
Дата добавления - 01.09.2022 в 22:48
ZetMenChavo Дата: Четверг, 01.09.2022, 22:51 | Сообщение № 24
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
Как только столбец F залазит за пунктир, Столбец B немного уменьшается и все столбцы до F находятся до пунктира.
Разве у вас не так же получается?


Сообщение отредактировал ZetMenChavo - Четверг, 01.09.2022, 22:52
 
Ответить
СообщениеКак только столбец F залазит за пунктир, Столбец B немного уменьшается и все столбцы до F находятся до пунктира.
Разве у вас не так же получается?

Автор - ZetMenChavo
Дата добавления - 01.09.2022 в 22:51
grh1 Дата: Четверг, 01.09.2022, 22:52 | Сообщение № 25
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
ZetMenChavo, в сообщении № 1 прикреплен файл

Файл прикрепляю, в нем два листа:

1-й – как сейчас есть;
2-й – как должно стать.

Нужен макрос для 1-го листа - как сейчас есть..
А чтобы посмотреть КАК ДОЛЖНО БЫТЬ (т.е. то, чего мне нужно) смотрите лист 2 - как должно стать.

P.S. обращаю внимание - макрос нужен для 1-го листа, т.е. VPageBreaks(1) должен быть как на 1-м листе.


Vadym Gorokh

Сообщение отредактировал grh1 - Четверг, 01.09.2022, 22:55
 
Ответить
СообщениеZetMenChavo, в сообщении № 1 прикреплен файл

Файл прикрепляю, в нем два листа:

1-й – как сейчас есть;
2-й – как должно стать.

Нужен макрос для 1-го листа - как сейчас есть..
А чтобы посмотреть КАК ДОЛЖНО БЫТЬ (т.е. то, чего мне нужно) смотрите лист 2 - как должно стать.

P.S. обращаю внимание - макрос нужен для 1-го листа, т.е. VPageBreaks(1) должен быть как на 1-м листе.

Автор - grh1
Дата добавления - 01.09.2022 в 22:52
grh1 Дата: Четверг, 01.09.2022, 23:02 | Сообщение № 26
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
Потому что если Вы запустите свой макрос для 1-го листа, он у Вас не сработает.
На сегодня всё.
Спокойной ночи.
Утро вечера мудренее - завтра разберемся.


Vadym Gorokh
 
Ответить
СообщениеПотому что если Вы запустите свой макрос для 1-го листа, он у Вас не сработает.
На сегодня всё.
Спокойной ночи.
Утро вечера мудренее - завтра разберемся.

Автор - grh1
Дата добавления - 01.09.2022 в 23:02
ZetMenChavo Дата: Четверг, 01.09.2022, 23:14 | Сообщение № 27
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
Цитата
он у Вас не сработает

Странно, у меня на первом листе так же работает макрос и без включения страничного режима.

Добавил включение Страничного режима. Вот как в прикрепленном файле получается 1я страница
Можно ещё доп. сплошную синию отодвинуть чтоб как на 2м листе (правда не понимаю в чём смысл этого действия если и так таба вписывается), ну раз мудренее утром, то утром. Приятных снов)

И в режиме печати
К сообщению приложен файл: 555.xlsm (29.9 Kb)


Сообщение отредактировал ZetMenChavo - Четверг, 01.09.2022, 23:29
 
Ответить
Сообщение
Цитата
он у Вас не сработает

Странно, у меня на первом листе так же работает макрос и без включения страничного режима.

Добавил включение Страничного режима. Вот как в прикрепленном файле получается 1я страница
Можно ещё доп. сплошную синию отодвинуть чтоб как на 2м листе (правда не понимаю в чём смысл этого действия если и так таба вписывается), ну раз мудренее утром, то утром. Приятных снов)

И в режиме печати

Автор - ZetMenChavo
Дата добавления - 01.09.2022 в 23:14
grh1 Дата: Пятница, 02.09.2022, 08:46 | Сообщение № 28
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
ZetMenChavo,приветствую!
Последний Ваш файл 555 отрабатывает отлично на любой таблице, не привязываясь к расположению сплошной линии.
Вопрос - а куда делся тот первоначальный Ваш КОРОТКИЙ код? И можно ли этот, отлично работающий код, как-то минимизировать? Или это трудновыполнимо?

За отлично работающий код спасибо большое.


Vadym Gorokh

Сообщение отредактировал grh1 - Пятница, 02.09.2022, 08:47
 
Ответить
СообщениеZetMenChavo,приветствую!
Последний Ваш файл 555 отрабатывает отлично на любой таблице, не привязываясь к расположению сплошной линии.
Вопрос - а куда делся тот первоначальный Ваш КОРОТКИЙ код? И можно ли этот, отлично работающий код, как-то минимизировать? Или это трудновыполнимо?

За отлично работающий код спасибо большое.

Автор - grh1
Дата добавления - 02.09.2022 в 08:46
grh1 Дата: Пятница, 02.09.2022, 09:50 | Сообщение № 29
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
ZetMenChavo, еще такой вопрос - Ваш макрос при срабатывании почему-то все СТРОКИ делает одинакового размера, а нужно чтобы перенос по словам работал, так как в столбце "В" очень часто длинные названия, состоящие из 2-х а то и из 3-х строк и этих строк кроме первой не видно и очень неудобно.
Что можно придумать?

Посмотрел - во всех строках столбца "В" включен режим переноса по словам, но почему-то не срабатывает.

На скрине то, что я имею ввиду.
В файле 556 набрана одна строка - пусть отработает макрос и Вы сами увидите.

P.S. Ну вроде решил вопрос добавлением в Ваш код двух строк:
[vba]
Код

    Columns("B:B").Select
    Rows("5:300").EntireRow.AutoFit
[/vba]
К сообщению приложен файл: 556.xlsm (26.5 Kb)


Vadym Gorokh

Сообщение отредактировал grh1 - Пятница, 02.09.2022, 10:33
 
Ответить
СообщениеZetMenChavo, еще такой вопрос - Ваш макрос при срабатывании почему-то все СТРОКИ делает одинакового размера, а нужно чтобы перенос по словам работал, так как в столбце "В" очень часто длинные названия, состоящие из 2-х а то и из 3-х строк и этих строк кроме первой не видно и очень неудобно.
Что можно придумать?

Посмотрел - во всех строках столбца "В" включен режим переноса по словам, но почему-то не срабатывает.

На скрине то, что я имею ввиду.
В файле 556 набрана одна строка - пусть отработает макрос и Вы сами увидите.

P.S. Ну вроде решил вопрос добавлением в Ваш код двух строк:
[vba]
Код

    Columns("B:B").Select
    Rows("5:300").EntireRow.AutoFit
[/vba]

Автор - grh1
Дата добавления - 02.09.2022 в 09:50
RAN Дата: Пятница, 02.09.2022, 11:30 | Сообщение № 30
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
ZetMenChavo,
Исходя из чего и зачем такая хитрая арифметика?
oX = 350
= oX / 12
= (oX - 12) / 7 + 1


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеZetMenChavo,
Исходя из чего и зачем такая хитрая арифметика?
oX = 350
= oX / 12
= (oX - 12) / 7 + 1

Автор - RAN
Дата добавления - 02.09.2022 в 11:30
ZetMenChavo Дата: Пятница, 02.09.2022, 14:41 | Сообщение № 31
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
RAN, здравствуйте. oX это количество пикселей, величину которых можно видеть когда в ручную меняете размер ячеек

Когда то давно возникла необходимость задавать размер ячеек макросом с точностью до пикселя.
Если с высотой всё было просто достаточно было oY*0.75 и в результате высота строк в пикселях была равна oY,
то с ширеной майкросовцы жестко подставили, т.к. ширина задаваемая ColumnWidth завязана не на пунктах а на символах
Цитата
Обратите внимание, что высота строки задается в пунктах, а ширина столбца в символах, поэтому их числовые значения не соответствуют друг другу по фактическому размеру.

https://vremya-ne-zhdet.ru/vba-exc....opodbor

Но желание уметь задавать ширину столбцов, указывая количество нужных пикселей, не пропало, и методом пошагового изменения ширины столбцов и сравнения их размеров, я смог вычеслить правельную формулу зависимости ширины от пиксей.
В результате и получилось это
[vba]
Код
If oX < 13 Then _
rn.ColumnWidth = oX / 12
If oX > 12 Then _
rn.ColumnWidth = (oX - 12) / 7 + 1
[/vba]
Если oX количство пикселей от 0 до 12, то нужно делить на 12, а больше 12, вычеслять ширину по формуле (oX - 12) / 7 + 1.

Потом даже отдельный макрос для изменения размера ячеек запилил, где через inputbox указываются размеры в пикселях, и всё точно выставляется.
Можете и сами убедиться)
[vba]
Код
Sub Размер_Ячеек()
    Dim k As String
    Dim oX&, oY As Long
    Dim rn As Range
    '=========================
    k = Application.InputBox( _
        prompt:="ОК         - весь лист" & Chr(10) & _
                "Отмена - выделенное")
    If k = "" _
    Then Set rn = Cells _
    Else Set rn = Selection
    '====================
    k = Application.InputBox( _
        prompt:="Ширина в пикселях" & Chr(10) & _
                "Отмена - не изменять")
    If k <> "False" Then
        If k = "" Then k = 0
        oX = k
        '---------------
        If oX < 13 Then _
        rn.ColumnWidth = oX / 12
        If oX > 12 Then _
        rn.ColumnWidth = (oX - 12) / 7 + 1
    End If
    '====================
    k = Application.InputBox( _
        prompt:="Высота в пикселях" & Chr(10) & _
                "Отмена - не изменять")
    If k <> "False" Then
        If k = "" Then k = 0
        oY = k
        '---------------
        rn.RowHeight = oY * 0.75
    End If
End Sub
[/vba]
Цитата
Исходя из чего и зачем такая хитрая арифметика?

Чтобы заново не изобретать колесо, просто скопировал код из своих старых проектов, и постепенно переделывал его под задачу в этой теме.


Сообщение отредактировал ZetMenChavo - Пятница, 02.09.2022, 15:00
 
Ответить
СообщениеRAN, здравствуйте. oX это количество пикселей, величину которых можно видеть когда в ручную меняете размер ячеек

Когда то давно возникла необходимость задавать размер ячеек макросом с точностью до пикселя.
Если с высотой всё было просто достаточно было oY*0.75 и в результате высота строк в пикселях была равна oY,
то с ширеной майкросовцы жестко подставили, т.к. ширина задаваемая ColumnWidth завязана не на пунктах а на символах
Цитата
Обратите внимание, что высота строки задается в пунктах, а ширина столбца в символах, поэтому их числовые значения не соответствуют друг другу по фактическому размеру.

https://vremya-ne-zhdet.ru/vba-exc....opodbor

Но желание уметь задавать ширину столбцов, указывая количество нужных пикселей, не пропало, и методом пошагового изменения ширины столбцов и сравнения их размеров, я смог вычеслить правельную формулу зависимости ширины от пиксей.
В результате и получилось это
[vba]
Код
If oX < 13 Then _
rn.ColumnWidth = oX / 12
If oX > 12 Then _
rn.ColumnWidth = (oX - 12) / 7 + 1
[/vba]
Если oX количство пикселей от 0 до 12, то нужно делить на 12, а больше 12, вычеслять ширину по формуле (oX - 12) / 7 + 1.

Потом даже отдельный макрос для изменения размера ячеек запилил, где через inputbox указываются размеры в пикселях, и всё точно выставляется.
Можете и сами убедиться)
[vba]
Код
Sub Размер_Ячеек()
    Dim k As String
    Dim oX&, oY As Long
    Dim rn As Range
    '=========================
    k = Application.InputBox( _
        prompt:="ОК         - весь лист" & Chr(10) & _
                "Отмена - выделенное")
    If k = "" _
    Then Set rn = Cells _
    Else Set rn = Selection
    '====================
    k = Application.InputBox( _
        prompt:="Ширина в пикселях" & Chr(10) & _
                "Отмена - не изменять")
    If k <> "False" Then
        If k = "" Then k = 0
        oX = k
        '---------------
        If oX < 13 Then _
        rn.ColumnWidth = oX / 12
        If oX > 12 Then _
        rn.ColumnWidth = (oX - 12) / 7 + 1
    End If
    '====================
    k = Application.InputBox( _
        prompt:="Высота в пикселях" & Chr(10) & _
                "Отмена - не изменять")
    If k <> "False" Then
        If k = "" Then k = 0
        oY = k
        '---------------
        rn.RowHeight = oY * 0.75
    End If
End Sub
[/vba]
Цитата
Исходя из чего и зачем такая хитрая арифметика?

Чтобы заново не изобретать колесо, просто скопировал код из своих старых проектов, и постепенно переделывал его под задачу в этой теме.

Автор - ZetMenChavo
Дата добавления - 02.09.2022 в 14:41
ZetMenChavo Дата: Пятница, 02.09.2022, 14:44 | Сообщение № 32
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
grh1, рад что основная задача решена) Косательно последнего вашего вопроса с переносом по словам, постараюсь вечером ответить, если кто раньше меня не успеет.
 
Ответить
Сообщениеgrh1, рад что основная задача решена) Косательно последнего вашего вопроса с переносом по словам, постараюсь вечером ответить, если кто раньше меня не успеет.

Автор - ZetMenChavo
Дата добавления - 02.09.2022 в 14:44
grh1 Дата: Пятница, 02.09.2022, 16:03 | Сообщение № 33
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
Косательно последнего вашего вопроса с переносом по словам,

ZetMenChavo, так я уже решил этот вопрос и ответил в своем сообщение № 29 пысы.


Vadym Gorokh
 
Ответить
Сообщение
Косательно последнего вашего вопроса с переносом по словам,

ZetMenChavo, так я уже решил этот вопрос и ответил в своем сообщение № 29 пысы.

Автор - grh1
Дата добавления - 02.09.2022 в 16:03
grh1 Дата: Пятница, 02.09.2022, 16:14 | Сообщение № 34
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
кстати не хочется создавать новую тему, но есть маленький вопрос, как прописать макросом замену слова "диаметр" на символ Ø?
сам символ НЕ ОТОБРАЖАЕТСЯ в коде правильно - то ноль, то какая-нибудь абракадабра.
Нашел его наименование "ChrW(216)", но как правильно прописать в коде не знаю.

Будем считать что в нашем (по теме) растягиваемом столбце "В" есть такое слово и символ, который неправильно отображается - вс как бы по теме, чтобы не наказали админы.
Но нельзя этот маленький вопросик здесь задавать, то я его не задавал.

Спасибо

[vba]
Код
Columns("B:B").Select
Selection.Replace What:="диаметр", Replacement:="О", LookAt:=xlPart, _
      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
      ReplaceFormat:=False
[/vba]


Vadym Gorokh

Сообщение отредактировал grh1 - Пятница, 02.09.2022, 16:47
 
Ответить
Сообщениекстати не хочется создавать новую тему, но есть маленький вопрос, как прописать макросом замену слова "диаметр" на символ Ø?
сам символ НЕ ОТОБРАЖАЕТСЯ в коде правильно - то ноль, то какая-нибудь абракадабра.
Нашел его наименование "ChrW(216)", но как правильно прописать в коде не знаю.

Будем считать что в нашем (по теме) растягиваемом столбце "В" есть такое слово и символ, который неправильно отображается - вс как бы по теме, чтобы не наказали админы.
Но нельзя этот маленький вопросик здесь задавать, то я его не задавал.

Спасибо

[vba]
Код
Columns("B:B").Select
Selection.Replace What:="диаметр", Replacement:="О", LookAt:=xlPart, _
      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
      ReplaceFormat:=False
[/vba]

Автор - grh1
Дата добавления - 02.09.2022 в 16:14
Мир MS Excel » Вопросы и решения » Вопросы по VBA » max ширина столбца не выходя за границу страницы (макросом) (Макросы/Sub)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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