Εμφάνιση ενός μόνο μηνύματος
  #5  
Παλιά 05-01-17, 15:25
Το avatar του χρήστη ChrisGT7
ChrisGT7 Ο χρήστης ChrisGT7 είναι συνδεδεμένος
Διαχειριστής
Όνομα: Χρήστος Ζώρζος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 20-09-2013
Περιοχή: Κοντά σε ηφαίστειο...
Μηνύματα: 1.046
Προεπιλογή

Χαίρομαι που το αρχείο θα σου φανεί χρήσιμο στη δουλειά σου! :)

Ο σχεδιασμός του πίνακα, όχι η μορφοποίηση των κελιών, βασίζεται πάνω σε προγραμματισμό χρησιμοποιώντας τη γλώσσα VBA (Visual Basic for Applications). Αν θέλεις να ασχοληθείς με VBA θα πρέπει να έχεις και κάποιες βασικές γνώσεις προγραμματισμού (σύνταξη εντολών, χρήση μεταβλητών κ.τ.λ).

Μια καλή αρχή πάντως για να δεις πώς λειτουργεί η όλη λογική των μακροεντολών με VBA είναι η "μαγνητοσκόπηση" κάποιων συγκεκριμένων καθημερινών κινήσεων με το κουμπί τέρμα κάτω αριστερά στο παράθυρο του Excel με το κόκκινο κυκλάκι.

Ο κώδικας που ευθύνεται για τη συμπλήρωση του ισοζυγίου είναι ο παρακάτω:

Κώδικας:
Option Explicit

Sub Isozygio_Pelatwn()
    Dim I As Long, R As Long
    Dim Isoz As Worksheet, Sht As Worksheet
    
    If MsgBox("Θα γίνει ενημέρωση από τα αντίστοιχα φύλλα  πελατών." & vbCrLf & _
        "Θέλετε να συνεχίσετε;", vbQuestion + vbYesNo, "ΕΝΗΜΕΡΩΣΗ ΥΠΟΛΟΙΠΩΝ") = vbNo Then Exit Sub
    
    Set Isoz = Worksheets("ΙΣΟΖΥΓΙΟ ΠΕΛΑΤΩΝ")
    Isoz.Range("A2:D" & Rows.Count).ClearContents
    
    For Each Sht In ThisWorkbook.Worksheets
        With Isoz
            If Sht.Name <> .Name Then
                R = .Range("A" & Rows.Count).End(xlUp).Row + 1
                .Hyperlinks.Add Anchor:=.Range("A" & R), Address:="", SubAddress:= _
                    Sht.Name & "!D7", TextToDisplay:=Sht.Name
                '.Range("A" & R).Value = Sht.Range("D7").Value
                .Range("B" & R).Value = Application.WorksheetFunction.Sum(Sht.Range("E:E"))
                .Range("C" & R).Value = Application.WorksheetFunction.Sum(Sht.Range("F:F"))
                .Range("D" & R).Value = Sht.Range("G4").Value
            End If
        End With
    Next
End Sub
Για να βρεις τον παραπάνω κώδικα, πάτα Alt+F11. Μια γρήγορη επεξήγησή του είναι η παρακάτω:

- Αφού σε ρωτήσει αν θέλεις να συνεχίσεις και απαντήσεις καταφατικά, τότε ελέγχει ένα-ένα το όνομα κάθε φύλλου ξεχωριστά. Αν είναι διαφορετικό από το "ΙΣΟΖΥΓΙΟ ΠΕΛΑΤΩΝ", τότε θεωρεί ότι είναι καρτέλα πελάτη (γι' αυτό θέλει προσοχή όλα τα νέα φύλλα-καρτέλες που θα ανοίγεις να έχουν την ίδια ακριβώς γραμμογράφηση με τα υπόλοιπα).
- Από την κάθε καρτέλα πελάτη λοιπόν, παίρνει το όνομα που βρίσκεται στο κελί D7 και το αντιγράφει στο πρώτο κενό κελί του ισοζυγίου στη στήλη A. Η ίδια ακριβώς λογική ακολουθείται για τη χρέωση, πίστωση και υπόλοιπο (στήλες B, C, D αντίστοιχα), όπου στη χρέωση και πίστωση μεταφέρει τα αντίστοιχα αθροίσματα από τις στήλες E και F των καρτελών, ενώ στο υπόλοιπο μεταφέρει το ποσό που βρίσκει στο κελί G4.

Ελπίζω να μην σε μπέρδεψα...
__________________
Your Curiosity Will Be The Death Of You!

Τελευταία επεξεργασία από το χρήστη ChrisGT7 : 05-01-17 στις 15:42.
Απάντηση με παράθεση