我目前正試圖通過添加一個新解決方案來改進我的實際解決方案。在 excel 中總結一個表格,為插入的每個新行創建一個洗掉按鈕。但是,如果我繼續這樣做,它會隨著時間的推移減慢我的檔案速度,因為會插入數百行,因此會插入很多物件(按鈕)。所以我需要它是一個按鈕,可以移動到用戶選擇的任何一行。
那是我目前的解決方案(這不是最好的):

那就是我試圖激活:

最后,我偶然發現了
uj5u.com熱心網友回復:
shtList請在作業表代碼模塊中復制上述代碼。然后,remove_item將 sub 關聯到必要的“按鈕”。它看起來是一個形狀:
Option Explicit
Private actCell As Range
Private Const myTblName As String = "Table3"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim btnRemoveItem As Shape, tbl As ListObject
Set tbl = shtList.ListObjects(myTblName)
If Not Intersect(Target, tbl.DataBodyRange) Is Nothing Then
Set actCell = Target
Set btnRemoveItem = shtList.Shapes("btnRemoveItem")
btnRemoveItem.top = actCell.top
End If
End Sub
Sub remove_item()
Dim answer As VbMsgBoxResult, tbl As ListObject
answer = MsgBox("Are you sure you want to remove this item?", vbYesNo vbQuestion, "Remove Item")
If answer <> vbYes Then Exit Sub 'exit if "Yes" not chosen
Set tbl = shtList.ListObjects(myTblName)
tbl.DataBodyRange.rows(actCell.row - tbl.DataBodyRange.row).Delete
End Sub
必要的按鈕將跳轉到選擇單元格的表格行上。如果選擇是在 table 之外的其他地方進行的DataBodyRange,則不會發生任何事情SelectionChange......
uj5u.com熱心網友回復:
我認為 FaneDuru 關于您的 424 錯誤的原因是正確的。
但我想建議你一個不太復雜的解決方案。你不需要形狀(這會減慢一切)——相反,你可以使用超鏈接。
您使用此代碼為每個單元格添加一個超鏈接(放置在普通模塊中 - 并在需要時呼叫):
Public Sub writeDeleteButtons(rg As Range)
Dim c As Range
For Each c In rg.Cells
c.Hyperlinks.Add c, vbNullString, , , "delete"
Next
End Sub
這可能看起來像這樣:

在您的作業表模塊中,您有以下事件,只要單擊超鏈接就會觸發該事件。Target.Range回傳被點擊的單元格。
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If Target.Range.Value = "add" Then
'addRow Me 'propably you want to implement the same for adding a row
ElseIf Target.Range = "delete" Then
deleteRow Me, Target.Range.row
End If
End Sub
最后,您可以通過再次放置在普通模塊中的子程式洗掉該行:
Public Sub deleteRow(ws As Worksheet, rowIndex As Long)
If vbNo = MsgBox("Are you sure you want to remove this item?", vbYesNo vbQuestion, "Remove Item") Then
Exit Sub
End If
ws.Rows(rowIndex).Delete
End Sub
您可以調整deleteRows以傳遞單擊的單元格本身并從那里繼續。
一個完全不同的解決方案是有一個自定義的 ui 背景關系選單......但這需要更多的解釋......
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/486103.html
