27-09-12, 18:08
|
| Διαχειριστής Όνομα: Τάσος Φιλοξενιδης Έκδοση λογισμικού Office: Ms-Office 365 Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική | | Εγγραφή: 21-10-2009
Μηνύματα: 2.249
| |
Αγαπητέ Θανάση,
1) Οι μεταβλητές στη στη VBA και στη VB6 θεωρούνται Variant αν δεν ακολουθεί το διευκρινιστικό As μετά από την κάθε μια χωριστά.
Η εικόνα από τον VBE στο αρχείο σου δείχνει καθαρά τον τύπο των μεταβλητών που δηλώνεις:
Εδώ υπάρχει και σχετικό άρθρο: Declaring Variables
2) Δεν υπάρχει λόγος το Range του φύλλου που είναι από μόνο του πίνακας (Array) να το ξαναπερνάς σε Array.
Ο κώδικας είναι γρηγορότερος και ευανάγνωστος όταν χρησιμοποιείς κατευθείαν το Range Object.
Έδωσα ήδη 2 παραδείγματα που ελπίζω ότι θα ωφελήσουν κάποιους που έχουν βέβαια κάποιες γνώσεις VBA και Excel.
Θα προσπαθήσω να απλοποιήσω τη διαδικασία παραθέτοντας τον παρακάτω κώδικα που βασίζεται στο ζητούμενο του θέματος (έτσι όπως εξελίχθηκε): Κώδικας: Sub DeletAllFalseColumns()
Dim i As Integer, rng As Range
Set rng = Range(Cells(4, 3), Cells(4, Columns.Count).End(xlToLeft))
For i = rng.Count To 1 Step -1
If Cells(4, i) <> True Then Cells(4, i).EntireColumn.Delete
Next
End Sub
Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών
Τελευταία επεξεργασία από το χρήστη Tasos : 27-09-12 στις 19:54.
|