Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Makro w excelu. Dlaczego suma nie zostaje obliczona?

Facetjanusz 29 Jan 2011 22:43 13939 66
  • #31
    Facetjanusz
    Level 15  
    PS. Chyba muszę zmienić temat , ponieważ nie mogę dodać Ci punktów za pomoc - tak solidną i wyczerpującą pomoc...
  • #32
    marek003
    Level 40  
    Zamiast wpisywać w makro kolejne miesiące w kodzie makra zamiast "Styczeń" wpisz 2 (dwa) bo to drugi arkusz. Będzie działało bez wzglkędu na nazwę arkusza. Dwa wpisujesz bez czudzysłowia w nawiasie. Innymi słowy wszystkie
    Worksheets("Styczeń")
    zamieniasz na
    Worksheets(2)
    .
  • #33
    Facetjanusz
    Level 15  
    Witam ponownie
    Doszedł jeszcze jeden problemik mały - mianowicie próbuję zciągnąć dane z innego otwartego skoroszytu (prawdopodobnie z zamkniętego nie da się) - za pomocą
    INDIRECT.EXT (zainstalowałem sobie dodatek MOREFUNC) i wali błąd.
    Nie mogę sobie z tym dać rady ?
    przykład posyłam w pliku (2 Skoroszyty)
  • #34
    Facetjanusz
    Level 15  
    Marku - w tej chwili przeczytałem Twoją radę - powiem Ci , że myślałem o tym - ale ten program będzie obsługiwać księgowa (lub inne osoby którym podaruję ten program) - które to osoby nie będą zmieniać w Makro - i dlatego myślałem aby w tej samej Formantce dodać wybór miesiąca !? hmm - może nie będzie to taki duży problem ?
    Pozdro

    Dodano po 41 [minuty]:

    Ps .
    Wydaje mi się , że Raport Zak 77 pojawia się dlatego , że do programu Ewidencja, makro skopiowałem właśnie z w/w pliku .
  • #35
    marek003
    Level 40  
    Dodałem miesiące i poprawiłem formułę w Arkuszu osobowym. Nie wiem dlaczego sobie utrudniasz. Przecież przy zwykłych danych wystarczy "=" (równa się) żeby "przejąć" dane. Żadne dodatkowe funkcje nie są potrzebne. ([chyba że korzystasz z bazy danych - ale to inny temat i też inaczej]
    Otwórz oba pliki aby zrozumieć formułę. Docelowo wystarczy potem otwierać tylko plik osobowy pod warunkiem że plik główny będzie w tym samym miejscu jak była tworzona formuła [przy otwartych dwóch plikach].

    Ja dodałem jeszcze funkcję "jeżeli()" by jak nie ma danych nie pokazywało zera tylko pustą komórkę (tak jak w dacie w zestawieniu w głównym pliku)

    Nie wiem czy z kolejnymi zmianami ten programik (ta koncepcja) będzie w stanie podołać :) .
    Rozbudowujesz to coraz bardziej i nie wiem czy po kolejnym dodatku nie trzeba będzie zmienić koncepcji.
    Kłania się teoria programowania tzn. Na początku się określa co ma dany program robić jakie ma dane wejściowe i co ma docelowo pokazywać a potem się tworzy (pisze) program.
    Mam pewne obawy po dodatkowym pliku.
    Zauważ że chcesz (w nowym pliku) pobierać dane do poszczególnych arkuszy styczeń , luty itd. ale arkusz DANE masz (jak na razie) wspólny dla każdego miesiąca. Powiązanie (aktywne) arkusza DANE z poszczególnymi arkuszami w drugim skoroszycie będzie wykazywało bzdury bo dla każdego miesiąca będzie to samo.
    Ale do końca nie wiem co chcesz osiągnąć więc może i tak ma być.

    W załączeniu "poprawiony" przykład.

    Acha - nie robiłem na razie zabezpieczeń przed błędnym wyborem miesiąca więc nie wybieraj innego miesiąca jeżeli nie masz takiego arkusza bo będzie błąd.
  • #36
    Facetjanusz
    Level 15  
    Witam ponownie , sądziłem, że zakończę temat - okazuje się jednak, że jeszcze nie do końca daję sobie radę.
    Słuszną jest Twoja uwaga - że należało na początku zrobić założenia teoretyczne do programu , a wówczas na pewno budowało by się go po kolei i byłby on znacznie prostszy.. W tej sytuacji jednak kiedy ma się już ku końcowi nie warto było by się trudzić od nowa.
    W pliku który wysyłam prosiłbym o pomoc w rozwiązaniu problemu przeniesienia Wpłaty i Daty z DANE w "Ewidencji" do DANE w "Kartotece osobowej", z każdego miesiąca w kolejne kolumny. Następnie te Wpłaty skopiuję w arkusze kolejnych miesięcy (jak w pliku).
    Właśnie w obawie, że mogą (jak piszesz wystąpić bzdury w drugim skoroszycie w związku z powiązaniami z DANYMI należało by wykorzystać wprowadzaną nazwę miesiąca ? (To co zrobiłeś działa nadspodziewanie dobrze - wpisuje wartości w ten miesiąc w którym się wprowadza dane - analizowałem w Makro jak jest porównywane z arkuszem w którym się dokonuje wpisu -bo nie zależy to od nazwy miesiąca ?).
    Wydaje mi się ,że są dwie metody ,
    pierwsza gdy w "Ewidencji" w każdym miesiącu doda się tabelkę z Wpłatą i Datą każdego obywatela i tam zostaną pobrane wartości z DANYCH, a następnie skopiują się do drugiego skoroszytu w kolejne kolumny (oznaczone Miesiącami).
    A drugi sposób to bezpośrednie adresowanie z DANE w " Ewidencji" do drugiego skoroszytu "Kartoteka osobowa" w arkusz DANE ,w kolejne kolumny (w zależności od miesiąca wpisu.)
    W miarę wolnego czasu proszę o pomoc.
    Pozdro.
  • #37
    marek003
    Level 40  
    Tak jak pisałem w zależności jaki miesiąc wybierzesz to do tego arkusza wpisują się dane [zmienna publiczna Arkusz_nazwa] (przy czym z automatu po włączeniu przycisku makro pobiera nazwę arkusza i "wpisuje" w combobox ale można ją w każdej chwili zmienić)
    Arkusz DANE masz wspólny dla wszystkich miesięcy - nie widzisz który miesiąc obsługujesz (suma w polu żółtym też jest wspólna tzn jeżeli coś wstawisz dla stycznia a za chwilę dla lutego to w żółtej kolumnie arkusza dane wartości z tych obu miesięcy zostaną zsumowane).

    W takim wypadku proponuje stworzyć też 12 arkuszy DANE na każdy miesiąc.
    I ewentualnie by nie powtarzać danych w arkuszu słownik określić tylko raz nazwiska i wartość funduszu remontowego. Te dane będą pobierane do danych każdego miesiąca.
    A potem już do kartoteki osobowej zwykłym "równa się" z poszczególnych arkuszy danych.

    Jak znajdę chwilę to prześlę ci propozycję.

    jeszcze pytanie :
    Czy arkusze z kartoteką osobową muszą być w oddzielnym pliku? Mogą być w tym samym (w ewidencji)? czy jednak nie?
  • #38
    Facetjanusz
    Level 15  
    Podsunąłeś mi dobre rozwiązanie - dopisałem do Ewidencji w każdym miesiącu Dane - ale już nie jako Arkusz. Teraz można (podobnie jak Wpłaty są wpisywane do tego miesiąca ) będą wpisywane indywidualne kwoty i daty.
    .. Zabrałem się za przerabianie Makro (nie bardzo wierzę , że mi się uda) ale..
    Może Ty to wcześniej zrobisz? Jeżeli chodzi o "Słownik" to w danym roku raczej nic się nie zmienia i może być wspólny.
    Pozdro
  • #39
    marek003
    Level 40  
    W załączeniu mój przykład.
    Zmieniłem zasady w arkuszu "dane"
    Oddzielnie liczy każdy miesiąc (dane od kolumny AA). Dla każdego miesiąca sumy i daty.
    Dodałem arkusz kartoteka osobowa gdzie jest wybór miesiąca.

    Jest jeszcze dodatkowa rzecz:
    Prawie zawsze (w zależności od płatności) możesz zmieniać miesiąc wprowadzenia, lecz gdy wybierzesz pierwszą opcję "wpłaty czynszów i za wodę" nie można już zmienić miesiąca. To ma na celu zabezpieczenie przed błędem dotyczącym sumowania danych z różnych miesięcy.
    Jeżeli w takim przypadku ktoś się pomylił i chce po wybraniu opcji "wpłaty czynszów i za wodę" zmienić miesiąc to powinien wcisnąć wtedy anuluj i przed wybraniem pierwszej opcji "wpłaty czynszów i za wodę" określić miesiąc którego ma się to dotyczyć i dopiero wtedy wybrać "wpłaty czynszów i za wodę".
    (Zabezpieczenie przed sumowaniem danych dotyczących innych miesięcy.

    Myślę że rozumiesz, jeżeli nie to pisz.


    dodane po chwili

    ------------------------------------
    Zanim odpisałem pojawiła się twoja odpowiedz ... ale dziś już jej nie sprawdzę i nic nie wymyślę bo jestem po duuużym piwie i ... nic nie wymyślę :) .
  • #40
    Facetjanusz
    Level 15  
    OK - Jesteś Marku Wielki .
    Właśnie sam próbuję walczyć z Makro - ale widzę przesyłkę od Ciebie - jutro to przeglądnę , ponieważ żona goni mnie do spania -a to nie przelewki!
    Pozdr
  • #41
    Facetjanusz
    Level 15  
    Marku - to jest TO!
    Na razie nic nie poprawiaj - ponieważ zacząłem analizować program i działa ok. Jak zrobię cały to Ci wyślę.
    Gdy będę miał jakieś problemy , lub pomysły to napiszę.
    Jeszcze raz dziękuję i pozdrawiam.
    Janusz
  • #42
    Facetjanusz
    Level 15  
    Witam.
    Mam jeszcze małą prośbę do Marka w związku z problemikiem jaki pojawił się podczas eksploatacji programu. mianowicie jeśli dopisuje się nową pozycję w Rodzaj wpłaty - to OK jest ona dopisywana na końcu , ale jeśli do wybranego rodzaju dodatkowo coś się dopisuje to również jest traktowana jako nowy dopis i wpisana jest kolejna pozycja na końcu .
    Np. Opłata za prowadz.rachunku za m-c: - tu musi się dopisać "01.2011" w tej sytuacji nie powinno traktować jako nowy wpis.
    Gdy to będzie duży problem w przerobieniu Makra to radzimy sobie dopisując po wprowadzeniu..
    Pozdro
  • #43
    marek003
    Level 40  
    Załącz przykład z błędnymi wpisami bo nie do końca rozumiem.

    Główne założenia (a właściwie zasady listy) są takie że każda inna nazwa w liście (nawet spacja na końcu) jest traktowana jako coś nowego. Excel to "maszyna matematyczna" - nie wie co autor chce, robi to co powinien od strony matematycznej.

    Jeżeli chcesz "rozdzielić" nazwę wpłaty trzeba to zrobić podobnie jak dla "danych" (pierwszej opcji). Czyli gdy wybierzesz "czynsz za miesiąc:" pojawi się (visable) dodatkowe okno "za który". Inaczej tego nie widzę.

    Ale do końca nie wiem o co ci chodzi.
  • #44
    Facetjanusz
    Level 15  
    Ale Marku - ja nie piszę nic o "błędnych wpisach" , chodzi dokładnie o to o czym dajesz mi poradę - tylko nie wiem czy dam sobie z tym radę.
    Pozdro
  • #45
    Facetjanusz
    Level 15  
    Witam.
    Wprowadzając dane ,co jakiś czas występują błędy. ponieważ ustawilem zapis automatyczny co 2 minuty - muszę korzystać z zapisanej kopi.
    Czasami przez pół godziny wprowadza się dobrze - a czasem co parę minut wywala.
    Wysyłam zrzuty tych błędów i proszę zerknij na to., od czego to może występować.
    Aha - wprowadzałem także na drugim kompie - jest podobnie.
    Pozdr
  • #46
    marek003
    Level 40  
    Zgodnie z info wynika że makro nie widzi objektu UserForm1.
    Możesz jeszcze określić w którym momencie (zaraz po wciśnięciu przycisku? ) pojawia się ten błąd i czy w momencie powstania jest tylko ten skoroszyt włączony czy parę innych skoroszytów.

    Myślę nad zmianami: dodatkowym tekstem i poprawką techniczną bo to się tak rozrosło od pierwotnego zamiaru.

    Czy może być np. dodatkowa kolumna określająca dodatkowe wpisy w stylu: "za miesiąc 01.2011". Np. w kolumnie "UWAGI" [{dodatkowa} kolumna F w arkuszach miesięcznych] czy jednak to musi być w jednej kolumnie E?

    Dodane po jakimś czasie
    ----------------------------------------------------------------
    Zamieść jeszcze raz plik z którego obecnie korzystasz (bez znaczących danych). Nie zwróciłem uwagi wcześniej ale chyba błędnie przypisuje wartość remontów (funduszu remontowego) . Niszczy to twoją formułę. Jeżeli tak ma być to ok, jak nie, to trzeba coś innego wymyślić bo w obecnej chwili ta wartość właściwe źle się przypisuje [do 17 kolumny].
  • #47
    Facetjanusz
    Level 15  
    OK. Zwrócę uwagę w jakiej sytuacji występują błędy.

    Dodano po 19 [minuty]:

    Błąd ogólny wystąpi przy próbie zapisu po zmianach. Otwarte były 2 skoroszyty powiązane z sobą łączem. Zostały one wyłączone i nastąpiło odzyskiwanie z kopi.
  • #48
    Facetjanusz
    Level 15  
    W tej chwili był tylko otwarty jeden skoroszyt i nic nie robiłem - a "Wystąpił problem z aplikacją Microsoft Office Excel i zostanie ona zamknięta"
    Nie mam pojęcia co powoduje tę sytuację ?
  • #49
    marek003
    Level 40  
    Przyznam że nie wiem o co chodzi. Może coś nie tak z systemem sprawdź antywirem i antyronbakiem.

    Ja znalazłem pewien "dziwny" błąd bo nigdy się z tym nie spotkałem.

    Ponieważ był monit o Useform1 (standardowa nazwa okienka) podejrzewałem, że inny arkusz ma podobnie okienko i makro się gubi niewiedząc które włączyć (nie powinno ale ...)

    Postanowiłem zmienić nazwę UserForm na Okienko i.... pojawił się kłopot z inicjacją okienka, bo przeszkadzało w kodzie inicjacji zerowanie w arkuszu DANE który na marginesie w kodach makra był nazwany jako Sheet a nie Arkusz. Zmieniłem nazwę na Arkusz10 i poszło. (dziwne że nie szło z nazwą Sheet)

    Stwierdziłem więc, że może być problem w tym, że historia tego skoroszytu dotyczy "różnych" Exceli (polskiego i angielskiego w dodatku w różnych wersjach: 2003/2007)

    Zbudowałem go więc od początku w 2003 (Za funkcjonalność menu 2007 twórców tego pomysłu powinno się rozstrzelać ... ale co ja mogę :) ) konwersja na 2007 nie powinna wpłynąć na działanie makra.
    Poprawiłem trochę kod (m. in. błędne przerzucanie między miesiącami [o czym nie wspomniałeś]) i dodałem parę zabezpieczeń. Wprowadziłem też przycisk czyść dane (arkusz słownik). Dodałem też dodatkowy opis gdzie można wpisać np "za miesiąc 10" lub cokolwiek innego - można też nic nie pisać. :)

    Jeżeli wprowadziłeś jeszcze jakieś poprawki nanieś je do tego arkusza a nie odwrotnie - obawiam się gryzienia poprzednich wersji. (Wiem że nie powinno ale... maszyny czasami są złośliwe).

    Wiem że już masz trochę danych ale możesz je najnormalniej skopiować i wkleić poprzez prawoklik - wklej specjalnie - wartości do tego skoroszytu w dany arkusz (dane, nie formuły). Oczywiście wcześniej odkrywając kolumny. Kolejne wpisanie danych w danym arkuszu ukryje niepotrzebne kolumny. W arkuszu dane też przerzuć dane z dużej tabeli na zasadzie wklej specjalnie - wartości. To samo nazwiska itd.

    No i naważniejsze: testuj i monituj o błędach jeżeli wystąpią (to niestety tylko człowiek pisał).
  • #50
    Facetjanusz
    Level 15  
    Posyłam kompletne (no prawie) pliki z ich właściwym zastosowaniem (jak zobaczysz włożyłem trochę pracy). Jak będziesz miał czas to się z tym możesz pobawić. Mam trochę uwag do Twojej propozycji z punktu widzenia zastosowania .
    a Rezygnuję z dodatkowej kolumny F , a w związku z tym wracamy do starej
    Formatki , (dodatkowy opis będzie bezpośrednio w tabelce).
    b Kolumna Funduszu remontowego wpisuje "0" ,lepiej wygląda (jak pozostałe
    kolumny) gdy będą puste cele.
    c Podobnie w DANE kolumny AC do AN wpisywane są "0" powinny być puste cele "".
    d Podczas "Czyszczenia" wywala błąd (to chyba coś ja poknociłem jak próbowałem
    zamienić w kolumnach "0" na " ").
  • #51
    Facetjanusz
    Level 15  
    Ps. Błąd z Makro już się nie pojawia - jedynie co jakiś czas wywala Excela (ustawiłem zapis co 1 minutę - jednak przy księgowaniu traci się parę linijek.)
    Gdy używałem przez 2 lata moich programów ( bez Makra nigdy mi Excel się nie rozkraczał.
    Pozdr :D
  • #52
    marek003
    Level 40  
    Usunąłem kolumnę F . To co się wpisze w dodatkowe okienko pojawi się w tej samej kolumnie co główny wpis (E) za "wpisem głównym"

    Wprowadziłem w funduszu remontowym i danych że jeżeli (iif) wartość 0 to ""

    Co do czyszczenia usunąłeś jeden arkusz dlatego makro "zgłupiało". Zmieniłem kod i uzależniłem "czyszczenie" od nazwy arkusza a nie od jego numeru.

    Wprowadziłem twoje funkcje w arkusze miesięczne (myśle że się nie pomyliłem ale sprawdź)

    Wprowadziłem dane za styczeń i luty i dane w arkuszu DANE, uaktualniłem słownik.

    Nie wpływałem na skoroszyt kartoteka. On czerpie dane z ewidencji więc nie ingerowałem w ten skoroszyt. (zmień nazwę "mojego" pliku na ewidencja, wcześniej swojemu zmień nazwę i otwórz skoroszyt ewidencja i kartoteka (najlepiej jak będą w jednym katalogu).

    Co do błędów nie mam pojęcia co się u ciebie dzieje u mnie wszystko jest w porządku. Może jak nakłada się autozapis z wykonywanym makrem, ale nie powinno. A może jest jakiś utrudniony dostęp do dysku dla autozapisu. Czy jesteś zalogowany jako administrator?
    Może zamiast skracać wydłuż np do 5 minut autozapis.


    dodane po chwili
    ------------------------------------
    Daj fotę jeszcze raz błędu może coś nie tak z pamięcią kompa (tak samo jest na innych kompach) jeżeli są dwie kości wyjmij jedną i sprawdź a potem wstaw drugą i sprawdź - w różnych slotach) jeszcze możesz przeczyścić styki pamięci gumką myszką - czasami styki śniedzieją i przydaje im się czyszczenie. Dużo masz wolnego miejsca na dysku? Wyczyść temp'y na dysku?
  • #53
    Facetjanusz
    Level 15  
    Dzięki za tyle poświęconego czasu.
    Teraz dopiero wszedłem - ( jak żona szykuje się do spania - bo taka niestety dyscyplina że w święto wara od kompa)
    Jutro to przeanalizuję. Jeszcze tylko sprawdzę kto ze znajomych jest na SKYPE.., i podążę w ślady żony..
  • #54
    Facetjanusz
    Level 15  
    Wskazówki które mi podałeś oczywiście wprowadziłem - wszystko działa zgodnie z założeniami. Wprowadziłem trochę kosmetyki do programu . Błąd dopiero wyskoczył dzisiaj i to podobnie jak poprzednio w czasie dokonywania standartowego zapisu pliku (po zmianach). ,
    Miałbym jeszcze prośbę , mianowicie powiedz jak przestawić kursor, aby w momencie ukazania się formatki wyboru (wprowadzania danych) , znajdował się nie na "wybór miesiąca" - a na "wpisie numeru dokumentu" (tak jak było wcześniej)?
  • #55
    marek003
    Level 40  
    Co do kursora w okienku to w "sekcji" UserForm_Initialize() na końcu (przed End Sub) umieść "focusa"

    Private Sub UserForm_Initialize()

    ...
    ...
    ...


    TextBox1.SetFocus

    End Sub


    Jak możesz to zdejmij "opłatę" za załącznik w poprzednim poście - to dla ciebie pomoc nie odwrotnie. (skasuj załącznik i dodaj jeszcze raz z opcją wyłączenia punktów).
  • #56
    Facetjanusz
    Level 15  
    Sorry - zdejmowałem punkty - ale nie tak jak należy.

    Dodano po 1 [godziny] 7 [minuty]:

    Dzięki - umieściłem "focusa" jak proponowałeś , działa OK.
    Chciałem "chronić arkusz" DANE (cały oprócz kolumn D i L ), aby przez pomyłkę nie wprowadzić kwoty w inne kolumny - ale !? wówczas Dane nie przenoszą się do arkusza miesięcy !
    Było by wskazane aby zablokować od możliwości przypadkowego wpisu w inne kolumny.
    Pozdro
  • #57
    marek003
    Level 40  
    U mnie przy użytkowaniu twojego pliku i ciągłych zapisach nie ma takiego problemu.
    Czy błędy przy zapisie występują też na innych komputerach (masz więcej komputerów aby to sprawdzić)
    Stawiam bardziej na komputer (najszybciej pamięć ale może być i dysk). Sprawdź pamięć np memtest86
    i sprawdź dysk HD Tune

    dodane
    ...............................
    Jeżeli chcesz chronić arkusz DANE trzeba by było to uwzględnić w makrze. (hasło też ma być?)

    W wersji bez hasła:
    Znajdź poniższą pętle FOR pod przyciskiem Ok i przed ną wpisz kod wyłączający ochronę Worksheets("DANE").Unprotect a za pętlą wpisz kod włączający ochronę Worksheets("DANE").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    .
      
    ......
    ......
    Worksheets("DANE").Unprotect
        
        For i = 1 To 12
            
            wartosc1 = Worksheets("DANE").Cells(i + 2, 29 + Numer).Value + Worksheets("DANE").Cells(i + 2, 4).Value
            wartosc2 = Worksheets("DANE").Cells(i + 14, 29 + Numer).Value + Worksheets("DANE").Cells(i + 2, 12).Value
            
            Worksheets("DANE").Cells(i + 2, 29 + Numer).Value = IIf(wartosc1 = 0, "", wartosc1)
            Worksheets("DANE").Cells(i + 14, 29 + Numer).Value = IIf(wartosc2 = 0, "", wartosc2)
    
            If Worksheets("DANE").Cells(i + 2, 4).Value <> 0 Then Worksheets("DANE").Cells(i + 2, 41 + Numer).Value = IIf(Worksheets("DANE").Cells(i + 2, 41 + Numer).Value <> "", Worksheets("DANE").Cells(i + 2, 41 + Numer).Value & ", " & Left(.TextBox2.Value, 2), Left(.TextBox2.Value, 2))
            If Worksheets("DANE").Cells(i + 2, 12).Value <> 0 Then Worksheets("DANE").Cells(i + 14, 41 + Numer).Value = IIf(Worksheets("DANE").Cells(i + 14, 41 + Numer).Value <> "", Worksheets("DANE").Cells(i + 14, 41 + Numer).Value & ", " & Left(.TextBox2.Value, 2), Left(.TextBox2.Value, 2))
        Next i
        
      Worksheets("DANE").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    
    ......
    ..........
    
  • #58
    Facetjanusz
    Level 15  
    Ok juto pomęczę zapisami drugi komputer , sprawdzę także pamięci.
    Oczywiście dopiszę także procedurę do ochrony.
    Naturalnie bez hasła, aby przy wpisie wpłat przez nie uwagę (co mi się przytrafiało przy próbach) wpisać w miejsce nazwiska.
    Dzięki za dotąd i proszę o jeszcze.
    Janusz

    Dodano po 6 [minuty]:

    Pytanie na marginesie:
    Ja w swoim profilu podawałem swoje loginy do komunikatorów - a jak można zobaczyć loginy innych ?

    Dodano po 22 [minuty]:

    Po wpisaniu w tą pętlę kodu - faktycznie chroni arkusz - ale tylko podczas otworzenia arkusza DANE, i próbę wpisu w niepowołane rubryki. Natomiast w czasie działania programu i wpisywania kwoty - da się wpisać w każdą kolumnę...
  • #59
    marek003
    Level 40  
    Facetjanusz wrote:

    Po wpisaniu w tą pętlę kodu - faktycznie chroni arkusz - ale tylko podczas otworzenia arkusza DANE, i próbę wpisu w niepowołane rubryki. Natomiast w czasie działania programu i wpisywania kwoty - da się wpisać w każdą kolumnę...


    To jest niemożliwe żeby nie chroniło. Chyba że nie w tym miejscu wpisałeś procedury.
    To ma być w procedurze przycisku Ok [Private Sub CommandButton1_Click()]
    Mam tez nadzieje że wpisałeś jeden (odpowiedni) kod nad a drugi pod pętlą a nie w pętle. Poniżej fragment:

    If .ComboBox1.ListIndex = 0 Then
    
    Worksheets("DANE").Unprotect 
    
        For i = 1 To 12
            
            wartosc1 = Worksheets("DANE").Cells(i + 2, 29 + Numer).Value + Worksheets("DANE").Cells(i + 2, 4).Value
            wartosc2 = Worksheets("DANE").Cells(i + 14, 29 + Numer).Value + Worksheets("DANE").Cells(i + 2, 12).Value
            
            Worksheets("DANE").Cells(i + 2, 29 + Numer).Value = IIf(wartosc1 = 0, "", wartosc1)
            Worksheets("DANE").Cells(i + 14, 29 + Numer).Value = IIf(wartosc2 = 0, "", wartosc2)
    
            If Worksheets("DANE").Cells(i + 2, 4).Value <> 0 Then Worksheets("DANE").Cells(i + 2, 41 + Numer).Value = IIf(Worksheets("DANE").Cells(i + 2, 41 + Numer).Value <> "", Worksheets("DANE").Cells(i + 2, 41 + Numer).Value & ", " & Left(.TextBox2.Value, 2), Left(.TextBox2.Value, 2))
            If Worksheets("DANE").Cells(i + 2, 12).Value <> 0 Then Worksheets("DANE").Cells(i + 14, 41 + Numer).Value = IIf(Worksheets("DANE").Cells(i + 14, 41 + Numer).Value <> "", Worksheets("DANE").Cells(i + 14, 41 + Numer).Value & ", " & Left(.TextBox2.Value, 2), Left(.TextBox2.Value, 2))
        Next i
    
    Worksheets("DANE").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 
    
    
    End If


    Tu nie ma co nie działać. Odblokowanie arkusza następuje jedynie w chwili wciśnięcia OK i to pod warunkiem że było wybrane "Wpłata czynszów". W dodatku odblokowanie jest tylko na chwilę w której następuje przeniesienie danych do tabel miesięcznych i po tym procesie znów jest włączana ochrona. Oczywiście na samym początku (przed oddaniem skoroszytu do użytku) arkusz powinien być ochroniony z ręki później już samo makro będzie tym zarządzać odblokowywać i blokować.

    Swoją droga zauważyłem w ostatnim twoim pliku że oprócz kolumny D i L wyłączyłeś z ochrony również kolumny F i N. Może to jest przyczyną.

    Podczas ręcznego włączenia ochrony odznacz "zaznaczanie zablokowanych komórek" i włącz ochronę.
    Makro w excelu. Dlaczego suma nie zostaje obliczona?
    "Przechodząc" klawiszem Tab sprawdzisz które komórki są wyłączone z pod ochrony.

    Docelowo tak może zostać (z wyłączona opcją) wtedy nie będzie się pojawiał komunikat że nie można wpisać w komórke bo jest zablokowana, a będzie można jedynie klikać w komórki odblokowane.

    Jeżeli dalej nie będziesz miał ochrony to znów prześlij swój plik.
  • #60
    Facetjanusz
    Level 15  
    Dzięki!
    Zrobię jak opisałeś.

    Dodano po 1 [godziny] 12 [minuty]:

    Myślę, że wszystko zrobiłem OK - ale powstaje pewien mały problem - żąda odblokowania arkusza.
    Jeśli możesz to sprawdź.
    HASŁO "123"