Excel VBA计算并设置列宽

我试图通过调整列A的宽度从屏幕中心B:AE的中心范围。

我能够通过将宽度添加为数字而不是使用AdjColWidth来更改宽度

Sub TestWH() 'Get widths WinWidth = ActiveWindow.UsableWidth RangeWidth = ActiveSheet.Range("B1:AE1").Width AdjColWidth = WinWidth - RangeWidth / 2 'If less than 4 then set to 4 If AdjColWidth < 4 Then Range("A:A").ColumnWidth = 4 Else Range("A:A").ColumnWidth = AdjColWidth End If End Sub 

基于我的意见,像下面的东西应该工作。 我直接在代码中计算了点数与列宽之比,因为这可能会根据正常样式的字体大小而改变。

 Sub TestWH() 'Get widths WinWidth = ActiveWindow.UsableWidth 'work out the ratio between pixels and columnwidth ratio = ActiveSheet.Columns(1).ColumnWidth / ActiveSheet.Columns(1).Width RangeWidth = ActiveSheet.Range("B1:AE1").Width 'work out the size in columnwidth values adjcolwidth = ((WinWidth - RangeWidth) / 2) * ratio 'If less than 4 then set to 4 If adjcolwidth < 4 Then Range("A:A").ColumnWidth = 4 ElseIf adjcolwidth < 255 Then Range("A:A").ColumnWidth = adjcolwidth Else 'what do you want to do if it's greater than 255? End If End Sub