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: 64384 Skopiuj do schowka Jak usunąć drganie arkusza?
Autor Wiadomość
beret
ExcelGaduła 500+


Pomógł: 3 razy
Posty: 564
Wysłany: 10-03-2019, 21:21   Jak usunąć drganie arkusza?

W załączonym pliku w arkuszu Legia jak kliknę komórkę lub cokolwiek wpiszę drga cały arkusz.
Jak temu zapobiec?

Probny.xlsm
Pobierz Plik ściągnięto 14 raz(y) 39.96 KB

ID posta: 363931 Skopiuj do schowka
 
 
ąćęłńóś
ExcelSpec


Pomógł: 185 razy
Posty: 838
Wysłany: 10-03-2019, 23:52   

Owszem, może i trochę mrygusi ... ale nie tak bardzo znowu ... spowodowane to jest konstrukcją tego makra, w przypadku "nie trafienia" we właściwą komórę uruchamiane jest, naprzemiennie po sobie, wyłączanie i włączanie ekranów i to ono tak "daje tego czadu" ... małego ... :->

Wyrzuć "If'y" na początek i jak coś nie będzie spełnione, to niech nastąpi wyjście z makra, np:
Kod:
    If Target.Cells.Count > 1 Then Exit Sub
    If Intersect(Target, Range("termin")) Is Nothing Then Exit Sub

A reszta, to potem.

Tak z innej beczułki, dlaczego tak niefrasobliwie stosujesz 'On Error Resume Next' bez wyłapywania błędu ? Przecież jak wystąpi jakiś błąd, to będzie ci się ciągnąć przez cały kod niczym przysłowiowy smrodek po gatkach ... i nie wiadomo co tam właściwie namąci .. :->

Poza tym, to dlaczego samo tylko zaznaczanie komórek powoduje wyświetlenie komunikatu, że nastąpiła jakaś zmiana w bazie ... skoro nie nastąpiła ?
  
ID posta: 363937 Skopiuj do schowka
 
 
Tajan


Pomógł: 4281 razy
Posty: 9514
Wysłany: 11-03-2019, 22:08   

beret, przyczyną są linie:
Kod:
Application.ScreenUpdating = False
i
Kod:
Application.ScreenUpdating = True
gdyż wymuszają one odświeżanie ekranu i stąd te "drgania". Powinno się je je stosować w przypadku masowej zmiany danych arkusza czy też zmiany aktywnych arkuszy. W twoim przypadku należałoby w Worksheet_SelectionChange zmienić ich położenie w taki sposób:
Kod:

                Case vbYes
                    Application.ScreenUpdating = False
                    Call usun
                    Call wstaw(nazwaArk)
                    [liczba] = 0
                    Cells(Last(Columns("E:F")) + 1, 2).Select
                     Application.ScreenUpdating = True
                Case vbNo

bo tylko w tym fragmencie zasadne jest ich zastosowanie. Ponadto zwracam uwagę, że użycie:
Kod:
Cells(Last(Columns("E:F")) + 1, 2).Select
w procedurze Selection_Change z uwagi na zmianę położenia aktywnej komórki spowoduje automatyczne wywołanie tej procedury w czasie wykonywania jej kodu . Należałoby w takim przypadku wyłączyć obsługę zdarzeń przed wykonaniem tej linii:
Kod:
Application.EnableEvents = False
Cells(Last(Columns("E:F")) + 1, 2).Select
Application.EnableEvents = True
Dodatkowo procedury Usun i Wstaw będą generowały zdarzenie Change co spowoduje dalsze perturbacje w czasie wykonywania kodu. Ostatecznie ten fragment należałoby oprogramować tak:
Kod:

                Case vbYes
                    Application.ScreenUpdating = False
                    Application.EnableEvents = False
                    Call usun
                    Call wstaw(nazwaArk)
                    [liczba] = 0
                    Cells(Last(Columns("E:F")) + 1, 2).Select
                     Application.EnableEvents = True
                     Application.ScreenUpdating = True
                Case vbNo
  
ID posta: 363977 Skopiuj do schowka
 
 
beret
ExcelGaduła 500+


Pomógł: 3 razy
Posty: 564
Wysłany: 12-03-2019, 13:08   

Tajan jak zwykle Twoje uwagi i podpowiedzi są b. skuteczne.
Uwzględniłem je w załączonym pliku i ... chyba coś sknociłem, bo raz działa, raz nie działa.
Idea pliku jest tak:
Pierwsza opcja:
Jeżeli w arkuszu z którymś klubem coś dodam i kliknę w komórkę E2 (z datą), to powinien się ukazać Msgbox, z którego mogę wybrać: Anuluj, NIE lub TAK.
1) jeśli wybiorę Anuluj nic się nie dzieje, jedynie zaznaczana jest ostatnia komórka w kol. B,
2) jeśli wybiorę NIE na arkusz wracają stare ustawienia,
3) jeśli wybiorę TAK dane z arkusza zapisywane są do bazy.

Druga opcja:
Jeżeli w arkuszu z którymś klubem coś dodam i chcę przejść do innego arkusza to powinno zrobić się to somo jak wyżej, tzn. ukazuje się Msgbox itd.

Bardzo proszę o to, abyś przejrzał mój plik i fachowo go poprawił, tak, aby działał tak jak trzeba.
Sam nie dam rady :oops:

Plis, Plis, Plis...

Kluby.xlsm
Pobierz Plik ściągnięto 2 raz(y) 50.71 KB

ID posta: 364028 Skopiuj do schowka
 
 
beret
ExcelGaduła 500+


Pomógł: 3 razy
Posty: 564
Wysłany: 13-03-2019, 15:46   

Założyłem na to nowy temat.
ID posta: 364137 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.marketingNET.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