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

Αναστάση καλησπέρα και καλωσόρισες στο φόρουμ!

Ο κώδικας σου δεν έχει κάποιο συντακτικό λάθος.

Σου γράφω τα παρακάτω σε θεωρητικό επίπεδο όπως το βλέπει ο προγραμματιστής :

.....Cells(.Range("A65536") δεν θα λειτουργήσει σε 2007 αν τα κελιά έχουν ήδη φτάσει μέχρι τη γραμμή 65536.

Για να μην αντιμετωπίσεις πρόβλημα σε περίπτωση που το φύλλο "Φύλλο2" μετονομαστεί
ή το κελί A1 χρειαστεί να μετακινηθεί, δημιούργησε το όνομα "MyCell" με αναφορά το κελί
A1 (στο φύλλο "Φύλλο1") και στο συμβάν Worksheet_Change() δοκίμασε το παρακάτω:

Κώδικας:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim DestinationCell As Range
    If Not Intersect(Target, Range("MyCell")) Is Nothing Then
        With Sheet2    ' Sheet2=το εσωτερικό όνομα του φύλλου (CodeName)
            'Eίναι πιο ασφαλές να χρησιμοποιούμε το εσωτερικό όνομα του φύλλου (CodeName)
            'Επίσης καλό είναι να μήν υπάρχουν εσωτερικά ονόματα που περιέχουν ελληνικούς χαραχτήρες (πχ.Φύλλο1).
            'Σ αυτή την περίπτωση μπορούμε να αλλάξουμε τα εσωτερικά ονόματα των φύλλων σε άλλα με λατινικούς χατακτήρες
            If IsEmpty(.Range("A1")) Then .Range("A1").Value = Target.Value: Exit Sub   
            'Περνάει την τιμή στο A1 αν αυτό είναι κενό

            Set DestinationCell = .Range("A" & Rows.Count).End(xlUp).Offset(1)
            If IsEmpty(DestinationCell) Then 
                DestinationCell.Value = Target.Value
            Else  'αν το τελευταίο κελί της στήλης περιέχει ήδη τιμή
                MsgBox "Destination Sheet is Full", vbInformation
            End If
        End With
        Target.Select
    End If
End Sub
Έτσι, χωρίς να χρειαστείς αλλαγές στον κώδικα μπορείς:
  • Αν χρειαστεί να μετακινήσεις το κελί "MyCell" σε οποιοδήποτε σημείο του φύλλου.
  • Να μετονομάσεις το φύλλο προορισμού σε οτιδήποτε άλλο.
  • Λιγότερο χρήσιμο. Να μην περιορίζεσαι στις 65536 εγγραφές αν βρίσκεσαι σε περιβάλλον Excel 2007 (*.xlsx)

Φιλικά

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