place1

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