对不起,我是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文件时,将自动调整合并的单元格,这些单元格具有无法在单元格的默认高度内显示的过多内容,因此可以调整所有内容见过。
答案 0 :(得分:1)
Worksheet_Activate()和 Worksheet_Change 不会运行。它们在工作表被激活或更改时运行。
您需要 ThisWorkbook 类中的 Private Sub Workbook_Open()。
要在打开工作簿时运行宏,您可以将调用添加到其中的Sub
Private Sub Workbook_Open()
AutoFitAll
End Sub