Simpel lagerstyring og fakturering

Dette lille lagerstyrings- og fakturasystem er baseret på tre simple ark, en kommandoknap og en enkelt makro.

De tre ark, Ark1, Ark2 og Ark3 kan naturligvis navngives, så indholdet er mere klart. Ark1 indeholde en lageroversigt. Denne består af fire kolonner, Varenummer, Varenavn, Antal på lager og Stykpris. Ark2, kunne kaldes bestillingsarket. Det indeholder en indtastningscelle, og to celler med opslagsformler (LOPSLAG) samt en kommandoknap. Det sidste ark er fakturaarket. Det skal indeholde de elementer, der er nødvendige for at kunne lave en faktura. Det vil sige et område med dato, firmanavn osv. Desuden et område, hvor samlet beløb, moms osv. kan beregnes. Endelig et område, hvor de enkelte fakturalinjer skal skrives. I dette område er hver række forsynet med en indtastningscelle (i A-kolonnen) og to opslagskolonner (LOPSLAG) til varenummer og stykpris. Opslagsformlen kunne ligne denne:

=HVIS(ER.FEJL(LOPSLAG(A6;lager;2;FALSK));"";LOPSLAG(A6;Lager;2;FALSK))

hvor 'Lager' er et navngivet område i Ark1, som rummer alle lagerlistens rækker og kolonner. Opslagsformlerne i Ark2 laves efter præcis samme model. Det som får styringen til at spille, er kommandoknappen i Ark2. Når man har fundet den rigtige vare og kontrolleret lagerbeholdningen, klikker man på knappen. Det nedskriver lagerbeholdningen i Ark1 med 1, og overfører varenummeret til den første ledige række i ark3, kolonne A. Varenummeret, der er indtastet i Ark2 slettes og der er klar til at indtaste en ny vare. Koden på kommandoknppen ser ud som følger:

Private Sub CommandButton1_Click()

    Dim vare As Integer
    Application.ScreenUpdating = False
    vare = ActiveSheet.Range("a2").Value
    For Each c In Sheets(1).Range("A2:A100").Cells
        If c.Value = vare Then
            If c.Offset(0, 2).Value = 0 Then
                MsgBox "Du kan ikke sælge denne vare, når lagerbeholdningen er 0", vbOKOnly + vbExclamation
                Exit Sub
            End If
            c.Offset(0, 2).Value = c.Offset(0, 2).Value - 1
            Sheets(3).Activate
            Sheets(3).Range("A100").End(xlUp).Offset(1, 0).Value = vare
            Sheets(2).Activate
        End If
    Next
    Sheets(2).Range("a2").ClearContents
    Application.ScreenUpdating = True

End Sub

Koden kontroller, om der er varer på lager. Hvis ikke, kan man ikke bestille den pågældende vare. Ellers nedskrives varebeholdningen og varelinjen overføres til Ark3 samtidigt med at Ark2 gøres klar til ny indtastning.

Funktionen kan naturligvis gøres langt mere avanceret, så der kan bestilles flere styk ad hver vare ved hvert klik, så fakturaen automatisk udskrives og tømmes, så der advares om lav varebeholdning inden bestilling osv. Måske vil jeg en dag lave et færdigt eksempel, hvor disse funktioner er implementeret, men her lader jeg det være ved ovenstående beskrivelse og ingen eksempel.

- Tilbage til makroer -
- Tilbage til Excel -