Извините, я новичок в excel-vba и нуждаюсь в руководстве. Я хочу запустить автоматическую настройку высоты объединенных ячеек при открытии моего файла Excel.
Я нашел код для автоматической настройки высоты объединенной ячейки, который я пробовал, и он работает. Я также нашел код, который предполагает включение макросов при каждом открытии файла Excel. Однако у меня проблемы с интеграцией обоих.
Код для автоматической настройки высоты ячейки
Option Explicit
Public Sub AutoFitAll()
Call AutoFitMergedCells(Range("I13:L13"))
End Sub
Public Sub AutoFitMergedCells(oRange As Range)
Dim tHeight As Integer
Dim iPtr As Integer
Dim oldWidth As Single
Dim oldZZWidth As Single
Dim newWidth As Single
Dim newHeight As Single
With Sheets("Acceptance")
oldWidth = 0
For iPtr = 1 To oRange.Columns.Count
oldWidth = oldWidth + .Cells(1, oRange.Column + iPtr - 1).ColumnWidth
Next iPtr
oldWidth = .Cells(1, oRange.Column).ColumnWidth + .Cells(1, oRange.Column + 1).ColumnWidth
oRange.MergeCells = False
newWidth = Len(.Cells(oRange.Row, oRange.Column).Value)
oldZZWidth = .Range("ZZ1").ColumnWidth
.Range("ZZ1") = Left(.Cells(oRange.Row, oRange.Column).Value, newWidth)
.Range("ZZ1").WrapText = True
.Columns("ZZ").ColumnWidth = oldWidth
.Rows("1").EntireRow.AutoFit
newHeight = .Rows("1").RowHeight / oRange.Rows.Count
.Rows(CStr(oRange.Row) & ":" & CStr(oRange.Row + oRange.Rows.Count - 1)).RowHeight = newHeight
oRange.MergeCells = True
oRange.WrapText = True
.Range("ZZ1").ClearContents
.Range("ZZ1").ColumnWidth = oldZZWidth
End With
End Sub
Код, позволяющий запускать макрос при открытии Excel
Private Sub Worksheet_Activate()
'your code here
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
'your code here
End Sub
Итак, я надеюсь добиться того, чтобы при открытии файла Excel объединенные ячейки с избыточным содержимым, которое невозможно отобразить в пределах высоты ячеек по умолчанию, автоматически корректируются, поэтому все содержимое можно видел.