Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[EXCEL] Usuwanie wierszy przy otwarciu dokumentu.

wiciu_lodz 07 Gru 2010 23:52 1152 1
  • #1 07 Gru 2010 23:52
    wiciu_lodz
    Poziom 9  

    Witam,

    ja mam nieco inny problem,
    mianowicie w obszarze arkusza o nazwie "LISTA" w ostatniej kolumnie "AO"
    wpisuję "X" jako pozycja zrealizowana. Chciałbym aby przy ponownym odświeżeniu
    pliku, bądź też otwarciu, wszystkie pozycje odznaczone w tej kolumnie "X" em były usunięte bez problemu dla funkcjonowania całej tabeli, która jest źródłem dla tabeli przestawnej w następnym arkuszu. Czy jest jakaś możliwość zastosowania takiego zabiegu?

    Z góry dziękuję za zainteresowanie tematem.
    Sylwek

    Skoro ma kolega problem do rozwiązania, to proszę zakładać własne tematy, a nie "podpinać" się pod cudze problemy !
    Zdarzyło się to koledze, pierwszy, i mam nadzieję, ostatni raz. -arnoldziq

    0 1
  • #2 08 Gru 2010 11:57
    marcinj12
    Poziom 40  

    Jeżeli nie ma dużo wierszy (problemy z wydajnością), to sprawdzi się to prościutkie rozwiązanie, podpięte np. do procedury Workbook_open:

    Code:
    Private Sub Workbook_Open()
    
    On Error GoTo myErr
    Set wslista = ThisWorkbook.Worksheets("LISTA")

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    On Error Resume Next
        wslista.ShowAllData
    On Error GoTo myErr

    ost_wiersz = wslista.Range("AO65536").End(xlUp).Row

    licznik = 0

    For i = ost_wiersz To 2 Step -1
        If wslista.Range("AO" & i) = "x" Then
            wslista.Rows(i).EntireRow.Delete
            licznik = licznik + 1
        End If
    Next i

    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

    If licznik > 0 Then
        MsgBox licznik & " wierszy usunięto", vbInformation + vbOKOnly, "OK"
    End If

    Set wslista = Nothing

    Exit Sub
    myErr:
        If Application.Calculation <> xlCalculationAutomatic Then Application.Calculation = xlCalculationAutomatic
        Application.ScreenUpdating = True
        MsgBox "Błąd programu: " + Err.Description, vbCritical + vbOKOnly, "Błąd"
    End Sub


    Jeżeli nie chcesz żeby Ci zmieniało zakres danych w tabeli przestawnej, to albo ga za każdym razem odbuduj (makrem), albo po prostu zaznacz zakres jako kolumny (LISTA!$A:$AO)

    0