Vba 相对于单元格插入ActiveX控件时出现问题
我正在尝试创建一个excel电子表格,其中包含一个按钮,可以在包含按钮的单元格上方插入一行和一个ActiveX组合框。选择该按钮可调整单元格大小并随单元格移动。由于每次单击按钮都会移动(插入上面的一行),并且用户可以高亮显示工作表上的任何单元格,因此我需要创建一个相对于按钮单元格而不是活动单元格的宏。我通过命名包含按钮的单元格并记录我自己的宏(选择使用相对引用)在包含按钮的单元格上方插入一行,完成了前半部分。然后,我编辑了包含ActiveCell的宏。选择范围(“NamedCell”)。这样,无论用户高亮显示哪个单元格,它都会在按钮上方插入一行 我遇到的问题是如何插入ActiveX组合框。生成的代码包含用于定位ActiveX组合框的左、顶、宽和高。由于高度随每次连续单击和插入行的结果而变化,因此所有组合框都显示在彼此的顶部。如果这无法实现或需要大量VBA代码,请不要担心。通过阅读你对别人的反应,我已经学到了很多。这是我目前拥有的宏,但它每次都会在相同的位置插入ActiveX组合框,而不是像我希望的那样插入按钮上方的单元格。再次感谢Vba 相对于单元格插入ActiveX控件时出现问题,vba,excel,activex,Vba,Excel,Activex,我正在尝试创建一个excel电子表格,其中包含一个按钮,可以在包含按钮的单元格上方插入一行和一个ActiveX组合框。选择该按钮可调整单元格大小并随单元格移动。由于每次单击按钮都会移动(插入上面的一行),并且用户可以高亮显示工作表上的任何单元格,因此我需要创建一个相对于按钮单元格而不是活动单元格的宏。我通过命名包含按钮的单元格并记录我自己的宏(选择使用相对引用)在包含按钮的单元格上方插入一行,完成了前半部分。然后,我编辑了包含ActiveCell的宏。选择范围(“NamedCell”)。这样,无
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
这就是你想要的吗
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
这就是你想要的吗
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
是的,很好用。我试图找出它相对于细胞的位置。非常感谢你抽出时间来帮助我!不幸的是,我还不能对你的评论投赞成票,因为我没有15点的声誉积分,但一旦我有了,我会的。很高兴这对你有用。顺便说一句,谢谢,这很有帮助。有时,当你不确定自己在寻找什么时,寻找答案是很困难的,但这肯定是有帮助的。再次感谢。是的,这很好用。我试图找出它相对于细胞的位置。非常感谢你抽出时间来帮助我!不幸的是,我还不能对你的评论投赞成票,因为我没有15点的声誉积分,但一旦我有了,我会的。很高兴这对你有用。顺便说一句,谢谢,这很有帮助。有时,当你不确定自己在寻找什么时,寻找答案是很困难的,但这肯定是有帮助的。再次感谢。