Объединение ячеек VBA и установка высоты

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

For i = 16 To 25
With ThisWorkbook.Worksheets(week_sheet_name)
    .Rows(i).AutoFit
    h = ThisWorkbook.Worksheets(week_sheet_name).Rows(i).RowHeight
    .Range("V" & i & ":W" & i).MergeCells = True
    .Columns(22).ColumnWidth = 40
    .Columns(23).ColumnWidth = 30
    .Rows(i).EntireRow.RowHeight = h
End With
Next

В этом цикле он автоматически подбирает строки до идеальной высоты (ширина столбца столбца 22 до цикла равна 70), после чего я сохраняю высоту в переменной h и объединяю ячейки V и W строки i. Ширина столбца установлена ​​равной 40 и 30, чтобы в сумме они были такими же, как у предыдущего столбца. Последним шагом является применение высоты строки, поскольку она была автоматически подогнана ранее. Например. в одной ячейке автоподгонка делает ее 144 в высоту, после макроса это 264, что равно количеству, которое было бы, если бы я автоподбирал ее, но с шириной ячейки всего 40.

Если я делаю это только для одной строки (без цикла for), все работает отлично. Если я не изменю ширину столбца 22, он также будет работать с циклом, но мне нужно, чтобы ширина была 40.

Как я мог заставить его работать?


person snenson    schedule 17.11.2020    source источник


Ответы (1)


Если я уберу .Columns(22).ColumnWidth = 40 и .Columns(23).ColumnWidth = 30 из цикла, это сработает. Мой код сейчас

For i = 16 To 25
With ThisWorkbook.Worksheets(week_sheet_name)
    .Rows(i).AutoFit
    h = ThisWorkbook.Worksheets(week_sheet_name).Rows(i).RowHeight
    .Range("V" & i & ":W" & i).MergeCells = True
    .Rows(i).EntireRow.RowHeight = h
End With
Next
ThisWorkbook.Worksheets(week_sheet_name).Columns(22).ColumnWidth = 40
ThisWorkbook.Worksheets(week_sheet_name).Columns(23).ColumnWidth = 30
person snenson    schedule 17.11.2020