Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Αντιγραφή φύλλου (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/4309-antigrafi-filloy.html)

n.spiros 13-10-16 15:00

Αντιγραφή φύλλου
 
Καλησπέρα
Είμαι περίπου ένα χρόνο στο forum και έχω μάθει αρκετά νέα πράγματα. Ήρθε η ώρα να ζητήσω και εγώ τη βοήθειά σας σχετικά με κάτι που δεν μπορώ να φτιάξω. Κάνοντας καταγραφή μακροεντολής και μερικές τροποποιήσεις έφτιαξα την παρακάτω μακροεντολή η οποία αντιγράφει ένα φύλλο και το μετονομάζει .
Sub ΑΝΤΙΓΡΑΦΗ()
Range("B5").Select
Sheets("ΦΕ").Select
Sheets("ΦΕ").Copy AFTER:=Sheets(7)
Sheets("ΦΕ (2)").Select
Sheets("ΦΕ (2)").Name = ActiveCell
Range("A1").Select
End Sub
Το νέο όνομα είναι αυτό που περιέχει το κελί «B5». Στο αρχείο όμως μπορεί να υπάρχει φύλλο με το νέο όνομα. Αυτό που θέλω είναι πριν την αντιγραφή να ελέγχει εάν υπάρχει και να μου εμφανίζει ένα msgBox με μήνυμα ότι πρέπει πρώτα να διαγραφεί το υπάρχον φύλλο με το όνομα αυτό. Τέλος εάν είναι δυνατό το νέο φύλλο να είναι πάντα τελευταίο και όχι μετά το φύλλο 7. Χρησιμοποιώ το office 2016
Ευχαριστώ

ChrisGT7 13-10-16 21:14

Δοκίμασε τον παρακάτω κώδικα να δεις αν σε βολεύει:

Κώδικας:

Option Explicit
Dim Sht As Worksheet

Sub MetonomasiaFylloy()
    On Error GoTo SheetName
   
    For Each Sht In ActiveWorkbook.Worksheets
        If Sht.Name = Sheets("ΦΕ").Range("B5").Value Then
            MsgBox "Το όνομα υπάρχει ήδη!", vbCritical, "Ονομασία φύλλου εργασίας"
            Sheets("ΦΕ").Activate
            Range("B5").Select
            Exit Sub
        End If
    Next
    Sheets("ΦΕ").Copy AFTER:=Sheets(Worksheets.Count)
    Sheets(Worksheets.Count).Name = Sheets("ΦΕ").Range("B5").Value
    Sheets(Worksheets.Count).Select
   
SheetName:
    MsgBox "Το όνομα περιέχει μη έγκυρους χαρακτήρες!", vbCritical, "Ονομασία φύλλου εργασίας"
    Application.DisplayAlerts = False
    Sheets(Worksheets.Count).Delete
    Application.DisplayAlerts = True
End Sub


n.spiros 14-10-16 15:57

Χρήστο σ΄ ευχαριστώ πολύ για την άμεση απάντηση.
Τρέχοντας όμως την εντολή, όταν δεν υπάρχει φύλλο με το όνομα αυτό, το αντιγράφει και βγάζει το μύνημα "Το όνομα περιέχει μη έγκυρους χαρακτήρες!". Πατόντας τη μοναδική επιλογή που μου δίνει "ΟΚ" διαγράφει το φύλλο . Έσβησα τις παρακάτω γραμμές του κώδικα και κάνει αυτό που θέλω.
MsgBox "Το όνομα περιέχει μη έγκυρους χαρακτήρες!", vbCritical, "Ονομασία φύλλου εργασίας"
Application.DisplayAlerts = False
Sheets(Worksheets.Count).Delete
Application.DisplayAlerts = True

ChrisGT7 14-10-16 16:04

Πρόσθεσε ένα Exit Sub ακριβώς πριν το "SheetName:".

Τις γραμμές που έσβησες τις χρειάζεσαι σε περίπτωση που δώσεις κάποιον χαρακτήρα που δεν επιτρέπεται για ονομασία φύλλων, π.χ. / ή \.

n.spiros 17-10-16 12:36

Το έκανα και δουλεύει σωστά. Πολύ καλό αυτό με τους χαρακτήρες που δεν επιτρέπονται.
Σε ευχαριστώ πολύ.


Η ώρα είναι 19:23.

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


Content Relevant URLs by vBSEO 3.3.2