Ogranicz wklejanie do rozwijanych komórek w programie Excel

6

Mam jeden arkusz programu Excel, który zawiera wiele kolumn rozwijanych. Powiedzmy, że jedna kolumna ma Test1, Test2 i Test3 jako wartości opcji rozwijanych. Komórki w tej kolumnie nie powinny akceptować innych wartości niż te. 3. Jeśli skopiuję i wkleję „XYZ” do tych komórek, nie powinien zaakceptować. Czy ktoś może mi pomóc, jak sobie z tym poradzić?

Charan Raju CR
źródło

Odpowiedzi:

7

Skonfiguruj sprawdzanie poprawności danych

Będziesz chciał użyć funkcji sprawdzania poprawności danych w programie Excel, aby ograniczyć komórki do określonego tekstu. W twoim przypadku: „Test1”, „Test2” i „Test3”

  1. Wybierz komórki, które powinny akceptować tylko wartości „Test1”, „Test2” i „Test3”
  2. Na karcie Dane w grupie Narzędzia danych kliknij przycisk Sprawdzanie danych .

    Lokalizacja sprawdzania poprawności danych na wstążce pakietu Office

  3. Z listy rozwijanej Zezwalaj: wybierz Lista

  4. W polu Źródło: wpisz Test1, Test2, Test3

    Ustawienia sprawdzania poprawności danych

  5. Kliknij OK, aby zastosować zmiany.

W tym momencie do każdej komórki wybranej w kroku 1 zostanie przypisana lista rozwijana. Użytkownicy arkusza kalkulacyjnego będą mogli wejść tylko do Test1 , Test2 lub Test3 . Jeśli spróbują wprowadzić cokolwiek innego, otrzymają następujący komunikat o błędzie:

wprowadź opis zdjęcia tutaj

W razie potrzeby można dostosować tekst komunikatu o błędzie, klikając kartę Alert błędów w kroku 4 powyżej.

Zapobiegaj kopiowaniu / wklejaniu w komórkach sprawdzonych pod kątem danych

Będzie to działać świetnie, Z WYJĄTKIEM w przypadku, gdy ktoś wklei zawartość nad komórkami. Jedynym sposobem, aby temu zapobiec, jest napisanie makra, które wykrywa aktualizacje komórek, określa, czy sprawdzanie poprawności danych jest włączone w komórkach, a następnie odmawia wklejenia, jeśli jest prawdziwe.

  1. Wybierz wszystkie komórki, które mają sprawdzanie poprawności danych i nazwij je DataValidationRange . Możesz nazwać zakresy komórek, wpisując nazwę po lewej stronie paska formuły, w której znajduje się adres komórki.
  2. W module kodu dla arkusza roboczego (na przykład Arkusz1) dodaj następujący kod:
Private Sub Worksheet_Change (ByVal Target As Range)
    „Czy zakres walidacji nadal podlega walidacji?
    Jeśli HasValidation (Range („DataValidationRange”)), to
        Wyjdź z Sub
    Jeszcze
        Zastosowanie
        MsgBox „Błąd: Nie można wkleić danych do tych komórek.” I _
        „Zamiast tego użyj menu, aby wprowadzić dane.”, VbCritical
    End If
Napis końcowy

Funkcja prywatna HasValidation (r) As Boolean
    „Zwraca wartość True, jeśli każda komórka w zakresie r używa sprawdzania poprawności danych
    Po błędzie Wznów dalej
    x = r.Validation.Type
    Jeśli Err.Number = 0, to HasValidation = True Else HasValidation = False
Funkcja zakończenia

Niestety VBA to jedyny sposób, aby zapobiec wklejeniu się przez komórki. To był problem z Walidacją danych w Excelu od samego początku. Mam nadzieję, że tak czy inaczej.


źródło
Cześć Tyler, dziękuję za pomoc. Działa dobrze, jeśli wpiszę lub kliknę komórkę i wkleję nieprawidłową wartość. Ale nie wyświetla żadnego komunikatu o błędzie, jeśli kliknę (pojedynczy) komórkę i wkleję.
Charan Raju CR
@Charan Zaktualizowałem odpowiedź o kod VBA wymagany do odmowy wklejenia. Niestety nie da się tego zrobić bez VBA.
0

Prostszym rozwiązaniem byłoby całkowite wyłączenie wklejania do skoroszytu. Właśnie znalazłem rozwiązanie tego problemu: http://www.vbaexpress.com/kb/getarticle.php?kb_id=373

Mjavon
źródło
Lepsza odpowiedź zawierałaby odpowiedź, a nie tylko link do niej.
Enigma
1
Witamy w Super User! Czy możesz edytować swoją odpowiedź, aby uwzględnić odpowiednie informacje z połączonej strony? Dzięki temu Twoja odpowiedź będzie przydatna, nawet jeśli połączona strona ulegnie zmianie lub zniknie. Dzięki!
Excellll,