EXCEL – niepoprawny CurrentRegion po usunięciu wiersza

W makro wykorzystuje właściwość ActiveCell.CurrentRegion.Select aby wskazać aktywny zakres danych.
Jeźeli w trakcie pracy z określonego wcześniej regionu arkusza usunę wiersz lub wiersze to Excel pamięta ciągle stary zakres.
Dopiero po zapisaniu zmodyfikowanego arkusza (focus na komórce A1) zakres określany jest prawidłowo.

Jak uzyskać prawidłowe określenie CurrentRegion bez zapisywania pliku?

Odpowiedzi: 3

Zaraz pomyślę jak to zrobić, ale na początek
doczytałam kiedyś, źe xlCellTypeLastCell –
zwraca ostatni wiersz do którego kiedykolwiek zostały wpisane jakieś dane i stąd bierze sie koniecznośc zapisu chyba, moźe trzeba innej metody

np:
MsgBox Cells(3, 1).CurrentRegion.Address
w = Range(Cells(3, 1).CurrentRegion.Address).End(xlDown).Row
k = Range(Cells(3, 1).CurrentRegion.Address).End(xlToRight).Column
MsgBox "ostatnia komórka danych: wiersz " & w & ", kolumna " & k
ale jeszcze się upewnię...

Uźywasz w podanym przez Ciebie kodzie ActiveCell i jeśli bedę miała podczas wykonania Twojej procedury wybraną inną komórkę niź w podanym regionie (CurrentRegion) to fragment poniźszy jest całkowicie źle ?? Wiesz o tym ?

w = ActiveCell.SpecialCells(xlCellTypeLastCell).Row
k = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
halinavb
Dodano
22.12.2004 18:26:33
Wielkie sorry, rzeczywiście Current.Region zachowuje się poprawnie.
Po ponownej analizie doszedłem źe przyczyną błędu jest Last.Cell.
Poniźej kod który to ujawnia:

Sub myTest()
' kontrola jak działa CurrentRegion i LastCell
' zakładamy źe na pierwszym arkuszu są dane conajmniej w komórce "A3" i kilku sąsiednich wierszach
Dim w, k

Worksheets(1).Activate
w = Cells(3, 1).CurrentRegion.Rows.Count
k = Cells(3, 1).CurrentRegion.Columns.Count
MsgBox "Aktywny region ma " & w & " wierszy i " & k & " kolumn"

w = ActiveCell.SpecialCells(xlCellTypeLastCell).Row
k = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
MsgBox "ostatnia komórka danych: wiersz " & w & ", kolumna " & k

End Sub


Uruchom myTest i zobacz wyniki,
następnie usuń jak zwykły uzytkownik dowolny wiersz z zakresu danych i ponownie uruchom test.
LastCell ciągle wskazuje poprzednią komórkę
gds2
Dodano
22.12.2004 11:02:37
Poniewaź nie zaobserwowałam takiego "zjawiska" proszę o bliźszy opis "okoliczności", moźe kawałek kodu ?
halinavb
Dodano
21.12.2004 20:40:36
gds2
Dodano:
20.12.2004 13:28:46
Komentarzy:
3
Strona 1 / 1