根据最后填充的列调整形状大小

时间:2018-01-22 10:11:13

标签: excel-vba vba excel

我想在附图中更改此Excel中的形状宽度。大小将由包含数据的最后一列确定,在本例中为E列。

我添加了以下代码:

Sub UsedRange_Example_Column()
Dim LastColumn As Long
With ActiveSheet.UsedRange
    LastColumn = .Columns(.Columns.Count).Column
End With

iCol = 0
For i = 3 To LastColumn
    iCol = ActiveSheet.Cells(1, i).ColumnWidth + iCol
Next i

ActiveSheet.Shapes("Shape 37").Width = (iCol) * 5.72
End Sub

但是,我无法确定我应该用来改变大小的乘数因为5.72没有给我正确的结果。请注意,B列的大小为1英寸。

enter image description here

2 个答案:

答案 0 :(得分:2)

假设你的形状从col B开始,也许是这样的。我没有指定形状的顶部。

Sub UsedRange_Example_Column()

Dim LastColumn As Long

With ActiveSheet.UsedRange
    LastColumn = .Columns(.Columns.Count).Column
End With

With ActiveSheet.Shapes("Shape 37")
    .Left = Range("B1").Left
    .Width = Range("B1").Resize(, LastColumn - 1).Width
End With

End Sub

答案 1 :(得分:0)

您可以将其设置为相关范围的宽度:

Sub UsedRange_Example_Column()

    Dim dataRng As Range, ws As Worksheet
    Set ws = ThisWorkbook.Worksheets(1)
    Set dataRng = ws.UsedRange

    With ws.Shapes("Shape 37")
        .Left = dataRng.Left
        .Width = dataRng.Width
    End With

End Sub

你应该养成尽可能使用ActiveSheet的习惯(大部分时间都是这样)。始终声明您的工作表,因为这可以避免许多调试噩梦。