Как разместить много заголовков в ширину ячейки с помощью VBA? - PullRequest
1 голос
/ 29 мая 2019

Я скопировал примерно 88 столбцов контента из другой таблицы. Проблема в том, что заголовки слишком велики и не отображаются должным образом в ячейке столбца. Итак, мне пришлось идти в каждую ячейку и нажимать Alt + Enter каждый раз. Я хочу использовать макрос, который будет делать это автоматически.

Я использую версию Microsoft Excel 2016.

Sub Fit_Headers()

   'Fit_Headers Macro

    Range("BI13").Select
    ActiveCell.FormulaR1C1 = "ACTUAL SAMPLE " & Chr(10) & "FABRIC INHOUSE DATE"
    Range("BJ13").Select
End Sub

Я использовал «Запись макроса» для записи того, что я делаю в одной ячейке. Как я могу изменить его, чтобы я мог использовать его для оставшихся ячеек? `

Ответы [ 3 ]

1 голос
/ 29 мая 2019

Chr(10) равно vbLf ... и не совсем хорошо с Range.AutoFit. vbNewLine (vbCrLf, т.е. Chr(10) & Chr(13)) работает прекрасно, хотя; вам не нужно ничего делать Select или вообще работать с ActiveCell - это просто мусор макрокоманды, требующий очистки (рекордер просто подражает [большинству] действий пользователя, включая выбор ячеек: он не ' заботиться о избыточном или эффективном коде):

Public Sub FitHeaders()
    With ActiveSheet.Range("BI13")
        .Value = "ACTUAL SAMPLE" & vbNewLine & "FABRIC INHOUSE DATE"
        .EntireColumn.AutoFit
    End With
End Sub
0 голосов
/ 29 мая 2019

После того, как вы поиграете с вашим образцом, добавление строки кода ниже после того, как вы установите содержимое ячейки, я думаю, будет делать то, что вы хотите:

ActiveCell.EntireRow.AutoFit

Есть некоторые ограничения, которые я нашелиграя с этим.В приведенном вами примере кода у вас есть этот бит Chr (10), и когда он присутствует, Excel, похоже, не хочет расширять ячейку, чтобы показать все, что вы установили, одной строкой в ​​одной строке.Он разбит всю строку на отдельные слова с каждым словом в одной строке в ячейке.Кроме того, при необходимости вы можете поменять местами AllRow с AllColumn.

0 голосов
/ 29 мая 2019

Я не очень хорошо понимаю ваш вопрос.Вы хотите применить формулу "ACTUAL SAMPLE " & Chr(10) & "FABRIC INHOUSE DATE" для других клеток?

Как это:

Sub test()
    For Each c In Range("A1:B20").Cells
        c.FormulaR1C1 = "ACTUAL SAMPLE " & Chr(10) & "FABRIC INHOUSE DATE"
    Next c
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...