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

Jak utworzyć listę rozwijaną z wieloma wyborami lub wartościami w programie Excel?

Domyślnie możesz wybrać tylko jeden element z listy rozwijanej sprawdzania poprawności danych w programie Excel. Jak dokonać wielu wyborów z rozwijanej listy, jak pokazano poniżej? Metody opisane w tym artykule mogą pomóc w rozwiązaniu problemu.


Utwórz listę rozwijaną z wieloma opcjami z kodem VBA

Ta sekcja zawiera dwa kody VBA, które ułatwiają dokonywanie wielu wyborów na listach rozwijanych w arkuszu. Dwa kody VBA mogą osiągnąć:

Kod VBA 1: Zezwalaj na wiele wyborów z listy rozwijanej bez duplikatów
Kod VBA 2: Zezwalaj na wiele wyborów na liście rozwijanej bez duplikatów (usuń istniejące elementy, wybierając je ponownie)

Możesz zastosować jeden z następujących kodów VBA, aby dokonać wielu wyborów na liście rozwijanej w arkuszu kalkulacyjnym w programie Excel. Proszę wykonać następujące czynności.

1. Otwórz arkusz roboczy zawierający listy rozwijane sprawdzania poprawności danych, z których chcesz dokonać wielu wyborów. Kliknij prawym przyciskiem myszy kartę arkusza i wybierz Wyświetl kod z menu kontekstowego.

2. w Microsoft Visual Basic for Applications skopiuj poniższy kod VBA do okna kodu. Zobacz zrzut ekranu:

Kod VBA 1: Zezwalaj na wiele wyborów z listy rozwijanej bez duplikatów

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. wciśnij inny + Q klucze do zamknięcia Microsoft Visual Basic for Applications okno.

Teraz możesz wybrać wiele elementów z listy rozwijanej w bieżącym arkuszu.

Przypuśćmy, że przypadkowo wybrałeś element i musisz go usunąć bez czyszczenia całej komórki i rozpoczynania od nowa. Poniższy kod VBA 2 może ci wyświadczyć przysługę.

Kod VBA 2: Zezwalaj na wiele wyborów na liście rozwijanej bez duplikatów (usuń istniejące elementy, wybierając je ponownie)

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

Uwagi:

1). Zduplikowane wartości nie są dozwolone na liście rozwijanej.
2). Powyższy kod VBA 2 został dostarczony przez naszego entuzjastycznego użytkownika Kena Gardnera w dniu 2022/07/11.
3). Zapisz skoroszyt jako Skoroszyt Excel z włączoną obsługą makr aby kod działał w przyszłości.
4). Po dodaniu kodu VBA 2 możesz usunąć istniejący element, wybierając go ponownie z listy rozwijanej. Zobacz poniższy gif:


Z łatwością twórz rozwijaną listę z wieloma opcjami za pomocą niesamowitego narzędzia

Tutaj gorąco polecamy Lista rozwijana wielokrotnego wyboru cechą Kutools dla programu Excel dla Was. Dzięki tej funkcji możesz łatwo wybrać wiele elementów z listy rozwijanej w określonym zakresie, bieżącym arkuszu, bieżącym skoroszycie lub wszystkich otwartych skoroszytach, zgodnie z potrzebami.

Przed złożeniem wniosku Kutools dla programu ExcelProszę pobierz i zainstaluj najpierw.

1. kliknij Kutools > Lista rozwijana > Lista rozwijana wielokrotnego wyboru > Ustawienia. Zobacz zrzut ekranu:

2. w Ustawienia listy rozwijanej wielokrotnego wyboru okno dialogowe, skonfiguruj w następujący sposób.

  • 2.1) Określ zakres stosowania w Stosuje się do Sekcja. W tym przypadku wybieram Bieżący arkusz roboczy z Określony zakres Lista rozwijana;
  • 2.2) W Kierunek tekstu sekcja, wybierz kierunek tekstu w zależności od potrzeb;
  • 2.3) W Separator wprowadź separator, którego będziesz używać do oddzielania wielu wartości;
  • 2.4) Sprawdź Nie dodawaj duplikatów Okno w Opcje sekcja, jeśli nie chcesz tworzyć duplikatów w komórkach listy rozwijanej;
  • 2.5) Kliknij OK przycisk. Zobacz zrzut ekranu:

3. Proszę kliknąć Kutools > Lista rozwijana > Lista rozwijana wielokrotnego wyboru aby włączyć tę funkcję.

Teraz możesz wybrać wiele elementów z listy rozwijanej w bieżącym arkuszu lub dowolnym zakresie określonym w kroku 2.

  Jeśli chcesz skorzystać z bezpłatnego okresu próbnego (30-dzień) tego narzędzia, kliknij, aby go pobrać, a następnie przejdź do wykonania operacji zgodnie z powyższymi krokami.


Podobne artykuły:

Autouzupełnianie podczas pisania w rozwijanej liście programu Excel
Jeśli masz listę rozwijaną do sprawdzania poprawności danych z dużymi wartościami, musisz przewinąć listę tylko po to, aby znaleźć właściwą, lub wpisać całe słowo bezpośrednio w polu listy. Jeśli istnieje metoda pozwalająca na automatyczne uzupełnianie podczas wpisywania pierwszej litery z rozwijanej listy, wszystko stanie się łatwiejsze. W tym samouczku przedstawiono metodę rozwiązania problemu.

Utwórz listę rozwijaną z innego skoroszytu w programie Excel
Utworzenie listy rozwijanej sprawdzania poprawności danych w arkuszach roboczych w skoroszycie jest dość łatwe. Ale jeśli lista danych potrzebnych do weryfikacji danych znajduje się w innym skoroszycie, co byś zrobił? W tym samouczku dowiesz się, jak szczegółowo utworzyć listę rozwijaną z innego skoroszytu w programie Excel.

Utwórz listę rozwijaną z możliwością wyszukiwania w programie Excel
W przypadku listy rozwijanej z wieloma wartościami znalezienie odpowiedniej nie jest łatwą pracą. Wcześniej wprowadziliśmy metodę automatycznego uzupełniania listy rozwijanej po wpisaniu pierwszej litery w rozwijanym polu. Oprócz funkcji autouzupełniania, możesz również umożliwić przeszukiwanie listy rozwijanej, aby zwiększyć wydajność pracy w znajdowaniu odpowiednich wartości na liście rozwijanej. Aby umożliwić przeszukiwanie listy rozwijanej, wypróbuj metodę opisaną w tym samouczku.

Automatycznie wypełniaj inne komórki podczas wybierania wartości na liście rozwijanej programu Excel
Załóżmy, że utworzyłeś listę rozwijaną na podstawie wartości w zakresie komórek B8: B14. Po wybraniu dowolnej wartości z listy rozwijanej chcesz, aby odpowiednie wartości w zakresie komórek C8: C14 były automatycznie wypełniane w wybranej komórce. Aby rozwiązać problem, skorzystaj z metod przedstawionych w tym samouczku.

Więcej samouczka dla rozwijanej listy ...


Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół
Sortuj komentarze według
Komentarze (67)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, Dzięki za rozwiązanie i kod. Ale następnym krokiem jest upewnienie się, że użytkownik nie wybierze „duplikatów” wartości z listy rozwijanej. Np. jeśli na liście znajdują się 4 pozycje - pomarańcza, jabłko, banan, brzoskwinia i jeśli użytkownik wybrał już „pomarańczowy”, to Excel nie powinien pozwalać użytkownikowi na wybranie „pomarańczy” LUB ta opcja powinna zostać usunięta z pozostałej części Lista. Czy możesz opublikować kod, aby wykonać tę funkcję. Dzięki. jazdyjski
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Yezdi, Dziękuję za komentarz. Kod został zaktualizowany i teraz żadne zduplikowane wartości nie są dozwolone na liście rozwijanej. Dzięki. Światło słoneczne
Ten komentarz został zminimalizowany przez moderatora na stronie
Wspaniale, że pozwala to na wielokrotny wybór, ale jak skomentował @Yezdi, stwierdzam, że doda jeden lub kilka duplikatów, nawet jeśli ich nie wybiorę. Tak więc obecnie jest to rozwiązanie 80%... jedno ulepszenie od ideału. Nie jestem koderem VB lub zaoferowałbym rozwiązanie.
Ten komentarz został zminimalizowany przez moderatora na stronie
Możesz zmienić kod w następujących wierszach, aby zapobiec duplikatom: If xValue2 "" Then Target.Value = xValue1 & ", " & xValue2 End If To: If xValue2 "" Then If CheckIfAlreadyAdded(xValue1, xValue2) = False Then Target .Value = xValue1 & ", " & xValue2 Else Target.Value = xValue1 End If End If And następnie dodaj następującą funkcję: Private Function CheckIfAlreadyAdded(ByVal sText As String, sNewValue As String) As Boolean CheckIfAlreadyAdded = False Dim WrdArray() As String WrdArray() = Split(sText, ",") For i = LBound(WrdArray) To UBound(WrdArray) If Trim(WrdArray(i)) = Trim(sNewValue) Then CheckIfAlreadyAdded = True Next i End Function -- prawdopodobnie jest lepsze sposoby kodowania, ale na razie działa.
Ten komentarz został zminimalizowany przez moderatora na stronie
Właśnie zdałem sobie sprawę, że nie wyszedłem z pętli w nowej funkcji, jeśli warunek został ustawiony, więc nie musimy sprawdzać innych wpisów.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć. Dziękuję za kod i dodatek do limitu duplikatów. Jeszcze jedna prośba - jakie należałoby dodać/zmienić, aby umożliwić wielokrotny wybór tylko w jednej lub dwóch określonych kolumnach? Ten kod ponownie dodaje wiersze tekstu do „zwykłych” komórek, jeśli poprawię literówkę lub dokonam zmiany lub uzupełnienia tekstu w komórce, zamiast po prostu zachowywać się „normalnie” i akceptować zmianę (bez ponownego dodawania całego tekstu). Na przykład kolumna A jest kolumną „zwykłą”. Piszę zdanie „Jakich trzech rzeczy najbardziej pragniesz?” Kolumna B to kolumna „listy”, w której chcę mieć możliwość wybrania tylko jednej wartości (w tym przypadku powiedzmy imię dziecka). Kolumna C to kolejna kolumna „listy”, w której użytkownik musi mieć możliwość wybrania wielu pozycji (co ten kod pozwala mi zrobić doskonale). Idąc dalej, zdaję sobie sprawę, że popełniłem literówkę w kolumnie A i chcę ją poprawić. W obecnej wersji kodu, jeśli wejdę (dwukrotne kliknięcie, F2) i dokonam korekty słowa „elementy”, w mojej komórce otrzymam następujący wynik: „Jakie trzy elementy chcesz najbardziej? Jakie są te trzy rzeczy, których najbardziej potrzebujesz?" z góry dziękuję za pomoc (od użytkownika, który NAPRAWDĘ lubi VBA, ale wciąż jest na najwcześniejszym etapie nauki!)
Ten komentarz został zminimalizowany przez moderatora na stronie
Udało mi się zmusić kod do działania, ale kiedy zapisałem dokument (z włączonymi makrami), zamknąłem go i wróciłem, kod już nie działał (choć nadal tam był). Nie wiem, co zrobiłem źle. Jakieś pomysły?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Cynthia, Jeśli oryginalny autor nie odpowie, zdobędę odpowiedź, ale znowu będę przed komputerem dopiero 29 grudnia. Nie jestem też programistą VBA. Tym, co możesz w międzyczasie zrobić, jest wyszukiwanie w Google, jak zidentyfikować numer kolumny i pozwolić uruchomić kod tylko wtedy, gdy dane są edytowane w tej konkretnej kolumnie (kolumnach). Zrobiłem to, ale kod jest na moim komputerze służbowym i nie mogę go w tej chwili przywołać, może spróbuj umieścić debug.print na target.column lub coś w tym stylu, aby sprawdzić, czy daje ci numer edytowanej kolumny . Przykro nam, Jennifer, nie wiem, jaki masz problem :(
Ten komentarz został zminimalizowany przez moderatora na stronie
@Cynthia, Jeśli nadal jest to wymagane, powinieneś być w stanie zrobić coś takiego, aby upewnić się, że kod działa tylko w określonych kolumnach, w moim przypadku w kolumnach 34 i 35: If (Target.Column 34 And Target.Column 35) Then Exit Sub 'Umieść ten kod na początku po swoich deklaracjach dim
Ten komentarz został zminimalizowany przez moderatora na stronie
[cytat]@Cynthia, Jeśli nadal jest to wymagane, powinieneś być w stanie zrobić coś takiego, aby upewnić się, że kod działa tylko w określonych kolumnach, w moim przypadku w kolumnach 34 i 35: If (Target.Column 34 And Target.Column 35) Następnie Exit Sub 'Umieść ten kod na początku po swoich deklaracjach dimprzez Mervyna[/quote] Cześć @Mervyn, Całkowicie zgubiłem wątek, ale bardzo dziękuję za odpowiedzi. Próbowałem zastosować If (Target.Column 34 And Target.Column 35) Then Exit Sub (moja wersja czyta If (Target.Column4 And Target.Column5) Then Exit Sub, jak podałeś, ale otrzymuję „Run-time błąd „438”: Obiekt nie obsługuje tej właściwości lub metody „” błąd w tym nowym wierszu. Oto kilka pierwszych wierszy mojego kodu: Private Sub Worksheet_Change(ByVal Target As Range) Dim xRng As Range Dim xValue1 As String Dim xValue2 As String Jeśli (Target.Column4 and Target.Column5) To zakończ podrzędną Jeśli docelowa.liczba > 1 Następnie zakończ podrzędną w przypadku błędu Wznów Dalej Mój arkusz ma tylko 6 kolumn: Pytanie | Odpowiedź | Kategoria | Podkategoria | Tagi | Link do zdjęcia Potrzebuję tylko wielu rozwijanych list wartości w podkategoriach i tagach (kolumny 4 i 5). Będę dalej szukał informacji, jak zasugerowałeś 12 grudnia, i sprawdzę link podany przez organizację charytatywną.
Ten komentarz został zminimalizowany przez moderatora na stronie
Jeśli kolumna docelowa <> 34 to zakończ sub

'Umieść ten kod na początku po swoich deklaracjach dim
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Obecnie używam tej formuły i wszystkie kolumny z walidacją danych mają teraz opcję wielokrotnego wyboru, jednak chcę ograniczyć wielokrotny wybór tylko do jednej kolumny. Czy ktoś może edytować tę formułę za mnie, aby wielokrotny wybór można było zastosować tylko do Kolumny4? Dzięki :) Private Sub Worksheet_Change (ByVal Target As Range) 'Zaktualizowano: 2016/4/12 Dim xRng As Range Dim xValue1 As String Dim xValue2 As String Jeśli Target.Count > 1 Następnie wyjdź z Sub po błędzie Wznów Dalej Ustaw xRng = Komórki. SpecialCells(xlCellTypeAllValidation) Jeśli xRng to nic, to zakończ sub Application.EnableEvents = False Jeśli nie Application.Intersect(Target, xRng) to nic, to xValue2 = Target.Value Application.Undo xValue1 = Target.Value Target.Value = xValue2 " Jeśli 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 Każda pomoc będzie mile widziana!
Ten komentarz został zminimalizowany przez moderatora na stronie
Działa to dobrze, ale nie mogę usunąć wybranego elementu. Jakieś sugestie na wypadek, gdybym przypadkowo coś kliknął i musiał to usunąć bez (miejmy nadzieję) wyczyszczenia całej komórki i rozpoczęcia od nowa? Również dla tych, którzy chcą zdefiniować kolumnę lub kolumny, Contextures ma świetny dodatek do dostarczonego tutaj kodu, który pozwala to zrobić. http://www.contextures.com/excel-data-validation-multiple.html#column
Ten komentarz został zminimalizowany przez moderatora na stronie
[cytat]To działa dobrze, ale nie mogę usunąć wybranego elementu. Jakieś sugestie na wypadek, gdybym przypadkowo coś kliknął i musiał to usunąć bez (miejmy nadzieję) wyczyszczenia całej komórki i rozpoczęcia od nowa? Również dla tych, którzy chcą zdefiniować kolumnę lub kolumny, Contextures ma świetny dodatek do dostarczonego tutaj kodu, który pozwala to zrobić. http://www.contextures.com/excel-data-validation-multiple.html#columnprzez organizację charytatywną[/quote] Kod działa dobrze. Jednak nie mogę usunąć zaznaczenia elementu. Kiedy chcę usunąć element z zaznaczenia, po prostu nie jest on usuwany. Czy ktoś inny też doświadcza tego problemu? [/quote] Cześć wszystkim, Wszelkie rozwiązania tego problemu znalezione.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, Kod działa dobrze. Jednak nie mogę usunąć zaznaczenia elementu. Kiedy chcę usunąć element z zaznaczenia, po prostu nie jest on usuwany. Czy ktoś jeszcze doświadcza tego problemu?
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy była odpowiedź na ten problem. To ten sam problem, który mam. Wygląda na to, że nie ma sposobu na usunięcie wybranego elementu.
Ten komentarz został zminimalizowany przez moderatora na stronie
usuń zawartość komórki, a następnie wybierz ponownie
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć wszystkim, mam ten kod na arkuszu Excela i czyszczenie zawartości z listy rozwijanej po wybraniu komórki - wiem, jaka część kodu to robi (część, która mówi „fillRng.ClearContents”) i ja próbowałem użyć niektórych z powyższych, aby to naprawić bezskutecznie ... Jestem nowy w programowaniu VBA itp. Czy ktoś może zaoferować pomoc, jak to zmienić, aby po wybraniu komórki nie było jasne, a wpisy nie były zduplikowane proszę? Opcja Jawne Dim fillRng As Range Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Qualifiers As MSForms.ListBox Dim LBobj As OLEObject Dim i As Long Set LBobj = Me.OLEObjects("ListBox1") Set Qualifiers = LBobj.Object Jeśli Target.Row > 3 i Target.Column = 3 Następnie ustaw fillRng = Target With LBobj .Left = fillRng.Left .Top = fillRng.Top .Width = fillRng.Width .Height = 155 .Visible = True End With Else LBobj.Visible = False If Not fillRng to nic Then fillRng.ClearContents z kwalifikatorami If .ListCount 0 Then For i = 0 To .ListCount - 1 If fillRng.Value = "" Then If .Selected(i) Then fillRng.Value = .List(i) Else If .Selected(i) Then 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 = Nic Koniec Jeśli Koniec Jeśli Koniec Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć wszystkim, mógłbym idealnie zrobić moją listę rozwijaną, ale moje pytanie brzmi: kiedy wybieram wszystkie potrzebne elementy, przechodzi jeden po drugim w poziomie przez komórkę, na przykład: żółty, zielony, czarny, czerwony. Ale jak mogę to zrobić w pionie?, bardziej jak na przykład: Pomarańczowy czarny żółty Czerwony Ponieważ w poziomie komórka staje się dość długa przy zaznaczaniu wielu elementów. Czy możesz mi powiedzieć, czy jest jakiś sposób, aby to zrobić?. Dziękuję, Desiree
Ten komentarz został zminimalizowany przez moderatora na stronie
Udało mi się użyć tego kodu i pomyślnie utworzyć listy rozwijane wielokrotnego wyboru. Działało, kiedy zamykałem i otwierałem ponownie w różne dni. Jednak teraz nie wszystkie komórki, które pierwotnie wybrałem, umożliwiają wielokrotny wybór. Tylko te zrobione wcześniej, pomimo użycia kodu dla całego arkusza kalkulacyjnego. Możesz pomóc?
Ten komentarz został zminimalizowany przez moderatora na stronie
Mam ten sam problem.
Ten komentarz został zminimalizowany przez moderatora na stronie
komórki są najprawdopodobniej zablokowane, kliknij prawym przyciskiem myszy wszystkie z nich, przejdź do formatowania komórek, ochrony, a następnie odznacz opcję zablokowanej komórki
Ten komentarz został zminimalizowany przez moderatora na stronie
Utworzyłem listę rozwijaną, na której można wybrać wiele opcji tekstowych, takich jak „odżywianie”, „waga” i „praca” dla każdego powodu dzwoniącego. Mam stronę podsumowującą, na której chcę zobaczyć, ile z każdego powodu zostały wskazane w danym miesiącu. Jakiej formuły użyję, aby powiedzieć programowi Excel, aby wyciągnął i zliczył każdy z nich osobno w danym miesiącu? Obecnie, tak jak mam to ustawione, zgadza się poprawnie tylko wtedy, gdy mam w komórce jeden powód dla każdego dzwoniącego.
Ten komentarz został zminimalizowany przez moderatora na stronie
Dobry dzień,
Przepraszamy, nie mogę pomóc w rozwiązaniu tego problemu. Daj mi znać, jeśli znajdziesz odpowiedź.
Ten komentarz został zminimalizowany przez moderatora na stronie
Próbuję utworzyć 4 kolumny z listami rozwijanymi, w których mogę wybrać wiele wartości. Jak zmodyfikować „listę rozwijaną z wieloma wyborami” kodu VBA, aby po kliknięciu wartości, która została już wpisana, została usunięta z komórki? Z góry dziękuję.
Ten komentarz został zminimalizowany przez moderatora na stronie
Drogi Randy,
Co masz na myśli "kiedy klikam na wartość, która została już wpisana, usuwa ją z komórki?"
Ten komentarz został zminimalizowany przez moderatora na stronie
mam to samo pytanie. Moja lista rozwijana nie zapamiętuje wybranych wartości. Jeśli ktoś kliknie komórkę, która została już wypełniona (nie przez niego, ale przez kogoś innego), wybrane wartości są usuwane, a komórka jest ponownie pusta.
Ten komentarz został zminimalizowany przez moderatora na stronie
Używam poniższego kodu, aby zezwolić na zaznaczanie wielokrotne w wielu arkuszach, ale kiedy przechodzę do innego arkusza w skoroszycie, zaznaczanie wielokrotne znika. Kiedy zapiszę plik i wrócę, będzie działać dla jednej karty z kodem, ale ponownie, gdy kliknę inną kartę z kodem, przestanie działać. Jakiś pomysł, jak to naprawić, więc jeśli kliknę arkusz roboczy z kodem VBA, zawsze zezwoli na wielokrotny wybór?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, ich bin totaler VBA Laie. Ich versuche den Code so zu modifizieren, dass
a) die Mehrfachauswahl nicht in allen, sondern nur ein zwei Spalten aktiv ist
b) 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 auf, dazus D gehört. Beim aktuellen Code müsste ich Eingaben entfernen und neu auswählen).
Dzięki z góry!
Ten komentarz został zminimalizowany przez moderatora na stronie
Nie mogę kontynuować tworzenia wielokrotnego wyboru z rozwijanej listy. Wysłuchałem tutoriala i przeczytałem materiał, ale nadal nie mogę tworzyć. Czy ktoś może mi pomóc?
Ten komentarz został zminimalizowany przez moderatora na stronie
Wiem, że może to być całkowicie losowe, ale używam odmiany VBA bez problemu. Z wyjątkiem jednej strony, jeśli wybierzesz pierwsze trzy opcje, nie pozwoli ci wybrać czwartej. Pozwoli ci to wybrać piątą, szóstą i tak dalej, ale nie czwartą opcję. Myśli?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Robert,
Przetestowałem kod, ale nie znalazłem problemu, o którym wspomniałeś. Czy możesz mi powiedzieć, której wersji programu Excel używasz? Dziękuję za Twój komentarz.
Nie ma tu jeszcze żadnych komentarzy
Pokaż więcej

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL