当用户在特定列中添加文本时,我有一个工作表创建ActiveX组合框。 具体来说,用户在A列的单元格中输入一个字符串,然后输入一个宏,然后获取文本并在同一单元格上创建一个组合框。
现在,我想在新创建的组合框旁边添加一个删除按钮,以删除同一行。
我也设法创建了组合框和按钮,但是有时“行删除”时出现错误:特别是正确删除了该行,但组合框仍然存在。我不明白这个问题,因为它并非每次都会发生。
我如何添加组合框和删除按钮(在Worksheet_change处理程序中):
Dim cb As OLEObject
Set cb = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, DisplayAsIcon:=False, Left:=targ.Left, Top:=targ.Top, Width:=targ.Width, Height:=targ.Height)
cb.LinkedCell = targ.Address
For Each cell In paramRange
cb.Object.AddItem cell.value
Next cell
Dim delBtn As Button
Set delBtn = ActiveSheet.Buttons.Add(ActiveSheet.Cells(targ.row, 13).Left, ActiveSheet.Cells(targ.row, 13).Top, ActiveSheet.Cells(targ.row, 13).Width, ActiveSheet.Cells(targ.row, 13).Height)
With delBtn
.OnAction = "DeleteLine"
.Caption = "DELETE"
.name = targ.row
End With
与删除按钮的按下相关的宏:
For Each OleObj in ActiveSheet.Rows(CInt(Application.Caller.row)).OLEObjects
oleObj.Delete
Next oleObj.Delete
Rows(CInt(ActiveSheet.Shapes(Application.Caller).name)).Delete
就像我说的那样,大多数情况下,相关行和关联的组合框都被很好地删除了,但是有时只有该行被删除,而组合框仍然挂着。