Note: The other languages of the website are Google-translated. Back to English

Πώς να δημιουργήσετε αναπτυσσόμενη λίστα με πολλές επιλογές ή τιμές στο Excel;

Από προεπιλογή, μπορείτε να επιλέξετε μόνο ένα στοιχείο σε μια αναπτυσσόμενη λίστα επικύρωσης δεδομένων στο Excel. Πώς μπορείτε να κάνετε πολλές επιλογές στην αναπτυσσόμενη λίστα όπως φαίνεται παρακάτω στο gif; Οι μέθοδοι σε αυτό το άρθρο μπορούν να σας βοηθήσουν να λύσετε το πρόβλημα.


Δημιουργήστε αναπτυσσόμενη λίστα με πολλές επιλογές με κώδικα VBA

Αυτή η ενότητα παρέχει δύο κωδικούς VBA για να σας βοηθήσουν να κάνετε πολλαπλές επιλογές σε αναπτυσσόμενες λίστες σε ένα φύλλο εργασίας. Οι δύο κωδικοί VBA μπορούν να επιτύχουν:

Κωδικός VBA 1: Επιτρέπονται πολλαπλές επιλογές σε μια αναπτυσσόμενη λίστα χωρίς διπλότυπα
Κωδικός VBA 2: Επιτρέπονται πολλαπλές επιλογές σε μια αναπτυσσόμενη λίστα χωρίς διπλότυπα (διαγράψτε τα υπάρχοντα στοιχεία επιλέγοντάς τα ξανά)

Μπορείτε να εφαρμόσετε έναν από τους ακόλουθους κωδικούς VBA για να κάνετε πολλαπλές επιλογές σε μια αναπτυσσόμενη λίστα σε ένα φύλλο εργασίας στο Excel. Παρακαλώ κάντε το εξής.

1. Ανοίξτε το φύλλο εργασίας περιέχει τις αναπτυσσόμενες λίστες επικύρωσης δεδομένων από τις οποίες θέλετε να κάνετε πολλές επιλογές. Κάντε δεξί κλικ στην καρτέλα του φύλλου και επιλέξτε Προβολή κωδικού από το μενού περιβάλλοντος.

2. Στο Microsoft Visual Basic για εφαρμογές παράθυρο, αντιγράψτε τον παρακάτω κώδικα VBA στο παράθυρο κώδικα. Δείτε το στιγμιότυπο οθόνης:

Κωδικός VBA 1: Επιτρέπονται πολλαπλές επιλογές σε μια αναπτυσσόμενη λίστα χωρίς διπλότυπα

Private Sub Worksheet_Change(ByVal Target As Range)
    'Updated by Extendoffice 2019/11/13
    Dim xRng As Range
    Dim xValue1 As String
    Dim xValue2 As String
    If Target.Count > 1 Then Exit Sub
    On Error Resume Next
    Set xRng = Cells.SpecialCells(xlCellTypeAllValidation)
    If xRng Is Nothing Then Exit Sub
    Application.EnableEvents = False
    If Not Application.Intersect(Target, xRng) Is Nothing Then
        xValue2 = Target.Value
        Application.Undo
        xValue1 = Target.Value
        Target.Value = xValue2
        If xValue1 <> "" Then
            If xValue2 <> "" Then
                If xValue1 = xValue2 Or _
                   InStr(1, xValue1, ", " & xValue2) Or _
                   InStr(1, xValue1, xValue2 & ",") Then
                    Target.Value = xValue1
                Else
                    Target.Value = xValue1 & ", " & xValue2
                End If
            End If
        End If
    End If
    Application.EnableEvents = True
End Sub

3. Πάτα το άλλος + Q πλήκτρα για να κλείσετε το Microsoft Visual Basic για εφαρμογές παράθυρο.

Τώρα μπορείτε να επιλέξετε πολλά στοιχεία από την αναπτυσσόμενη λίστα στο τρέχον φύλλο εργασίας.

Ας υποθέσουμε ότι επιλέξατε ένα στοιχείο κατά λάθος και πρέπει να το αφαιρέσετε χωρίς να καθαρίσετε ολόκληρο το κελί και να ξεκινήσετε από την αρχή. Ο παρακάτω κωδικός 2 VBA μπορεί να σας κάνει τη χάρη.

Κωδικός VBA 2: Επιτρέπονται πολλαπλές επιλογές σε μια αναπτυσσόμενη λίστα χωρίς διπλότυπα (διαγράψτε τα υπάρχοντα στοιχεία επιλέγοντάς τα ξανά)

Private Sub Worksheet_Change(ByVal Target As Range)
    'Updated by Extendoffice 2023/01/11
    'Updated by Ken Gardner 2022/07/11
    Dim xRng As Range
    Dim xValue1 As String
    Dim xValue2 As String
    Dim semiColonCnt As Integer
    Dim xType As Integer
    If Target.Count > 1 Then Exit Sub
    On Error Resume Next
    
    xType = 0
    xType = Target.Validation.Type
    If xType = 3 Then
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        xValue2 = Target.Value
        Application.Undo
        xValue1 = Target.Value
        Target.Value = xValue2
        If xValue1 <> "" Then
            If xValue2 <> "" Then
                If xValue1 = xValue2 Or xValue1 = xValue2 & ";" Or xValue1 = xValue2 & "; " Then ' leave the value if only one in list
                    xValue1 = Replace(xValue1, "; ", "")
                    xValue1 = Replace(xValue1, ";", "")
                    Target.Value = xValue1
                ElseIf InStr(1, xValue1, "; " & xValue2) Then
                    xValue1 = Replace(xValue1, xValue2, "") ' removes existing value from the list on repeat selection
                    Target.Value = xValue1
                ElseIf InStr(1, xValue1, xValue2 & ";") Then
                    xValue1 = Replace(xValue1, xValue2, "")
                    Target.Value = xValue1
                Else
                    Target.Value = xValue1 & "; " & xValue2
                End If
                Target.Value = Replace(Target.Value, ";;", ";")
                Target.Value = Replace(Target.Value, "; ;", ";")
                If Target.Value <> "" Then
                    If Right(Target.Value, 2) = "; " Then
                        Target.Value = Left(Target.Value, Len(Target.Value) - 2)
                    End If
                End If
                If InStr(1, Target.Value, "; ") = 1 Then ' check for ; as first character and remove it
                    Target.Value = Replace(Target.Value, "; ", "", 1, 1)
                End If
                If InStr(1, Target.Value, ";") = 1 Then
                    Target.Value = Replace(Target.Value, ";", "", 1, 1)
                End If
                semiColonCnt = 0
                For i = 1 To Len(Target.Value)
                    If InStr(i, Target.Value, ";") Then
                        semiColonCnt = semiColonCnt + 1
                    End If
                Next i
                If semiColonCnt = 1 Then ' remove ; if last character
                    Target.Value = Replace(Target.Value, "; ", "")
                    Target.Value = Replace(Target.Value, ";", "")
                End If
            End If
        End If
        Application.EnableEvents = True
        Application.ScreenUpdating = True
    End If
End Sub

Notes:

1). Δεν επιτρέπονται διπλότυπες τιμές στην αναπτυσσόμενη λίστα.
2). Ο κωδικός VBA 2 παραπάνω παρασχέθηκε από τον ενθουσιώδη χρήστη μας Ken Gardner στις 2022/07/11.
3). Αποθηκεύστε το βιβλίο εργασίας ως Βιβλίο εργασίας Excel με δυνατότητα μακροεντολής προκειμένου να διατηρηθεί ο κώδικας στο μέλλον.
4). Αφού προσθέσετε τον κωδικό VBA 2, μπορείτε να αφαιρέσετε ένα υπάρχον στοιχείο επιλέγοντάς το ξανά στην αναπτυσσόμενη λίστα. Δείτε το gif παρακάτω:


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

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

Πριν από την εφαρμογή Kutools για Excel, σας παρακαλούμε κατεβάστε και εγκαταστήστε το πρώτα.

1. κλικ Kutools > Αναπτυσσόμενη λίστα > Αναδυόμενη λίστα πολλαπλών επιλογών > Ρυθμίσεις. Δείτε screenshot:

2. Στο Ρυθμίσεις αναπτυσσόμενης λίστας πολλαπλών επιλογών πλαίσιο διαλόγου, διαμορφώστε τα εξής.

  • 2.1) Προσδιορίστε το πεδίο εφαρμογής στο Εφαρμογή σε Ενότητα. Σε αυτήν την περίπτωση, επιλέγω Τρέχον φύλλο εργασίας από το Καθορισμένο πεδίο εφαρμογής αναπτυσσόμενη λίστα;
  • 2.2) Στο Κατεύθυνση κειμένου ενότητα, επιλέξτε μια κατεύθυνση κειμένου με βάση τις ανάγκες σας.
  • 2.3) Στο Διαχωριστής πλαίσιο, εισαγάγετε ένα οριοθέτη το οποίο θα χρησιμοποιήσετε για να διαχωρίσετε τις πολλαπλές τιμές.
  • 2.4) Ελέγξτε το Μην προσθέσετε διπλότυπα στο πλαίσιο Επιλογές ενότητα εάν δεν θέλετε να δημιουργήσετε διπλότυπα σε αναπτυσσόμενα κελιά λίστας.
  • 2.5) Κάντε κλικ στο OK κουμπί. Δείτε το στιγμιότυπο οθόνης:

3. Κάντε κλικ Kutools > Αναπτυσσόμενη λίστα > Αναδυόμενη λίστα πολλαπλών επιλογών για να ενεργοποιήσετε τη λειτουργία.

Τώρα μπορείτε να επιλέξετε πολλά στοιχεία από την αναπτυσσόμενη λίστα στο τρέχον φύλλο εργασίας ή οποιοδήποτε εύρος έχετε καθορίσει στο βήμα 2.

  Εάν θέλετε να έχετε μια δωρεάν δοκιμή (30-ημέρα) αυτού του βοηθητικού προγράμματος, κάντε κλικ για να το κατεβάσετεκαι μετά πηγαίνετε για να εφαρμόσετε τη λειτουργία σύμφωνα με τα παραπάνω βήματα.


Σχετικά άρθρα:

Αυτόματη συμπλήρωση κατά την πληκτρολόγηση στην αναπτυσσόμενη λίστα του Excel
Εάν έχετε μια αναπτυσσόμενη λίστα επικύρωσης δεδομένων με μεγάλες τιμές, πρέπει να μετακινηθείτε προς τα κάτω στη λίστα μόνο για να βρείτε την κατάλληλη ή να πληκτρολογήσετε ολόκληρη τη λέξη στο πλαίσιο λίστας απευθείας. Εάν υπάρχει μέθοδος αυτόματης συμπλήρωσης κατά την πληκτρολόγηση του πρώτου γράμματος στην αναπτυσσόμενη λίστα, όλα θα γίνουν ευκολότερα. Αυτό το σεμινάριο παρέχει τη μέθοδο για την επίλυση του προβλήματος.

Δημιουργήστε αναπτυσσόμενη λίστα από άλλο βιβλίο εργασίας στο Excel
Είναι πολύ εύκολο να δημιουργήσετε μια αναπτυσσόμενη λίστα επικύρωσης δεδομένων μεταξύ των φύλλων εργασίας σε ένα βιβλίο εργασίας. Αλλά αν τα δεδομένα της λίστας που χρειάζεστε για την επικύρωση δεδομένων εντοπίζονται σε άλλο βιβλίο εργασίας, τι θα κάνατε; Σε αυτό το σεμινάριο, θα μάθετε πώς μπορείτε να δημιουργήσετε μια αναπτυσσόμενη λίστα από άλλο βιβλίο εργασίας στο Excel λεπτομερώς.

Δημιουργήστε μια αναπτυσσόμενη λίστα με δυνατότητα αναζήτησης στο Excel
Για μια αναπτυσσόμενη λίστα με πολλές τιμές, η εύρεση μιας κατάλληλης δεν είναι εύκολη δουλειά. Προηγουμένως έχουμε εισαγάγει μια μέθοδο αυτόματης συμπλήρωσης της αναπτυσσόμενης λίστας κατά την εισαγωγή του πρώτου γράμματος στο αναπτυσσόμενο πλαίσιο. Εκτός από τη λειτουργία αυτόματης συμπλήρωσης, μπορείτε επίσης να κάνετε αναζήτηση στην αναπτυσσόμενη λίστα για ενίσχυση της αποτελεσματικότητας λειτουργίας στην εύρεση κατάλληλων τιμών στην αναπτυσσόμενη λίστα. Για να κάνετε αναζήτηση στην αναπτυσσόμενη λίστα, δοκιμάστε τη μέθοδο σε αυτό το σεμινάριο.

Αυτόματη συμπλήρωση άλλων κελιών κατά την επιλογή τιμών στην αναπτυσσόμενη λίστα του Excel
Ας υποθέσουμε ότι έχετε δημιουργήσει μια αναπτυσσόμενη λίστα με βάση τις τιμές στην περιοχή κελιών B8: B14. Όταν επιλέγετε οποιαδήποτε τιμή στην αναπτυσσόμενη λίστα, θέλετε οι αντίστοιχες τιμές στην περιοχή κελιών C8: C14 να συμπληρώνονται αυτόματα σε ένα επιλεγμένο κελί. Για την επίλυση του προβλήματος, οι μέθοδοι σε αυτό το σεμινάριο θα σας βοηθήσουν.

Περισσότερα φροντιστήριο για την αναπτυσσόμενη λίστα ...


Τα καλύτερα εργαλεία παραγωγικότητας του Office

Το Kutools για Excel λύνει τα περισσότερα από τα προβλήματά σας και αυξάνει την παραγωγικότητά σας κατά 80%

  • Επαναχρησιμοποίηση: Εισαγάγετε γρήγορα σύνθετοι τύποι, γραφήματα και οτιδήποτε έχετε χρησιμοποιήσει στο παρελθόν. Κρυπτογράφηση κυττάρων με κωδικό πρόσβασης Δημιουργία λίστας αλληλογραφίας και στείλτε email ...
  • Super Formula Bar (επεξεργαστείτε εύκολα πολλές γραμμές κειμένου και τύπου). Διάταξη ανάγνωσης (εύκολη ανάγνωση και επεξεργασία μεγάλου αριθμού κελιών). Επικόλληση σε φιλτραρισμένο εύρος...
  • Συγχώνευση κελιών / σειρών / στηλών χωρίς απώλεια δεδομένων · Περιεχόμενο διαχωρισμού κελιών Συνδυάστε διπλές σειρές / στήλες... Αποτροπή διπλών κυττάρων; Συγκρίνετε τα εύρη...
  • Επιλέξτε Διπλότυπο ή Μοναδικό Σειρές; Επιλέξτε Κενές σειρές (όλα τα κελιά είναι κενά). Σούπερ εύρεση και ασαφής εύρεση σε πολλά βιβλία εργασίας. Τυχαία επιλογή ...
  • Ακριβές αντίγραφο Πολλαπλά κελιά χωρίς αλλαγή της αναφοράς τύπου. Αυτόματη δημιουργία αναφορών σε πολλαπλά φύλλα? Εισαγωγή κουκκίδων, Πλαίσια ελέγχου και άλλα ...
  • Εξαγωγή κειμένου, Προσθήκη κειμένου, Κατάργηση κατά θέση, Αφαιρέστε το διάστημα; Δημιουργία και εκτύπωση υποσύνολων σελιδοποίησης. Μετατροπή περιεχομένου και σχολίων μεταξύ κελιών...
  • Σούπερ φίλτρο (αποθηκεύστε και εφαρμόστε σχήματα φίλτρων σε άλλα φύλλα). Προηγμένη ταξινόμηση ανά μήνα / εβδομάδα / ημέρα, συχνότητα και άλλα. Ειδικό φίλτρο με έντονη, πλάγια ...
  • Συνδυάστε βιβλία εργασίας και φύλλα εργασίας; Συγχώνευση πινάκων βάσει βασικών στηλών. Διαχωρίστε τα δεδομένα σε πολλά φύλλα; Μαζική μετατροπή xls, xlsx και PDF...
  • Περισσότερα από 300 ισχυρά χαρακτηριστικά. Υποστηρίζει Office / Excel 2007-2021 και 365. Υποστηρίζει όλες τις γλώσσες. Εύκολη ανάπτυξη στην επιχείρηση ή τον οργανισμό σας. Πλήρεις δυνατότητες δωρεάν δοκιμής 30 ημερών. Εγγύηση επιστροφής χρημάτων 60 ημερών.
kte καρτέλα 201905

Το Office Tab φέρνει τη διεπαφή με καρτέλες στο Office και κάνει την εργασία σας πολύ πιο εύκολη

  • Ενεργοποίηση επεξεργασίας και ανάγνωσης καρτελών σε Word, Excel, PowerPoint, Publisher, Access, Visio και Project.
  • Ανοίξτε και δημιουργήστε πολλά έγγραφα σε νέες καρτέλες του ίδιου παραθύρου και όχι σε νέα παράθυρα.
  • Αυξάνει την παραγωγικότητά σας κατά 50% και μειώνει εκατοντάδες κλικ του ποντικιού για εσάς κάθε μέρα!
κάτω μέρος γραφείου
Σχόλια (67)
Δεν υπάρχουν ακόμη βαθμολογίες. Γίνε ο πρώτος που θα αξιολογήσετε!
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια, ευχαριστώ για τη λύση και τον κωδικό. Αλλά το επόμενο βήμα είναι πώς να βεβαιωθείτε ότι ο χρήστης δεν επιλέγει "διπλότυπες" τιμές από την αναπτυσσόμενη λίστα. Π.χ. εάν υπάρχουν 4 στοιχεία στη λίστα - πορτοκάλι, μήλο, μπανάνα, ροδάκινο και εάν ο χρήστης έχει ήδη επιλέξει "πορτοκαλί", τότε το excel δεν πρέπει να επιτρέπει στον χρήστη να επιλέξει "πορτοκαλί" Ή αυτή η επιλογή πρέπει να αφαιρεθεί από το υπόλοιπο η λίστα. Μπορείτε να δημοσιεύσετε τον κώδικα για να ολοκληρώσετε αυτήν τη δυνατότητα. Ευχαριστώ. Yezdi
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σου Yezdi, Ευχαριστώ για το σχόλιό σου. Ο κώδικας ενημερώθηκε και δεν επιτρέπονται διπλότυπες τιμές στην αναπτυσσόμενη λίστα τώρα. Ευχαριστώ. Λιακάδα
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Είναι υπέροχο που επιτρέπει πολλαπλές επιλογές, αλλά όπως σχολίασε ο @Yezdi, διαπιστώνω ότι θα προσθέσει ένα ή περισσότερα διπλότυπα, ακόμα κι αν δεν τα επιλέξω. Λοιπόν, προς το παρόν, αυτή είναι μια λύση 80%... ένα tweak μακριά από το τέλειο. Δεν είμαι κωδικοποιητής VB ή θα πρόσφερα τη λύση.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Μπορείτε να αλλάξετε τον κώδικα στις ακόλουθες γραμμές για να αποτρέψετε τα διπλότυπα: Αν xValue2 "" Τότε Target.Value = xValue1 & ", " & xValue2 Τέλος Εάν σε: Εάν xValue2 "" Τότε Αν CheckIfAlreadyAdded(xValue1, xValue2) = False Τότε Target .Value = xValue1 & ", " & xValue2 Else Target.Value = xValue1 End If End If And, στη συνέχεια, προσθέστε την ακόλουθη συνάρτηση: Ιδιωτική συνάρτηση CheckIfAlreadyAdded(ByVal sText As String, sNewValue As String) Ως BooleanArt CheckIfAdAdlre. String WrdArray() = Split(sText, ",") For i = LBound(WrdArray) To UBound(WrdArray) If Trim(WrdArray(i)) = Trim(sNewValue) Τότε CheckIfAlreadyAdded = True Next i End συνάρτηση -- Πιθανότατα υπάρχει καλύτεροι τρόποι κωδικοποίησης, αλλά λειτουργεί προς το παρόν.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Μόλις συνειδητοποίησα ότι δεν έβγαινα από τον βρόχο στη νέα συνάρτηση εάν η συνθήκη έχει οριστεί, ώστε να μην χρειάζεται να ελέγξουμε άλλες καταχωρήσεις.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια. Σας ευχαριστούμε για τον κωδικό και την προσθήκη στον περιορισμό των διπλότυπων. Ένα ακόμη αίτημα - ποια προσθήκη/αλλαγή θα πρέπει να γίνει για να επιτρέπεται η πολλαπλή επιλογή μόνο σε μία ή δύο συγκεκριμένες στήλες; Αυτός ο κώδικας προσθέτει εκ νέου γραμμές κειμένου σε αυτά που θα έπρεπε να είναι "απλά" κελιά εάν πάω να διορθώσω ένα τυπογραφικό λάθος ή να κάνω μια αλλαγή ή προσθήκη στο κείμενο στο κελί, σε αντίθεση με το να συμπεριφέρομαι απλώς "κανονικά" και να αποδεχτώ την αλλαγή (χωρίς να προστεθεί ξανά ολόκληρο το κείμενο). Για παράδειγμα, η στήλη Α είναι μια «απλή» στήλη. Γράφω μια πρόταση "Ποια είναι τα τρία αντικείμενα που θέλετε περισσότερο;" Η στήλη Β είναι μια στήλη "λίστα" όπου θέλω να μπορώ να επιλέξω μόνο μία τιμή (σε αυτήν την περίπτωση, ας πούμε το όνομα ενός παιδιού). Η στήλη Γ είναι μια άλλη στήλη 'λίστας' όπου ο χρήστης πρέπει να μπορεί να επιλέξει πολλά στοιχεία (κάτι που αυτός ο κωδικός μου επιτρέπει να το κάνω τέλεια). Καθώς προχωράω, συνειδητοποιώ ότι έχω κάνει ένα τυπογραφικό λάθος στη στήλη Α και θέλω να το διορθώσω. Όπως έχει αυτός ο κωδικός, αν πάω μέσα (διπλό κλικ, F2) και κάνω τη διόρθωση στη λέξη "στοιχεία", καταλήγω σε αυτό το αποτέλεσμα στο κελί μου: "Ποια είναι τα τρία αντικείμενα που θέλετε περισσότερο; Ποια είναι τα τρία αντικείμενα που θέλεις περισσότερο;" σας ευχαριστώ εκ των προτέρων για οποιαδήποτε βοήθεια (από έναν χρήστη που του αρέσει ΠΟΛΥ το VBA, αλλά βρίσκεται ακόμα στα πρώτα στάδια της εκμάθησης!)
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Μπόρεσα να βάλω τον κώδικα να λειτουργήσει, αλλά μετά όταν αποθήκευσα το έγγραφο (με ενεργοποιημένες τις μακροεντολές), το έκλεισα και επέστρεψα, ο κωδικός δεν λειτουργούσε πια (αν και ήταν ακόμα εκεί). Δεν μπορώ να καταλάβω τι έχω κάνει λάθος. Καμιά ιδέα?
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σου Cynthia, Αν ο αρχικός συγγραφέας δεν απαντήσει, θα σου απαντήσω, αλλά θα είμαι ξανά μπροστά σε υπολογιστή μόνο στις 29 Δεκεμβρίου. Επίσης δεν είμαι προγραμματιστής VBA. Αυτό που μπορείτε να κάνετε στο μεταξύ είναι να αναζητήσετε στο Google πώς να προσδιορίσετε τον αριθμό της στήλης και να αφήσετε τον κώδικα να εκτελεστεί μόνο εάν τα δεδομένα υποβληθούν σε επεξεργασία στη συγκεκριμένη στήλη(ες). Το έκανα, αλλά ο κώδικας βρίσκεται στον υπολογιστή της εργασίας μου και δεν μπορώ να τον θυμηθώ αυτήν τη στιγμή, ίσως δοκιμάστε να βάλετε ένα debug.print στο target.column ή κάτι τέτοιο για να δείτε αν σας δίνει τον αριθμό της στήλης που πρόκειται να επεξεργαστείτε . Συγγνώμη Jennifer, δεν είμαι σίγουρος για το πρόβλημα που αντιμετωπίζεις :(
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
@Cynthia, Εάν εξακολουθείτε να απαιτείται, θα πρέπει να μπορείτε να κάνετε κάτι τέτοιο για να βεβαιωθείτε ότι ο κώδικας εκτελείται μόνο σε συγκεκριμένες στήλες, στην περίπτωσή μου, στήλη 34 και 35: Εάν (Target.Column 34 And Target.Column 35) Στη συνέχεια, Exit Sub «Βάλτε αυτόν τον κωδικό στην αρχή μετά τις αμυδρά δηλώσεις σας
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
[quote]@Cynthia, Εάν εξακολουθείτε να απαιτείται, θα πρέπει να μπορείτε να κάνετε κάτι τέτοιο για να διασφαλίσετε ότι ο κώδικας εκτελείται μόνο σε συγκεκριμένες στήλες, στην περίπτωσή μου, στήλη 34 και 35: Εάν (Target.Column 34 And Target.Column 35) Στη συνέχεια, βγείτε από το Sub 'Βάλτε αυτόν τον κωδικό στην αρχή μετά τις αμυδρά δηλώσεις σαςΤου Mervyn[/quote] Γεια @Mervyn, έχασα εντελώς το κομμάτι του νήματος, αλλά σας ευχαριστώ πολύ για τις απαντήσεις σας. Δοκίμασα να εφαρμόσω το If (Target.Column 34 And Target.Column 35) Στη συνέχεια Exit Sub (η έκδοσή μου λέει If (Target.Column4 And Target.Column5) Στη συνέχεια, Exit Sub, όπως παρείχατε, αλλά λαμβάνω ένα "Run-time Σφάλμα "438": Το αντικείμενο δεν υποστηρίζει αυτήν την ιδιότητα ή τη μέθοδο"" σφάλμα σε αυτήν τη νέα γραμμή. Ακολουθούν οι πρώτες λίγες γραμμές του κώδικά μου: Ιδιωτικό δευτερεύον φύλλο εργασίας_Αλλαγή(ByVal Στόχος ως εύρος) Dim xRng ως εύρος Dim xValue1 As string Dim xValue2 Ως συμβολοσειρά If (Target.Column4 And Target.Column5) Στη συνέχεια Exit Sub If Target.Count > 1 Στη συνέχεια Exit Sub On Error Συνέχεια Επόμενο Το φύλλο εργασίας μου έχει μόνο 6 στήλες: Ερώτηση | Απάντηση | Κατηγορία | Υποκατηγορία | Ετικέτες | Σύνδεσμος φωτογραφίας Χρειάζομαι μόνο πολλαπλές αναδιπλούμενες τιμές σε Υποκατηγορία και Ετικέτες (στήλες 4 & 5). Θα συνεχίσω να αναζητώ πληροφορίες όπως προτείνατε στις 12/23 και θα κοιτάξω τον σύνδεσμο που παρέχεται από την Φιλανθρωπία.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Εάν Target.Column <> 34 Στη συνέχεια, πραγματοποιήστε έξοδο από το Sub

«Βάλτε αυτόν τον κωδικό στην αρχή μετά τις αμυδρά δηλώσεις σας
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια, αυτήν τη στιγμή χρησιμοποιώ αυτόν τον τύπο και όλες οι στήλες με επικύρωση δεδομένων έχουν τώρα την επιλογή πολλαπλής επιλογής, ωστόσο θέλω να περιορίσω την πολλαπλή επιλογή μόνο σε μία στήλη. Μπορεί κάποιος να επεξεργαστεί αυτόν τον τύπο για μένα, ώστε η πολλαπλή επιλογή να μπορεί να εφαρμοστεί μόνο στη Στήλη 4; Ευχαριστώ :) Private Sub Worksheet_Change(ByVal Target As Range) 'Ενημερώθηκε: 2016/4/12 Dim xRng ως εύρος Dim xValue1 Ως συμβολοσειρά Dim xValue2 ως συμβολοσειρά Εάν Target.Count > 1 Στη συνέχεια, έξοδος Sub On Error Συνέχιση Επόμενων Κελιών xRng = SpecialCells(xlCellTypeAllValidation) Εάν το xRng δεν είναι τίποτα, τότε πραγματοποιήστε έξοδο από τη δευτερεύουσα εφαρμογή.EnableEvents = False εάν όχι Application.Intersect(Target, xRng) Is Nothing Τότε xValue2 = Target.Value Application.Αναίρεση xValue1 =Targue.VRGet. " Τότε Αν xValue2 "" Τότε Αν xValue1 = xValue2 Ή _ InStr(1, xValue2, ", " & xValue1) Ή _ InStr(1, xValue2, xValue1 & ",") Τότε Target.Value = xValue1 Else Target.Value = xValue2 & ", " & xValue1 End If End If End If End If Application.EnableEvents = True End Sub Οποιαδήποτε βοήθεια θα εκτιμηθεί!
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Αυτό λειτουργεί καλά, αλλά δεν μπορώ να αφαιρέσω ένα στοιχείο μόλις επιλεγεί. Κάποια πρόταση σε περίπτωση που κάνω κλικ σε κάτι κατά λάθος και χρειαστεί να το αφαιρέσω χωρίς (ελπίζουμε) να καθαρίσω ολόκληρο το κελί και να ξεκινήσω από την αρχή; Επίσης, για όσους θέλουν να ορίσουν μια στήλη ή στήλες, το Contextures έχει μια εξαιρετική προσθήκη στον κώδικα που παρέχεται εδώ που σας επιτρέπει να το κάνετε αυτό. http://www.contextures.com/excel-data-validation-multiple.html#column
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
[quote]Αυτό λειτουργεί καλά, αλλά δεν μπορώ να αφαιρέσω ένα στοιχείο αφού επιλεγεί. Κάποια πρόταση σε περίπτωση που κάνω κλικ σε κάτι κατά λάθος και χρειαστεί να το αφαιρέσω χωρίς (ελπίζουμε) να καθαρίσω ολόκληρο το κελί και να ξεκινήσω από την αρχή; Επίσης, για όσους θέλουν να ορίσουν μια στήλη ή στήλες, το Contextures έχει μια εξαιρετική προσθήκη στον κώδικα που παρέχεται εδώ που σας επιτρέπει να το κάνετε αυτό. http://www.contextures.com/excel-data-validation-multiple.html#columnΑπό Φιλανθρωπία[/quote] Ο κώδικας λειτουργεί καλά. Ωστόσο, δεν φαίνεται να μπορώ να αποεπιλέξω ένα στοιχείο. Όταν θέλω να αφαιρέσω ένα στοιχείο από την επιλογή, απλώς δεν αφαιρείται. Αντιμετωπίζει κανείς άλλος αυτό το πρόβλημα;[/quote] Γεια σε όλους, Βρέθηκαν λύσεις για αυτό το πρόβλημα..παρακαλώ κοινοποιήστε..
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σας, ο κώδικας λειτουργεί καλά. Ωστόσο, δεν φαίνεται να μπορώ να αποεπιλέξω ένα στοιχείο. Όταν θέλω να αφαιρέσω ένα στοιχείο από την επιλογή, απλώς δεν αφαιρείται. Αντιμετωπίζει κανείς άλλος αυτό το πρόβλημα;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Υπήρχε ανταπόκριση σε αυτό το θέμα. Είναι το ίδιο θέμα που έχω. Δεν φαίνεται να υπάρχει τρόπος να αφαιρέσετε ένα στοιχείο που έχει επιλεγεί.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
διαγράψτε το περιεχόμενο στο κελί και, στη συνέχεια, επιλέξτε ξανά
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σε όλους, έχω αυτόν τον κωδικό σε ένα φύλλο excel και καθαρίζει τα περιεχόμενα από την αναπτυσσόμενη λίστα όταν είναι επιλεγμένο το κελί - ξέρω ποιο μέρος του κώδικα το κάνει (το τμήμα που λέει "fillRng.ClearContents") και εγώ προσπάθησα να χρησιμοποιήσω κάποια από τα παραπάνω για να το διορθώσω ανεπιτυχώς... Είμαι νέος στον προγραμματισμό VBA κ.λπ. Μπορεί κάποιος να προσφέρει βοήθεια για το πώς να το αλλάξω έτσι ώστε όταν επιλεγεί το κελί να μην διαγράφεται και να μην γίνονται καταχωρήσεις διπλό παρακαλώ?? Επιλογή Ρητή Dim fillRng ως εύρος Ιδιωτικό δευτερεύον φύλλο εργασίας_SelectionChange(ByVal Target As Range) Dim Qualifiers As MSForms.ListBox Dim LBobj Ως OLEObject Dim i As Long Set LBobj = Me.OLEObjects("ListBoxetQobjet1") > 3 And Target.Column = 3 Στη συνέχεια ορίστε fillRng = Target με LBobj .Left = fillRng.Left .Top = fillRng.Top .Width = fillRng.Width .Height = 155 .Ορατό = Αληθές τέλος με άλλο LBobj.Ορατό = False Not fillRng δεν είναι τίποτα Τότε fillRng.ClearContents With Qualifiers If .ListCount 0 then For i = 0 To .ListCount - 1 If fillRng.Value = "" Τότε If .Selected(i) Τότε fillRng.Value = .List(i) Else If .Selected(i) Στη συνέχεια fillRng.Value = _ fillRng.Value & ", " & .List(i) End If Next End If For i = 0 To .ListCount - 1 .Selected(i) = False Next End With Set fillRng = Nothing End If End If End Sub
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σε όλους, θα μπορούσα να κάνω τέλεια την αναπτυσσόμενη λίστα μου, αλλά η ερώτησή μου είναι: όταν επιλέγω όλα τα στοιχεία που έχουν ενσωματωθεί, περνά το ένα μετά το άλλο με οριζόντιο τρόπο μέσα από το κελί, για παράδειγμα: κίτρινο, πράσινο, μαύρο, κόκκινο. Αλλά πώς μπορώ να το κάνω να φαίνεται κατακόρυφα;, περισσότερο όπως για παράδειγμα: Πορτοκαλί, μαύρο κίτρινο Κόκκινο, επειδή σε οριζόντια θέση το κελί γίνεται αρκετά μεγάλο όταν επιλέγετε πολλά αντικείμενα. Θα μπορούσατε σας παρακαλώ να μου πείτε αν υπάρχει κάποιος τρόπος να γίνει αυτό;. Ευχαριστώ, Desiree
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Κατάφερα να χρησιμοποιήσω αυτόν τον κωδικό και να δημιουργήσω με επιτυχία αναπτυσσόμενα πλαίσια πολλαπλών επιλογών. Λειτούργησε όταν έκλεινα και άνοιγα ξανά σε διαφορετικές ημέρες. Ωστόσο, τώρα δεν επιτρέπουν όλα τα κελιά που είχα αρχικά επιλέξει. Μόνο αυτά που έγιναν προηγουμένως, παρά τη χρήση του κώδικα για ολόκληρο το υπολογιστικό φύλλο. Μπορεις να βοηθησεις?
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Έχω το ίδιο πρόβλημα.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
τα κελιά είναι πιθανότατα κλειδωμένα, κάντε δεξί κλικ σε όλα, μεταβείτε στη διαμόρφωση κελιών, προστασία και, στη συνέχεια, καταργήστε την επιλογή της επιλογής κλειδωμένου κελιού
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Δημιούργησα μια αναπτυσσόμενη λίστα όπου θα μπορούσαν να επιλεγούν πολλαπλές επιλογές κειμένου, όπως "διατροφή", "βάρος" και "εργασία" για τον λόγο που τηλεφωνεί κάθε καλών. Έχω μια σελίδα σύνοψης όπου θέλω να δω πόσες από κάθε λόγο υποδείχθηκαν σε συγκεκριμένο μήνα. Τι τύπο θα χρησιμοποιούσα για να πω στο Excel να βγάλει και να καταμετρήσει καθένα από αυτά ξεχωριστά σε έναν δεδομένο μήνα; Προς το παρόν, όπως το έχω ρυθμίσει, μετράει σωστά μόνο αν έχω έναν λόγο στο κελί για κάθε καλούντα.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Καλή μέρα,
Λυπούμαστε, δεν μπορώ να σας βοηθήσω να λύσετε αυτό το πρόβλημα. Παρακαλώ ενημερώστε με αν βρείτε την απάντηση.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Προσπαθώ να δημιουργήσω 4 στήλες με αναπτυσσόμενες λίστες όπου μπορώ να επιλέξω πολλές τιμές. Πώς μπορώ να τροποποιήσω τον κώδικα VBA "αναπτυσσόμενη λίστα με πολλές επιλογές", ώστε όταν κάνω κλικ σε μια τιμή που έχει ήδη εισαχθεί, να την αφαιρεί από το κελί; Ευχαριστώ εκ των προτέρων.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Αγαπητέ Randy,
Τι εννοείς "όταν κάνω κλικ σε μια τιμή που έχει ήδη εισαχθεί, την αφαιρεί από το κελί;"
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Έχω την ίδια απορία. Η αναπτυσσόμενη λίστα μου δεν θυμάται τις επιλεγμένες τιμές. Εάν κάποιος κάνει κλικ σε ένα κελί που έχει ήδη συμπληρωθεί (όχι από αυτόν, αλλά από κάποιον άλλο), οι επιλεγμένες τιμές διαγράφονται και το κελί είναι ξανά κενό.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Χρησιμοποιώ τον παρακάτω κώδικα για να επιτρέψω την πολλαπλή επιλογή σε πολλά φύλλα εργασίας, αλλά όταν πηγαίνω σε άλλο φύλλο εργασίας στο βιβλίο εργασίας, η πολλαπλή επιλογή καταργείται. Όταν αποθηκεύσω το αρχείο και επανέλθω, θα λειτουργεί για μια καρτέλα με τον κωδικό, αλλά ξανά όταν κάνω κλικ σε μια άλλη καρτέλα με τον κωδικό δεν λειτουργεί πλέον. Καμιά ιδέα πώς να το διορθώσω, ώστε αν κάνω κλικ σε ένα φύλλο εργασίας με τον κωδικό VBA, θα επιτρέπεται πάντα η πολλαπλή επιλογή;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια, ich bin totaler VBA Laie. Ich versuche den Code so zu modifizieren, dass
α) die Mehrfachauswahl nicht in allen, sondern nur ein zwei Spalten aktiv ist
β) ich Items auch wieder rausnehmen kann, zB in dem ich in der Listenauswahl das Item noch einmal anklicke (Beispiel: ich habe über die Mehrfachauswahl ausgewählt: A, D, X, Y... nun fällt mir aufcht dazus gehört. Beim aktuellen Κώδικας müsste ich Eingaben entfernen und neu auswählen).
Ευχαριστώ εκ των προτέρων!
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Δεν μπορώ να προχωρήσω στη δημιουργία της πολλαπλής επιλογής της αναπτυσσόμενης λίστας. Έχω ακούσει σεμινάριο και έχω διαβάσει υλικό αλλά ακόμα δεν μπορώ να δημιουργήσω. Παρακαλώ μπορεί κάποιος να με βοηθήσει;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Ξέρω ότι αυτό μπορεί να είναι εντελώς τυχαίο, αλλά χρησιμοποιώ μια παραλλαγή του VBA χωρίς πρόβλημα. Εκτός από μια σελίδα, εάν επιλέξετε τις τρεις πρώτες επιλογές, δεν θα σας αφήσει να επιλέξετε την τέταρτη. Θα σας επιτρέψει να επιλέξετε την 5η, την 6η και ούτω καθεξής, απλώς όχι την 4η επιλογή. Σκέψεις;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σου Robert,
Έχω δοκιμάσει τον κωδικό αλλά δεν βρήκα το πρόβλημα όπως αναφέρατε. Μπορείτε να μου πείτε ποια έκδοση Excel χρησιμοποιείτε; Σας ευχαριστούμε για το σχόλιό σας.
Δεν υπάρχουν σχόλια δημοσιεύτηκε ακόμα
Τοποθετήστε Περισσότερα
Αφήστε τα σχόλιά σας
Δημοσίευση ως επισκέπτης
×
Αξιολογήστε αυτήν την ανάρτηση:
0   Χαρακτήρες
Προτεινόμενες τοποθεσίες

Ακολουθησε μας

Πνευματικά δικαιώματα © 2009 - www.extendoffice.com. | Ολα τα δικαιώματα διατηρούνται. Τροφοδοτείται από ExtendOffice. | Sitemap
Το Microsoft και το λογότυπο του Office είναι εμπορικά σήματα ή σήματα κατατεθέντα της Microsoft Corporation στις Ηνωμένες Πολιτείες ή / και σε άλλες χώρες.
Προστατεύεται από το Sectigo SSL