Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [VBA] Αντιγραφή & Επικόληση

Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #11  
Παλιά 29-11-10, 06:04
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλημέρα Γιώργο!
Για να ανακεφαλαιώσουμε...
Το ζητούμενο σου όπως εξελίχθηκε μέσα από τη συζήτηση είναι:
Τα δεδομένα της τελευταίας χρησιμοποιημένης γραμμής (ας πούμε πηγή) να αντιγράφονται στην πρώτη ελεύθερη γραμμή όπου κι αν βρίσκεται αυτή δηλ. πριν ή μετά τηνπηγή.

Αν μέχρι εδώ συμφωνούμε τότε ο κώδικας διαμορφώνεται έτσι:

Κώδικας:
Sub CopyLastRow()
    Dim FirstFreeLine As Range, LastLine As Range
    With Range("Table")
        If Trim(.Cells(1)) <> vbNullString Then
            Set FirstFreeLine = .Cells(1).Offset(-1).End(xlDown).Offset(1).Resize(1, .Columns.Count)
        Else
            Set FirstFreeLine = .Cells(1).Resize(1, .Columns.Count)
        End If
        Set LastLine = .Offset(.Rows.Count + 1).End(xlUp).Resize(1, .Columns.Count)
        If FirstFreeLine.Row <> LastLine.Row And FirstFreeLine.Row <= .Rows(.Rows.Count).Row Then
            FirstFreeLine.Value = LastLine.Value
            'LastLine.ClearContents ' Διαγραφει την τελευταία γραμμή
            FirstFreeLine.Resize(1, 1).Offset(, .Columns.Count - 1).Select  ' ή .ClearContents
            'SendKeys "{F2}" ' φέρνει το κελί σε κατάσταση επεξεργασίας
        End If
    End With
End Sub
για να καλύπτει και τις δύο περιπτώσεις.

Τις γραμμές LastLine.ClearContents και SendKeys "{F2}" δεν τις ενεργοποίησα γιατί δεν μπορώ να γνωρίζω αν θα χρησίμευαν στο παρόν σενάριο.

Δεν έχει σημασία το ότι είσαι αρχάριος στην VBA.
Κάθε διόρθωση, απάντηση, σχόλιο από τα μέλη μας είναι ευπρόσδεκτη!

Δεν υπάρχουν συντακτικά ή προγραμματιστικά λάθη στους κώδικες που παρουσιάστηκαν στο θέμα αυτό από τον Γιάννη κι από μένα.

Υπάρχουν λογικά λάθη που οφείλονται στη λανθασμένη κατανόηση του ζητούμενου.

Μετά από πείρα 15 χρόνων στο χώρο, έμαθα ότι η σωστή περιγραφή ενός προβλήματος παίζει καθοριστικό ρόλο στη λύση του.

Καλή σου μέρα και καλή συνέχεια!

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 29-11-10 στις 23:12.
Απάντηση με παράθεση
  #12  
Παλιά 30-11-10, 00:06
Το avatar του χρήστη nisgia
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 161
Προεπιλογή

Καλησπέρα και πάλι!
Παράθεση:
Αρχική Δημοσίευση από Tasos Εμφάνιση μηνυμάτων
Υπάρχουν λογικά λάθη που οφείλονται στη λανθασμένη κατανόηση του ζητούμενου.
Ένα τέτοιο λοιπόν λογικό λάθος εντόπισα και εγώ μετά από επανεξέταση και στη δική μου πρόταση
η οποία θεωρούσε πως στην τελευταία γραμμή δεδομένων δεν υπάρχουν κενά κελιά
με αποτέλεσμα η επιλογή της να εκτοπίζεται στα δεξιά του πίνακα.

Έτσι, το επίμαχο κομμάτι κώδικα μετατρέπεται σε:

Κώδικας:
    With Range("Table").SpecialCells(xlCellTypeConstants)
        With .Areas(.Areas.Count)
            With .Rows(.Rows.Count)
                Set rngLastLine = Cells(.Row, Range("Table").Column) _
                        .Resize(, Range("Table").Columns.Count)
            End With
        End With
    End With
Έτσι λοιπόν οι συντεταγμένες της rngLastLine είναι αυτές της τελευταίας γραμμής δεδομένων
ακόμη και αν αυτή περιέχει 2~3 διάσπαρτα κελιά.
Να σημειώσω πως η διαδικασία συνεχίζει να δρα μόνο στη τελευταία γραμμή
και εντός των ορίων της περιοχής "Table".

Ελπίζω τώρα να μην μας προκύψει και άλλο λογικό σφάλμα...

Φιλικά, Γιάννης.
__________________
Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!
-----------------------------------------------
Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!
Απάντηση με παράθεση
  #13  
Παλιά 01-12-10, 00:45
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-09-2010
Περιοχή: Θεσσαλονίκη
Μηνύματα: 66
Προεπιλογή

Υποσχόμενος προσοχή σε μελοντικά μυνήματα για να αποφεύγονται τα (λογικά σφάλματα)

Σας ευχαριστώ όλους

Γιώργος
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Γενικά] Ειδική Επικόληση xristos Excel - Ερωτήσεις / Απαντήσεις 8 26-05-15 15:06
[Γενικά] Αυτόματη επικόληση δεδομένων από λίστα σε άλλο φύλλο xristos Excel - Ερωτήσεις / Απαντήσεις 0 08-07-14 17:22
[Συναρτήσεις] Στατιστικά από επικόληση σύνδεσης xristos Excel - Ερωτήσεις / Απαντήσεις 10 18-12-13 09:40
[Συναρτήσεις] Στατιστικά από επικόληση σύνδεσης xristos Excel - Ερωτήσεις / Απαντήσεις 11 30-09-13 20:17
[Συναρτήσεις] Επικόληση σύνδεσης xristos Excel - Ερωτήσεις / Απαντήσεις 4 11-12-12 11:27


Η ώρα είναι 07:59.