Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 71934 Skopiuj do schowka Przesuń wszystko do góry, jeśli zakres jest pusty
Autor Wiadomość
schuvi 
Exceloholic


Wersja: Win Office 2019
Posty: 158
Wysłany: 18-01-2023, 14:47   

Właśnie wypróbowałem.
Jest taki problem ze: po przesunięciu, kopiuje na wszystkie wiersze wartości z wiersza początkowego 2.
Zmienię wszystko w wierszu 2, i wyczyszczę inny, makro powtarza to samo. Co jest w wierszu 2, ląduje w pozostałych wypełnionych.
_________________
Wiele nie umiem ale w miarę szybko sie uczę :-)
ID posta: 424315 Skopiuj do schowka
 
 
Tajan


Pomógł: 5234 razy
Posty: 11412
Wysłany: 18-01-2023, 15:41   

Sorry, ale wkradł się błąd. Zmień linię:
Kod:
arr(x, j) = .Cells(1, j).Value
na
Kod:
arr(x, j) = .Cells(i, j).Value

czyli "1" na "i".
ID posta: 424319 Skopiuj do schowka
 
 
schuvi 
Exceloholic


Wersja: Win Office 2019
Posty: 158
Wysłany: 24-01-2023, 10:42   

Tajan,

dziękuję. Diała wyśmienicie.
Jedno pytanko tylko. Jeśli będę chciał, by nie omijało czyszczeniem kolumny J, (gdybym z zrezygnował z formuły w tej kolumnie, i wstawiał jakiś tekst), to jak ten wyjątek usunąć?
_________________
Wiele nie umiem ale w miarę szybko sie uczę :-)
ID posta: 424527 Skopiuj do schowka
 
 
Tajan


Pomógł: 5234 razy
Posty: 11412
Wysłany: 24-01-2023, 11:02   

Użyj tej wersji:
Kod:
Sub MoveRowsUp()
    'Aktualizuj dane / przesuń do góry
    Dim i As Long, j As Long, x As Long, empt As Range
    Dim arr(), rw As Range
   
    With Range("A2:M400")
       
        ReDim arr(1 To .Rows.Count, 1 To .Columns.Count)
       
        For i = 1 To .Rows.Count
           
            Set rw = .Rows(i).Cells
           
            If Application.CountA(rw) > 0 Then
               
                If .Cells(i, 1).Value = "" Then
                    Application.Goto rw
                    MsgBox "Nie wszystkie komórki zostały wyczyszczone!"
                    Exit Sub
                End If
               
                x = x + 1
               
                For j = 1 To .Columns.Count
                    arr(x, j) = .Cells(i, j).Value
                Next
            Else
                Set empt = Union(IIf(empt Is Nothing, rw, empt), rw)
            End If
           
        Next
   
        If Not empt Is Nothing Then .Value = arr
   
    End With

End Sub
ID posta: 424532 Skopiuj do schowka
 
 
schuvi 
Exceloholic


Wersja: Win Office 2019
Posty: 158
Wysłany: 24-01-2023, 11:09   

Dzięki za szybką odpowiedż. Może się kiedyś przyda.

Pozdrawiam
_________________
Wiele nie umiem ale w miarę szybko sie uczę :-)
ID posta: 424534 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe