【发布时间】:2014-01-01 17:29:12
【问题描述】:
我正在尝试创建一个 Excel 电子表格,其中包含一个插入行的按钮和一个包含按钮的单元格上方的 ActiveX 组合框。选择按钮以调整单元格的大小并随单元格一起移动。由于每次单击按钮都会移动(因为插入了上面的一行),并且用户可以突出显示工作表上的任何单元格,所以我需要创建一个与按钮单元格相关的宏,而不是活动单元格。我通过命名包含按钮的单元格并记录我自己的宏(选择使用相对引用)在包含按钮的单元格上方插入一行来完成前半部分。然后我将包含 ActiveCell.Select 的宏编辑为 Range ("NamedCell").Select 以便无论用户突出显示哪个单元格,它都会在按钮上方插入一行。
我遇到的问题是如何插入 ActiveX 组合框。生成的代码包含用于定位 ActiveX 组合框的 Left、Top、Width 和 Height。由于每次连续单击和插入的行都会改变高度,因此所有组合框都出现在彼此的顶部。如果这不能发生或需要大量 VBA 代码,请不要担心。通过阅读您对其他人的回复,我已经学到了很多东西。这是我目前拥有的宏,但它每次都将 ActiveX 组合框插入到同一个位置,而不是像我想要的那样在按钮上方的单元格中。再次感谢。
Sub AddFitting()
'
' AddFitting Macro
'
'
Range("FittingRow").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("FittingCell").Select
ActiveCell.Offset(-1, 0).Range("A1").Select
ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=0, Top:=346.5, Width:=120, Height:=15.75) _
.Select
With Selection
.Placement = xlMoveAndSize
.PrintObject = True
End With
ActiveCell.Offset(0, 2).Range("A1").Select
ActiveCell.FormulaR1C1 = "'= K value"
ActiveCell.Offset(0, -1).Range("A1").Select
End Sub
【问题讨论】: