在工作表到单元格大小中安装ActiveX控件

时间:2014-02-04 11:36:42

标签: excel-vba vba excel

在工作表(Comboboxes,Textboxes和Listboxes)上放置了几个Active控件。形状也与细胞有关。我需要调整形状的大小,使它们适合/与单元格大小对齐。如何使用VBA执行此操作?

4 个答案:

答案 0 :(得分:1)

以下是调整ActiveX控件的高度和宽度的方法。我以textBox

为例
Dim rng As Range

With [Sheet1] '<~~ Change this to the relevant sheet
    Set rng = .Range(.TextBox1.LinkedCell)

    .TextBox1.Width = rng.Width
    .TextBox1.Height = rng.Height
End With

通过评论进行跟进。

  

正如我之前所说,工作表中有几种不同类型的ActiveX控件。我正在寻找将遍历Shapes集合的通用代码(没有专门命名形状)并将形状大小与链接单元格的大小对齐。 - user1955215 12分钟前

如果你想使用形状,请使用它。

Dim rng As Range
Dim shp As Shape

With ActiveSheet
    Set shp = .Shapes("TextBox1")

    Set rng = .Range(shp.OLEFormat.Object.LinkedCell)

    shp.Width = rng.Width
    shp.Height = rng.Height
End With

答案 1 :(得分:0)

您是否尝试录制宏?

Worksheets("worksheet_name").Shapes("ActiveX_control_name").Width = number

Worksheets("worksheet_name").Shapes("ActiveX_control_name").Height = number



编辑:

这个怎么样?

Worksheets("Worksheet_name").Shapes("ActiveX_control_name").TopLeftCell.Address

答案 2 :(得分:0)

选择您的主动控制对象(组合框,文本框等)并转到功能区上的“格式” - 在排列框中,您会看到对齐旁边有一个保管箱。单击它并选择“SNAP TO GRID”

如果是多个物体,请按F5 - 特殊 - 物体。

如果您希望通过代码执行此操作,请记录宏并根据需要修改结果。

答案 3 :(得分:0)

这有帮助吗?

Sub resize_controls()
Dim ct As Object
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("sheet1")
For Each ct In ws.OLEObjects
    ct.Top = ws.Range(ct.TopLeftCell.Address).Top
    ct.Left = ws.Range(ct.TopLeftCell.Address).Left
    ct.Height = ws.Range(ct.TopLeftCell.Address).Height
    ct.Width = ws.Range(ct.TopLeftCell.Address).Width
Next ct
End Sub

这将捕获我不了解任何其他对象的活动x控件。