Excel - Δημιουργία αναπτυσσόμενης λίστας σε ορισμένα κελιά

Θέμα

Ήθελα να δημιουργήσω μια αναπτυσσόμενη λίστα από τα δεδομένα στο Φύλλο2. Δοκίμασα τους παρακάτω κωδικούς, αλλά το αποτέλεσμα φαίνεται να είναι λανθασμένο. Αντί των δεδομένων στο φύλλο2 που αναφέρονται στην αναπτυσσόμενη λίστα, η αναπτυσσόμενη λίστα περιείχε τα δεδομένα από το Φύλλο1 (το οποίο είναι το φύλλο προορισμού μου).

Επίσης, θα ήθελα να έχουμε την αναπτυσσόμενη λίστα σε ορισμένα κελιά όπου έχω πληροφορίες σχετικά με τα κελιά πριν, δηλαδή η λίστα drop down πρέπει να είναι στη στήλη F του φύλλου1 όπου υπάρχουν πληροφορίες για τη στήλη Ε του φύλλου1 και επαναλαμβάνεται μέχρι το τέλος η λίστα.

Εδώ επισυνάπτεται ο φάκελος στον οποίο εργάζομαι εδώ.

Λύση

Δημιουργείτε μια λίστα επικύρωσης από ΑΛΛΟ WORKSHEET δίνετε ένα όνομα περιοχής σε αυτήν τη λίστα επικύρωσης (στο φύλλο2)

και να το χρησιμοποιήσετε ως τον τύπο

Προσπάθησα να τροποποιήσω τη μακροεντολή σας χωρίς να διαταραχθεί, εκτός από την αλλαγή μιας ή δύο γραμμών

Έχω δώσει το όνομά του ως "rangename". μπορείτε να το αλλάξετε στη μακροεντολή

Εάν είναι απαραίτητο, τσίμπημα λίγο περισσότερο.

 Dropdown () Dim x As Long, y As Long Dim objCell As Range Dim objDataRangeStart As Range Dim objDataRangeEnd As Range Dim rangename As String '>> Ορισμός της περιοχής για έγκυρο σύνολο δεδομένων wsSourceList = Ρύθμιση φύλλων ("Sheet2") Ρύθμιση wsDestList = Φύλλα ("Sheet1") Ορισμός objDataRangeStart = wsSourceList.Cells (1, 2) 'Εύρος εκκίνησης για καταχωρίσεις αναπτυσσόμενης λίστας Ρυθμίστε objDataRangeEnd = wsSourceList.Cells (6, 2)' End range για καταχωρίσεις αναπτυσσόμενης λίστας MsgBox objDataRangeStart MsgBox objDataRangeEnd '==== ============= Με φύλλα εργασίας ("Φύλλο2") Εύρος (objDataRangeStart, objdatarangaeend) .Name = "rangename" Τέλος με '=============== ====== '>> Ρύθμιση επικύρωσης για το απαιτούμενο κύτταρο' Set objCell = wsDestList.Cells (8, 4) 'Θέση της αναπτυσσόμενης λίστας' MsgBox objCell x = 4 y = 6 Να ορίσετε το objCell = wsDestList.Cells, y) 'Τοποθεσία της αναπτυσσόμενης λίστας Με την εντολή objCell.Validation .Delete' .Add Type: = xlValidateList, AlertStyle: = xlValidAlertStop, Operator: = xlBetween, Formula1: = "=" & objDataRangeStart.Address & ":" & objDataRangeEnd. Διεύθυνση '= ========================================== Τύπος προσθήκης: = xlValidateList, AlertStyle : = xlValidAlertStop, χειριστής: = _xlBetween, Formula1: = "= rangename" '================================ =============================================IgnoreBlank = Αλήθεια .InCellDropdown = Αληθινό .ErrorTitle = "Προειδοποίηση" .ErrorMessage = " Επιλέξτε μια τιμή από τη λίστα που είναι διαθέσιμη στο επιλεγμένο κελί. " .ShowError = True End Με x = x + 1 'y = y + 1 Loop Μέχρι x = 51 End Sub 

Χάρη στο venkat1926 για αυτό το άκρη.

Προηγούμενο Άρθρο Επόμενο Άρθρο

Οι Καλύτερες Συμβουλές