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

У Кейта есть рабочий лист, в котором используются столбцы от 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
Добавить комментарий