gpt4 book ai didi

vba - 让按钮删除它所在的行

转载 作者:行者123 更新时间:2023-12-02 22:55:49 25 4
gpt4 key购买 nike

我在 Excel 上制作了一个待办事项列表。我有一个按钮,可让我在新行中添加任务和有关该任务的一些详细信息。基本上,我想添加一条指令,对于添加的每个新任务,还在行的末尾添加一个按钮,用于删除所述行(在任务结束时删除任务)。

现在我已经尝试过这一点,但遇到了几个问题:

Set btn = ActiveSheet.Buttons.Add(cellul.Offset(0, 1).Left, _
cellul.Offset(0, 1).Top, cellul.Offset(0, 1).Width,_
cellul.Offset(0, 1).Height)
With btn
.OnAction = "deletebutton"
.Caption = "Done !"
.Name = "Deleteline"
End With

Sub deletebutton()
Activecell.Entirerow.Delete
End Sub

现在,它确实给了我一个我想要的按钮,但是当我稍后必须对我的任务进行排序(按截止日期)时,我留下的按钮不会随着排序而移动(或者可能ActiveCell 位破坏了它),我留下的按钮没有删除正确的任务。

有谁知道我如何引用按钮所在的行(这样我可以在按钮的宏中对其进行编码),或者以任何其他方式让按钮删除它实际所在的行?

最佳答案

您需要删除与所单击的按钮位置相关的行。使用 Application Caller 方法获取单击的按钮的名称,并使用 TopLeftCell 属性获取其位置。

使用.Name = "Deleteline" 将所有按钮命名为相同,这使得识别单击的按钮变得困难。除非您有充分的理由这样做,否则请删除此行。

重构deletebutton子(假设.Name = "Deleteline"被删除)

Sub deletebutton()
Dim rng As Range
Dim rngOld As Range
Dim msgRes As VbMsgBoxResult


Set rngOld = ActiveCell
Set rng = ActiveSheet.Buttons(Application.Caller).TopLeftCell.EntireRow

rng.Select
msgRes = MsgBox("Proceed?", vbOKCancel, "About to Delete this row.")
If msgRes = vbOK Then
rng.Delete
End If
rngOld.Select
End Sub

关于vba - 让按钮删除它所在的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28080675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com