EXCEL VBA 合并单元格 的 行高设置

    最近在做一个excel数据写入时,里面存在合并单元格,而合并单元格不能像没有合并的单元格那样:写入数据后,设置自动调整行高,就可以将掩藏在单元格里的内容显示出来。这一点我们可以借用合并单元格上。其思路:先计算合并单元格所有列的宽度和,然后将宽度和设置为一个没有合并单元格的列宽,设置该单元格的格式为自动换行和自动调整行高,然后将合并单元的内容写入到没有合并的单元格中,读取该列行高。 话不多说直接上VBA程序:
Public Function Get_RangeHeight(tempSheet As Worksheet, tempRange As Range) As Double
    Dim RangeWidth As Double
    Dim tempNum As Long
    Dim NoneMergeCell As Range
    If tempRange.MergeCells Then
         tempRange.WrapText = True '设置单元格“自动换行”
        If (tempRange.Column = tempRange.MergeArea.Column) Then '提高合并单元格处理效率:仅处理合并单元格中首列
           
            For tempNum = tempRange.MergeArea.Column To tempRange.MergeArea.Column + tempRange.MergeArea.Columns.Count - 1 '计算合并单元格中所有列宽之和
                RangeWidth = RangeWidth + Columns(tempNum).ColumnWidth
            Next
             tempNum = tempSheet.UsedRange.Columns.Count + 1
             Do While (tempSheet.Cells(tempRange.Row, tempNum).MergeCells)
                tempNum = tempNum + 1
             Loop
             Set NoneMergeCell = tempSheet.Cells(tempRange.Row, tempNum) '设置行中没有合并的单元格
             NoneMergeCell.Rows.AutoFit
            NoneMergeCell.WrapText = True
            NoneMergeCell.ColumnWidth = RangeWidth
            NoneMergeCell.Value = tempRange.Value
            Get_RangeHeight = NoneMergeCell.Height '获取行高
            NoneMergeCell.EntireColumn.Delete '不改变Sheet的Column.UsedRange.Count
        End If
    Else
        tempRange.Rows.AutoFit
        Get_RangeHeight = tempRange.Height
    End If
    If (Get_RangeHeight > 409) Then ' 高度大于409 设置为最大高度409
        Get_RangeHeight = 409
    End If
End Function

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值