gpt4 book ai didi

excel - 如何以绝对单位设置列宽?

转载 作者:行者123 更新时间:2023-12-04 22:04:41 26 4
gpt4 key购买 nike

我想做到这一点,无论用户设置如何,电子表格中的边距和列宽都是相同的,以便它为所有用户打印相同的内容。
我想出的方法涉及两个宏。
一个宏来测量行、列和边距,并将其存储在 PC 上 Excel 文档的单元格中,所有内容都按应有的方式打印。
第二个宏在用户打印之前获取这些值并将边距等设置为正确的值。
我的问题是 ColumnWidth 函数以与默认字体相关的单位测量行,可以在用户设置中更改。为了解决这个问题,我尝试了 .width (以pts衡量),但我了解到这个功能可以测量宽度但不能设置它。
我意识到我所要做的就是在第二个宏中选择一个要测量的列,然后使用该测量值和原始测量值来导出一个转换因子。
第一个宏的列测量部分:

 'Collumn Width
.Cells(249, 84).Value = .Cells(1, 1).Width
For i = 1 To 65
.Cells(250 + i, 81).Value = .Cells(1, i).ColumnWidth
Next i
第二个宏的列宽设置部分具有适当的转换因子:
'Set Column Widths
'[column width in current font]
'*[correct width of any collumn in pts]/[current width of same column in pts]
For j = 1 To 65
With ActiveWorkbook.ActiveSheet
.Columns(j).ColumnWidth = .Cells(250 + j, 81).Value * _
.Cells(249, 84).Value / .Cells(1, 1).Width
End With
Next j

最佳答案

我相信 RowHeight 属性以点为单位设置高度。根据默认字体大小设置宽度的是 columnWidth 属性。

但是,列的 Width 属性以磅为单位读取宽度。您可能无法准确设置列宽,但这是一种可以让您接近的方法,将高度和宽度设置为 72 磅。

Option Explicit
Sub SetWidthHeightPoints()
Const dWidth As Double = 72
Const dHeight As Double = 72
Dim RW As Range, COL As Range
Set RW = ActiveSheet.Rows(1)
Set COL = ActiveSheet.Columns(1)

RW.RowHeight = dHeight
COL.ColumnWidth = dWidth / COL.Width * COL.ColumnWidth
COL.ColumnWidth = dWidth / COL.Width * COL.ColumnWidth

MsgBox "Row Height: " & RW.Height & vbLf & "Column Width: " & COL.Width

End Sub

编辑

@AlexPeters 提出了一个很好的建议,通过将列宽调整放入一个循环中,可以得到更接近预期结果的结果。我们将循环直到没有变化,并将循环数限制为 10:
Option Explicit
Sub SetWidthHeightPoints()
Const dWidth As Double = 72
Const dHeight As Double = 72
Dim RW As Range, COL As Range
Set RW = ActiveSheet.Rows(1)
Set COL = ActiveSheet.Columns(1)

Dim CNT As Long, lastWidth As Double

RW.RowHeight = dHeight

CNT = 0
Do Until CNT = 10 Or COL.Width = lastWidth
lastWidth = COL.Width
COL.ColumnWidth = dWidth / COL.Width * COL.ColumnWidth
CNT = CNT + 1
Loop

MsgBox "Row Height: " & RW.Height & vbLf & "Column Width: " & COL.Width _
& vbLf & "Required: " & CNT & " iterations"

End Sub

关于excel - 如何以绝对单位设置列宽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26434586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com