Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Μορφοποίηση] Αριθμός πρωτοκόλλου - για δυνατούς λύτες (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/2992-arithmos-protokolloy-gia-dynatois-lites.html)

tilestora 10-02-14 12:35

Αριθμός πρωτοκόλλου - για δυνατούς λύτες
 
Καλησπέρα.
Θέλω μια στήλη στο Excel να έχει αριθμό και έτος, όπως ο αριθμός πρωτοκόλλου. Π.χ. 1247/2014.
Το 2014 είναι το τρέχον έτος, θέλω να μένει στα κελιά και να μην αλλάζει σε ήδη υπάρχουσες εγγραφές αν αλλάξει η ημερημηνία. Μόλις αλλάξει το έτος να αλλάζει στο νέο κελί (π.χ. 1248/2015).
Επίσης αν γίνεται να αυξάνει με τον γνωστό τρόπο, (δλδ επιλέγοντας 2 κελιά με διαφορά +1 και τραβώντας προς τα κάτω).

Spirosgr 10-02-14 20:33

1 Συνημμένο(α)
Καλησπέρα
Παναγιώτη καλώς όρισες στην παρέα μας
Με τύπους DATE, TODAY,...κλπ και ότιδήποτε περιέχει υπολογισμό ημερομηνίας
δεν υπάρχει καμία λύση με το σκεπτικό ότι πρέπει να διατηρούνται οι παλιές εγγραφές
Προτείνω χρήση VBA όπου σε κάθε εγγραφή ονόματος σε συγκεκριμένη στήλη
εισάγεται στο διπλανό κελί ένας αριθμός πρωτοκόλλου μορφής [αριθμός + 1]/[έτος]
(*βλέπε Εικόνα)
Ο παρακάτω κώδικας στο φύλλο
Κώδικας:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Αλλάξτε το Range("B:B") με την περιοχή που θέλετε
    If Intersect(Target, Range("B:B")) Is Nothing Then
        Exit Sub
    Else
        'Έλεγχος
        If Target.Row = Range("Header").Row Then Exit Sub
        If Target.Column > Range("Header").Column Then Exit Sub
        If Target.Cells.Count > 1 Then Exit Sub
        If Target(1, 0).Value <> vbNullString Then Exit Sub
        If Target(1, 1).Value <> vbNullString Then Exit Sub
        'Εκτέλεση
        Target(1, 0).Value = Range("StartNum").Value + 1 & "/" & Range("Cur_Year").Value
      'Εναλλακτικά σε αυτήν την θέση χωρίς να χρειάζεται η ονομασία Cur_Year και ο τύπος =YEAR(TODAY())
      'Target(1, 0).Value = Range("StartNum").Value + 1 & "/" & Year(Date)
        Range("StartNum").Value = Range("StartNum").Value + 1
    End If
End Sub


tilestora 11-02-14 09:58

Καλημέρα.
Ευχαριστώ για την άμεση απάντηση. Το περίμενα ότι με DATE και TODAY δεν θα γινόταν. Σχετικά με τον κώδικα, μου βγάζει:
Runtime error '1004'
Method 'Range' of object '_Worksheet' failed. Μήπως δεν κάνω κάτι καλά;

Thanosp 11-02-14 10:50

1 Συνημμένο(α)
Καλημέρα
Κοίταξε με επικύρωση στην στήλη Α:Α
Θανάσης

Spirosgr 11-02-14 11:14

Καλημέρα
Έχουν ονομαστεί όλα τα κελιά που χρειάζεται ο κώδικας;
Ξαναδές την φωτογραφία


Η ώρα είναι 22:28.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2