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: 64420 Skopiuj do schowka Zapisywanie danych do bazy w momencie zmiany arkusza
Autor Wiadomość
beret
ExcelGaduła 500+


Pomógł: 3 razy
Posty: 583
Wysłany: 13-03-2019, 15:56   Zapisywanie danych do bazy w momencie zmiany arkusza

W załączonym pliku jeżeli w arkuszu z nazwą klubu coś dodam i kliknę w komórkę E2 (z datą), to ukazuje się 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 pobierane z bazy,
3) jeśli wybiorę TAK dane z arkusza zapisywane są do bazy (a stare dane dla tego klubu i wybranej daty są usuwane z bazy).
I to jest Ok.

Jakie dać makro, aby w momencie opuszczania arkusza z nazwą klubu i przechodzeniu do innego arkusza, jeśli w arkuszu opuszczanym coś wcześniej zmieniłem, zachodziła podobna reakcja tzn. znów ukazał się taki sam Msgbox i po wybraniu na nim odpowiedniej opcji zachodziły te same reakcje j.w. (1, 2 lub 3). :oops:
[/code]

Kluby2.xlsm
Pobierz Plik ściągnięto 8 raz(y) 48.38 KB

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


Pomógł: 3 razy
Posty: 583
Wysłany: 14-03-2019, 09:45   

Udało mi się zrobić coś takiego:
Kod:
Private Sub Worksheet_Deactivate()
'Przejście do innego arkusza
nazwaArk = Me.Name
Dim msg1 As String, msg2 As String
If [liczba] = 0 Then Exit Sub

If [liczba] = 1 Then
        klub = [nazwa]
        czas = [termin]
        msg1 = "W arkuszu " & Chr(34) & nazwaArk & Chr(34) & " dokonano zmian lub dopisano nowe dane."
        msg2 = "Czy chcesz te zmiany zapisać w bazie danych?."
                    Select Case MsgBox(msg1 & Chr(10) & msg2, vbQuestion + vbYesNoCancel, "Pytanie")
               
                Case vbCancel
                    Application.EnableEvents = False
                    With Sheets(nazwaArk)
                    .Activate
                   .Cells(Last(Columns("B:E")) + 1, 2).Select
                    End With
                    Application.EnableEvents = True

                Case vbYes
                Application.ScreenUpdating = False
                Application.EnableEvents = False
                    Call usun
                    Call wstaw(nazwaArk)
                    [liczba] = 0
                Application.ScreenUpdating = True
                Application.EnableEvents = True
               
                Case vbNo
                Application.EnableEvents = False
                    Call odswiez2(nazwaArk)
                [liczba] = 0
              Application.EnableEvents = True
            End Select
End If
End Sub
Proszę Fachowców o przeanalizowanie tego makra i naniesienie poprawek (które na pewno będą). :oops:

Kluby2.xlsm
Pobierz Plik ściągnięto 9 raz(y) 33.21 KB

ID posta: 364199 Skopiuj do schowka
 
 
J_B 
Excel Expert


Pomógł: 273 razy
Posty: 778
Wysłany: 14-03-2019, 15:33   

Mi osobiście nie odpowiada takie rozwiązanie ( w procedurach zdarzeniowych )
Ja bym pozwolił wpisać dane i dał przycisk którym można zapisać dane do bazy ale twój wybór
był taki więc nie dyskutuję z tym dalej
Podejrzewam że drużyn będzie więcej ( cała liga ) więc w razie zmian w kodzie
będziesz musiał dokonać poprawek dla każdego arkusza
Ja podałem ci inne rozwiązanie ( kod w thisworkbook )
w ten sam sposób obsługuje arkusze i tu łatwiej jest wprowadzać ewentualne zmiany w kodzie teraz wystarczy dodać arkusz dla klubu nie martwiąc się kodem
może będzie ci to odpowiadało

Kluby2.xlsm
Pobierz Plik ściągnięto 13 raz(y) 48.85 KB

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


Pomógł: 3 razy
Posty: 583
Wysłany: 15-03-2019, 08:01   

Dziękuję za wyjaśnienia i plik.
Nie znałem tego z kodem w thisworkbook :hamer , al. to bardzo ogranicza ilość makr!.

Mam prośbę do tego:
Cytat:
Mi osobiście nie odpowiada takie rozwiązanie ( w procedurach zdarzeniowych )
Ja bym pozwolił wpisać dane i dał przycisk którym można zapisać dane do bazy
abyś zrobił taką wersję i podłączył.
ID posta: 364267 Skopiuj do schowka
 
 
J_B 
Excel Expert


Pomógł: 273 razy
Posty: 778
Wysłany: 15-03-2019, 13:04   

beret napisał/a:
abyś zrobił taką wersję i podłączył.

Skromne wymagania :-D
Patrz załącznik "to tylko wędka rybkę sam złap"
Do tworzenia nowych arkuszy masz ukryty arkusz o nazwie szablon
przycisk + dodaje nowy wiersz do wpisu
Przycisk - usuwa wpis( nie usuwa z bazy sam opracuj)
Popraw tak ma być
Kod:

Sub WstawWiersz()
    Dim Ow As Integer
    Ow = Range("_END").Row
    Range("A" & Ow & ":F" & Ow & "").Insert Shift:=xlDown
    Cells(Ow, 1) = "N"
End Sub


Kluby2.xlsm
Pobierz Plik ściągnięto 8 raz(y) 63.16 KB

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


Pomógł: 3 razy
Posty: 583
Wysłany: 15-03-2019, 16:08   

Dzięki, ciekawa propozycja.
ID posta: 364306 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