Απλοποιήστε την ονομασία εύρους - Συμβουλές για το Excel

Ο Ζα ρωτά:

Δημιουργώ πίνακες, ίδιο αριθμό στηλών, αλλά κάθε φορά διαφορετικός αριθμός σειρών. Μπορώ να προσδιορίσω χωρίς πρόβλημα την τελευταία σειρά και την τελευταία στήλη για να κάνω τους υπολογισμούς που χρειάζομαι σε μια μακροεντολή. Τώρα ο σκοπός είναι να προσθέσετε σε αυτήν τη μακροεντολή τη δυνατότητα ονομασίας του πίνακα (με το ίδιο όνομα κάθε φορά), αλλά στη μακροεντολή η περιοχή κελιών που σχετίζεται με το φύλλο εργασίας είναι R1C1: RxCy, δεν ξέρω πώς να γράψω το εύρος χρησιμοποιώντας τις τιμές lastrow και lastcolumn (που αντιπροσωπεύουν την τελευταία στήλη και σειρά του πίνακα) με το σύστημα RC (δεν ξέρω καν αν είναι δυνατό)

Οι περισσότεροι προγραμματιστές VBA θα χρησιμοποιούν την ακόλουθη μέθοδο, η οποία χρησιμοποιεί τη μέθοδο Names.Add.

Sub Method1() LastRow = Cells(65536, 1).end(xlUp).row LastCol = Cells(1, 255).End(xlToLeft).column MyArea = "='" & ActiveSheet.Name & "'!R1C1:R" & LastRow & "C" & LastCol ActiveWorkbook.Names.Add Name:="TheData", RefersToR1C1:=MyArea End Sub

Υπάρχει μια ευκολότερη μέθοδος για την εκχώρηση ονόματος εύρους. Οι ακόλουθες τέσσερις δηλώσεις είναι όλες ισοδύναμες. Τα δύο τελευταία είναι πολύ πιο εύκολα:

ActiveWorkbook.Names.Add Name:="TheData", RefersToR1C1:="=Sheet1!R1C1:R10C5" ActiveWorkbook.Names.Add Name:="TheData", RefersTo:="=Sheet1!A1:E10" Range("A1:E10").Name = "TheData" Cells(1, 1).Resize(10, 5).Name = "TheData"

Jac - Θα προσαρμόσω την τελευταία γραμμή για χρήση:

Sub Method2() LastRow = Cells(65536, 1).end(xlUp).row LastCol = Cells(1, 255).End(xlToLeft).column Cells(1, 1).Resize(LastRow, LastCol).Name = "TheData" End Sub

Έμαθα αυτήν τη συντόμευση για την εκχώρηση ονομάτων εύρους από το Bovey & Bullen's Excel 2002 VBA Programmer Reference Η έκδοση 2002 αυτού του βιβλίου κυκλοφορεί γύρω από την έκδοση του 2000. Για τα χρήματά μου, οποιοσδήποτε προγραμματιστής του Excel VBA χρειάζεται αυτό το βιβλίο στα δεξιά του. Το αντίγραφό μου είναι αυθόρμητο και ποτέ δεν είναι δυνατό.

ενδιαφέροντα άρθρα...