Εμφάνιση ενός μόνο μηνύματος
  #2  
Παλιά 17-10-19, 12:16
christ Ο χρήστης christ δεν είναι συνδεδεμένος
Όνομα: Χρήστος
Έκδοση λογισμικού Office: Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 01-06-2017
Μηνύματα: 83
Προεπιλογή

Αν κατάλαβα καλά αυτό ψάχνεις

ΔΗΜΙΟΥΡΓΙΑ ΜΕΤΡΗΤΗ ΓΙΑ ΠΑΡΑΣΤΑΤΙΚΑ

Η παρακάτω μακροεντολή είναι μια απλή αλλά ασφαλής λύση για την δημιουργία ενός μετρητή σε ένα έγγραφο (παραστατικό, τιμολόγιο, δελτίο αποστολής, απόδειξη κλπ) στο οποίο θέλετε να υπάρχει συνεχής αρίθμηση. Η διαδικασία καλείται μετά από ένα άλλο συμβάν, παράδειγμα μετά την εκτύπωση του παραστατικού ή μετά την διαγραφή του η μετά από το συμβάν open κλπ. Φυσικά μπορείτε να καλέσετε την ρουτίνα και χειριστικά από ένα πλήκτρο.
Η μάκρο αποθηκεύει τον αύξοντα αριθμό του εγγράφου σε ένα «καθορισμένο όνομα» και επιστρέφει την τιμή αυξημένη κατά 1. Αν ο αριθμός στο κελί σβηστεί δεν δημιουργείται πρόβλημα διότι έχει αποθηκευτεί η τιμή του κελιού στο όνομα. Αν διαγραφτεί το όνομα πάλι δεν δημιουργείται πρόβλημα διότι η μάκρο δημιουργεί το όνομα σε κάθε κάλεσμά της και συνεχίζει με τον επόμενο αριθμό του κελιού. Πρόβλημα θα έχετε αν σβηστούν ταυτόχρονα το κελί και το όνομα. Αν φοβάστε και αυτή την περίπτωση τότε αλλάξτε στην τελευταία γραμμή του κώδικα την ιδιότητα Visible του ονόματος, από True σε False και το όνομα θα γίνει …αόρατο . Η μάκρο εισάγει τον αύξοντα αριθμό στο κελί Α1 του φύλλου “test”. Προσαρμόστε την διεύθυνση του κελιού και το όνομα του φύλλου στο δικό σας βιβλίο.

Sub meter()
Dim keli As Range
Dim helpmeter As Long
Dim mymeter As Long
Set keli = ActiveWorkbook.Sheets("test").Range("a1")
On Error Resume Next
helpmeter = Evaluate(ActiveWorkbook.Names("helpname").RefersTo )
mymeter = Application.WorksheetFunction.Max(keli, helpmeter)
mymeter = mymeter + 1
keli = mymeter
ActiveWorkbook.Names.Add Name:="helpname", RefersTo:=mymeter, Visible:=True
End Sub
Απάντηση με παράθεση