Удалить выбранную строку, не уничтожая скрытые формулы - PullRequest
0 голосов
/ 27 апреля 2020

Кто-нибудь сможет дать какое-то указание о том, как лучше всего я смогу написать код, который позволит мне удалить выбранную строку в моей таблице? В моей таблице есть скрытые формулы, ссылки на другие ячейки и таблицы, а также скрытые столбцы.
Это код, с которым я сейчас работаю, который удаляет строку, однако при запуске кода формулы таблицы возвращают ошибку #REF! , В значительной степени новичок, поэтому любая помощь и руководство с благодарностью! :)

Sub Remove_Selected_Data()

    ' This subroutine clears the Selected Data from the row in the expenses and income table
    ' which is currently selected

    Dim iSelectedRow As Integer
    Dim sAnswer As String
    Dim wb As ThisWorkbook
    Dim ws As Worksheet
    Dim lo As ListObject

    Set wb = ThisWorkbook
    Set ws = ThisWorkbook.Worksheets("2020_Data")
    Set lo = ThisWorkbook.Worksheets("2020_Data").ListObjects("Table1")

    Application.ScreenUpdating = False

    iSelectedRow = ActiveCell.Row

    ' Check if selected row is a valid row to delete
    If iSelectedRow = 1 Then
        MsgBox "Please select a row within the Table!", vbExclamation, "Test1"
        Exit Sub

    ElseIf iSelectedRow > lo.DataBodyRange.Rows.Count + 1 Then
        MsgBox "Please select a row within the Table!", vbExclamation, "Test2"
        Exit Sub

    End If

    ' Check if you really want to clear all data
    sAnswer = MsgBox("Are you sure you want to clear the Selected data?" & vbNewLine & _
        "Click Yes to continue", vbYesNo + vbQuestion, "Test3")

    If sAnswer = vbYes Then
        Application.EnableEvents = False
        ws.Rows(iSelectedRow).Delete
        Application.EnableEvents = True
    End If

    Application.ScreenUpdating = True

End Sub

Заранее спасибо за помощь! :)

1 Ответ

0 голосов
/ 27 апреля 2020

Похоже, что некоторые формулы в ячейке таблицы ссылаются на предыдущие строки. Попробуйте заполнить формулы в столбце ошибок после удаления строки, используя .Filldown или что-то еще.

...