W dawnych (komputerowych) czasach, czyli w latach 90-tych XX wieku, kiedy wypłaty w zakładach pracy liczyło się na maszynkach na korbkę lub w najlepszym wypadku na prymitywnych kalkulatorach, napisałem program PŁACE, który tygodniową pracę dwóch pań księgowych, zamieniał na 20 minutowy „spacerek” z arkuszem kalkulacyjnym. Program przez wiele lat liczył wypłaty wszystkim nauczycielom w naszej gminie, a obecnie znajduje się na zasłużonej emeryturze. Jego funkcje przejęły bardziej złożone, wyspecjalizowane i drogie systemy. Kiedyś wystarczyło niewiele ponad 2500 wierszy kodu, parę setek formuł w komórkach, byle jaki komputer. Dzisiaj systemy kosztują tysiące złotych, a firmy co jakiś czas ściągają haracz za tzw. aktualizacje.
mgr inż. Wacław Libront
Którzy nauczyciele pamiętają jeszcze te pierwsze paski wypłat, a panie księgowe ułatwienia, jakimi były: automatyczne naliczanie na podstawie poprzedniego miesiąca, archiwizację, listy wypłat, karty wynagrodzeń, wydruk przelewów, czy inne gotowe zestawienia, dla których musiały poświęcać długie i żmudne godziny, nierzadko pracy po godzinach i w domu.
Kto dzisiaj myśli o tym, że kiedyś komputer przejął najbardziej niewdzięczną rolę: sprawdzania, czy nie popełniło się błędu. Kada pomyłka kosztowała powtórnym wklepywaniem słupków liczb od nowa. Dzięki arkuszowi można było poprawić błąd i wszystko automatycznie liczyło się samo. Komputer nie popełniał błędów, choć w pierwszych miesiącach program nie był darzony zbytnim zaufaniem i maszynki do liczenia nie zostały całkowicie odłożone do kąta. Mnie najbardziej zdumiewał fakt, że w tych czasach księgowość zaokrąglała wszystko do pełnych złotówek, żeby sobie choć trochę ułatwić obliczanie i wszystko się zgadzało, co do grosza! Komputer, który liczył bez pomyłek i z dużo większą dokładnością był sprawdzany i zawsze jakieś wątpliwości się znalazły: „nie zgadzały się grosze” :-)
mgr inż. Wacław Libront
Poniżej fragment kodu źródłowego, a w załączniku całość.
Sub WstawDoArchiwum() On Error GoTo błąd DialogSheets("DArchiw").CheckBoxes("SprawdźListę").Value = xlOn DialogSheets("DArchiw").CheckBoxes("KopiaZapasowa").Value = xlOn DialogSheets("DArchiw").CheckBoxes("WstawZDołu").Value = xlOff miesiąc = Month(Date) + 13 m = miesiąc 'gdy zmienimy to jeszcze jedno pytanie DialogSheets("DArchiw").DropDowns("ListaMiesięcy").ListIndex = miesiąc If DialogSheets("DArchiw").Show Then miesiąc = DialogSheets("DArchiw").DropDowns("ListaMiesięcy").ListIndex 'przyciski sprawdzania przed archiwizacją spra = DialogSheets("DArchiw").CheckBoxes("SprawdźListę").Value If spra = 1 Then Sprawdź End If 'przycisk kopiowania przed archiwizacją kopia = DialogSheets("DArchiw").CheckBoxes("KopiaZapasowa").Value If kopia = 1 Then PakujArchiwum End If napis = "Zapisanie danych do ARCHIWUM. Dane zapisywane są według NUMERÓW zatrudnionych osób. Czy jesteś pewien?" wynik = MsgBox(napis, vbYesNo + vbCritical + vbDefaultButton2, "DO ARCHIWUM") If wynik = vbYes Then If m <> miesiąc Then 'gdy inny miesiąc wybrano niż ustawiony standardowo napis = "Wybrałeś inny miesiąc. Czy na pewno zapisać dane w inne miejsce archiwum?" wynik = MsgBox(napis, vbYesNo + vbCritical + vbDefaultButton2, "DO ARCHIWUM") End If If wynik = vbYes Then zdołu = DialogSheets("DArchiw").CheckBoxes("WstawZDołu").Value 'gdy 1 to zapis na poprzedni miesiąc nadliczbówek i Inne2 'zastępujemy czy dodajemy w archiwum opc = DialogSheets("DArchiw").OptionButtons("Opcja1").Value 'zastępowanie If opc <> 1 Then opc = 0 'Opcja2 = DialogSheets("DArchiw").OptionButtons("Opcja2").Value 'dodawanie nazwa = ActiveSheet.Name If nazwa <> "Płace" Then 'gdy szkoły pojedynczo w = 11 Do Worksheets(nazwa).Cells(w, 2).Select numer = Worksheets(nazwa).Cells(w, 1) a1 = 10 + 30 * (numer - 1) + miesiąc 'na wszelki wypadek gdyby było coś źle wpisane za numer If (numer > 0) And (numer < 501) Then TabelaArchiwum nazwa, w, a1, zdołu, opc 'i trzynastka jeśli jest a13 = Worksheets(nazwa).Cells(w, 32) If a13 <> 0 Then numer = Worksheets(nazwa).Cells(w, 1) If miesiąc < 14 Then Worksheets("archiwum").Cells(10 + 30 * (numer - 1) + 13, 3) = a13 'poprzedni rok WstawParam (10 + 30 * (numer - 1) + 13) Else Worksheets("archiwum").Cells(10 + 30 * (numer - 1) + 26, 3) = a13 'aktualny rok WstawParam (10 + 30 * (numer - 1) + 26) End If Worksheets(nazwa).Cells(w, 32) = 0 'wyzerować trzynastkę w tabeli End If End If w = w + 1 Loop Until Worksheets(nazwa).Cells(w, 1) = "" 'przelatujemy po wszystkich numerach tabeli Else For sz = 2 To 40 'dla wszystkich szkół nazwa = Worksheets("obsługa").Cells(sz, 1) If nazwa <> "" Then Worksheets(nazwa).Select w = 11 Do Worksheets(nazwa).Cells(w, 2).Select numer = Worksheets(nazwa).Cells(w, 1) a1 = 10 + 30 * (numer - 1) + miesiąc If (numer > 0) And (numer < 501) Then TabelaArchiwum nazwa, w, a1, zdołu, opc 'i trzynastka jeśli jest a13 = Worksheets(nazwa).Cells(w, 32) If a13 <> 0 Then numer = Worksheets(nazwa).Cells(w, 1) If miesiąc < 14 Then Worksheets("archiwum").Cells(10 + 30 * (numer - 1) + 13, 3) = a13 'poprzedni rok WstawParam (10 + 30 * (numer - 1) + 13) Else Worksheets("archiwum").Cells(10 + 30 * (numer - 1) + 26, 3) = a13 'aktualny rok WstawParam (10 + 30 * (numer - 1) + 26) End If Worksheets(nazwa).Cells(w, 32) = 0 'wyzerować trzynastkę w tabeli End If End If w = w + 1 Loop Until Worksheets(nazwa).Cells(w, 1) = "" 'przelatujemy po wszystkich numerach tabeli Range("C11").Select End If Next sz Worksheets("płace").Select MsgBox "archiwizacja skończona" End If 'razem czy osobno End If 'jeszcze raz potwierdził Else MsgBox "Zrezygnowałeś z archiwizowania danych - NIE ZAPOMNIJ jednak tego zrobić !!!" End If End If Range("C11").Select Exit Sub błąd: MsgBox "Pojawił się błąd podczas archiwizowania danych" End Sub