Пропорциональное расширение нескольких столбцов

У Кейта есть рабочий лист, в котором используются столбцы от A до H. Он хотел бы иметь возможность расширять каждый столбец на пропорциональную величину. Например, если он выберет все 8 столбцов, было бы замечательно, если бы он мог захватить правый край столбца H, и при его перетаскивании вправо все столбцы были бы пропорционально разнесены. Он задается вопросом, есть ли способ сделать этот тип расширения столбца.

Чтобы лучше понять, о чем говорит Кейт, возможно, уместно привести пример. Обычный способ регулировки ширины столбца с помощью мыши – выбрать столбцы и затем перетащить разделитель между заголовками столбцов вправо или влево. Допустим, ширина столбца A равна 5, столбцу B – 10, а столбцу C – 15. Если вы выберете A: C и перетащите разделитель с правой стороны заголовка столбца C на 20, это означает увеличение на 33% для столбец C. В идеале, оба столбца A и B также должны быть изменены на 33% (по желанию Кейта), но вместо этого оба они имеют ширину 20, чтобы соответствовать столбцу C.

Кроме того, удерживание клавиши-модификатора ( Ctrl , Alt или Shift ) при перетаскивании мыши не имеет никакого эффекта. ; все ширины столбцов по-прежнему равны друг другу. Если вы попытаетесь щелкнуть правой кнопкой мыши и перетащить, это ничего не сделает, кроме отображения контекстного меню. Таким образом, из всего тестирования, которое мы смогли провести, не существует способа пропорционально регулировать ширину столбцов в Excel, который мы смогли обнаружить.

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

Sub ProportionalWidth () Dim C As Range Dim sRaw As String Dim sTemp As String Dim P As Single sRaw = InputBox («Увеличить ширину каким % (От 0 до 100)? «) P = Val (sRaw) Если P> = 0 и P » C.ColumnWidth = C.ColumnWidth * P sTemp = sTemp & C.ColumnWidth & vbCrLf Next C MsgBox sTemp Else MsgBox «Вне допустимого диапазона; корректировка не производилась» End IfEnd Sub Функция ColumnLetter (Col As Long) As String Dim Arr Arr = Split (Cells (1, Col) .Address (True, False) , «$») ColumnLetter = Arr (0) Конечная функция

На самом деле в этом примере есть два макроса. Первый (ProportionalWidth) изменяет ширину выбранных вами столбцов. Второй (ColumnLetter) используется для преобразования числового номера столбца в буквы столбца. Он используется только при составлении отчета (в формате sTemp) о ширине столбцов до и после.

Когда вы выбираете столбцы и запускаете макрос, он запрашивает, насколько шире вы хотите чтобы сделать эти столбцы. Введите число от 0 до 100, нажмите «ОК», и столбцы будут расширены на этот процент. Кроме того, вы увидите окно сообщения, в котором отображается исходная ширина каждого столбца и настроенная ширина..

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

Источник: frestage.ru

Бытовой вопрос