我正在尝试创建一个带有按钮的Excel电子表格,该按钮在包含按钮的单元格上方插入行和ActiveX组合框。选择按钮以调整大小并随单元格移动。由于按钮每次单击都会移动(插入上面一行),并且用户可以突出显示工作表上的任何单元格,我需要创建一个相对于按钮单元格的宏,而不是活动单元格。我通过命名包含按钮的单元格并记录我自己的宏(选择了使用相对引用)在包含按钮的单元格上方插入一行来完成前半部分。然后我将包含ActiveCell.Select的宏编辑到Range(" NamedCell")。选择这样,无论用户突出显示哪个单元格,它都会在按钮上方插入一行。
我遇到的问题是如何插入ActiveX组合框。生成的代码包含Left,Top,Width和Height以定位ActiveX组合框。由于高度随着每次连续点击和生成的插入行而变化,因此所有组合框都显示在彼此的顶部。如果这不可能发生或需要大量的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
答案 0 :(得分:1)
这是你在尝试的吗?
Sub AddFitting()
Dim ws As Worksheet
Dim rng As Range
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
.Range("FittingRow").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Set rng = .Range("FittingCell").Offset(-1, 0)
With .OLEObjects.Add(ClassType:="Forms.ComboBox.1", link:=False, _
DisplayAsIcon:=False, Left:=rng.Left, Top:=rng.Top, _
Width:=rng.Width, Height:=rng.Height)
.Placement = xlMoveAndSize
.PrintObject = True
End With
rng.Offset(, 2).FormulaR1C1 = "'= K value"
End With
End Sub