Как включить этот макрос при каждом открытии или редактировании в Excel? - PullRequest
0 голосов
/ 22 мая 2019

Извините, я новичок в 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 объединенные ячейки с избыточным содержимым, которое невозможно отобразить в пределах высоты ячеек по умолчанию, автоматически корректируются, поэтому все содержимое можно видел.

1 Ответ

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

Worksheet_Activate () и Worksheet_Change не запускаются при открытии книги.Они запускаются, когда лист активируется или изменяется.

Вам необходимо Private Sub Workbook_Open () из класса ThisWorkbook .

Для запускаваш макрос, когда ваша рабочая книга откроется, вы добавите вызов в ваш Sub там

Private Sub Workbook_Open()
    AutoFitAll
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...