trochę się pogubiłem.
Chcesz usunąć wszystko poza kolumną A czy wszystko oprócz wiersza 1.
jeżeli masz stworzoną tabelę w komórkach A1:Gx (x oznacza ostatni wiersz wypełnionymi danymi o nie znanej wartości w momencie pisania kodu), w kolumnie 1 znajduje się opis który ma zawsze pozostać, a usunięte mają być dane od wiersza 2giego w dół możesz spróbować takiego kodu:
int_zlicz_elem = Application.WorksheetFunction.CountA(Worksheets("Arkusz1").Range("A2:A65536")) + 1 ' zliczenie elementów znajdujących się w pierwszej kolumnie Od wiersza 2giego do ostatniego)
str_adres_tekstowy = "A2:G" & int_zlicz_elem ' stworzenie adresu tekstowego. zaznaczy komórki od wiersza 2giego do ostatniego w którym są dane w kolumnie od A do G
Range(str_adres_tekstowy).Select ' zaznacza obszar do skasowania
Selection.ClearContents ' czyści zawartość komórek
Zastanawiam się czy nie masz problemu z filtrem Excela, miałem taki problem z nim, że po jednym użyciu filtra komórki ukrywały się i pozostawały cały czas nie widoczne.
Rozwiązaniem jest:
1. założenie na kolumnę filtrowaną filtra "=*" filtr pokazuje z powrotem wszystkie znaki.
2. wyłączenie filtra
Sheets("Arkusz1").AutoFilterMode = False ' wyłacza autofiltr
Tu jest kawałek kodu który użyłem do kopiowania danych z jednego arkusza do drugiego, z jednoczesnym filtrowaniem i sortowaniem danych
Dim str_adres_tekstowy As String ' zmienna w której wpisywane są adresy tekstowe komórek np A1:A10
Dim str_filtr As String ' zmienna zawierająca wyrażenie filtrujące dane
Dim int_nr_kolumny_filtrującej As Integer ' zawiera numer filtrowanej kolumny / liczbowa wartość
Dim str_nr_kol_sort As String ' zawiera numer filtrowanej kolumny / literowa wartość
Dim str_filtr_rosn_malej As String
'użycie filtra danych
str_filtr = Trim(frm_glowna.txt_spis_cz_filtr.Text) ' pobranie i usunięcie spacji z tekstu filtrującego
If str_filtr = "" Then
str_filtr = "=*" ' jeżeli puste lub spacja ustawia =* jako wyświetlenie wszystkiego
Else
str_filtr = "=" & str_filtr & "*" ' dodaje symbo "=" i na koniec "*" ( po w pisaniu w "a" mamy filtr "=a*" pokazuje wszystko co zaczyna się na literę "a")
End If 'If str_filtr = ""
int_nr_kolumny_filtrującej = frm_glowna.cbo_spis_cz_filtr.ListIndex + 1 ' wybranie nr kolumny filtrowanej ( + 1 bo cbo licznik ma od 0)
frm_glowna.lbl_test_1.Caption = "filtr =/" & str_filtr & " // nr_kol= " & int_nr_kolumny_filtrującej
'MsgBox "str_filtr = " & str_filtr & " // int_nr_kolumny_filtrującej = " & int_nr_kolumny_filtrującej
Sheets("czesci_lista").Select
Range("a10").Select
Selection.AutoFilter Field:=int_nr_kolumny_filtrującej, Criteria1:=str_filtr, Operator:=xlAnd
'skopiowanie danych
int_zlicz_elem = Application.WorksheetFunction.CountA(Worksheets("czesci_lista").Range("A11:A65536")) ' zliczenie elementów w tabeli
str_adres_tekstowy = "A10:G" & int_zlicz_elem + 10 ( u mnie +10 bo moja tabela zaczyna się w wierszu 10tym)
Sheets("temp").Select 'zaznaczenie arkusza docelowego
Cells.Select ' zaznaczenie wszystkich komórek
Selection.ClearContents ' wyczyszczenie zaznaczonego
Sheets("czesci_lista").Select ' zaznaczenie arkusza źródła
Range(str_adres_tekstowy).Select ' zaznaczenie danych źródłowych
Selection.Copy
Sheets("temp").Select ' docelowy arkusz
Range("A10").Select ' docelowa pierwsza komórka
ActiveSheet.Paste ' wklejenie
Application.CutCopyMode = False ' czyści zawartość schowka
Sheets("czesci_lista").AutoFilterMode = False ' wyłacza autofiltr
'sortowanie danych
int_zlicz_elem = Application.WorksheetFunction.CountA(Worksheets("temp").Range("A11:A65536")) ' zliczenie elementów w tabeli
str_adres_tekstowy = "A10:G" & int_zlicz_elem + 10
str_nr_kol_sort = Chr(64 + Sheets("czesci_lista").Cells(6, 5)) & "11" ' gdy sort wg 2 kolumny będzie np "B11"
If Sheets("czesci_lista").Cells(6, 6) = 0 Then ' sprawdzenie wybranego sortowania rosnące=1, malejące=0
str_filtr_rosn_malej = "xlDescending"
Range(str_adres_tekstowy).Sort Key1:=Range(str_nr_kol_sort), Order1:=xlDescending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Else
str_filtr_rosn_malej = "xlAscending"
Range(str_adres_tekstowy).Sort Key1:=Range(str_nr_kol_sort), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End If 'If Sheets("czesci_lista").Cells(6, 6) = 0
UdioS |