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