Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Excel - Wprowadzanie danych TYLKO I WYŁĄCZNIE za pośrednictwem listy rozwijanej

barszczoo 28 Feb 2014 09:30 5295 10
  • #1
    barszczoo
    Level 9  
    Witam.

    Mam prostą listę rozwijaną, która nadaje statusy OK lub NOK w całej kolumnie.
    Niestety lista zezwala użytkownikom na wprowadzanie danych "z ręki" oraz wklejanie OK lub NOK do całego zakresu komórek. Dodatkowo mogą "przeciągnąć" w dół dany status i przypisać status do zbyt dużej ilości wierszy niż powinni.

    Chciałbym, aby użytkownik mógł wprowadzić dane do danej komórki tylko i wyłącznie za pomocą listy.

    Da się zrobić to konwencjonalnie?

    Z góry dzięki za info!
  • #2
    markoz7874
    Level 31  
    Włącz ochronę arkusza.
  • #3
    marek003
    Level 40  
    Jeżeli listę masz zorganizowaną jako "poprawność danych" to dana z ręki nie zostaje zaakceptowana.
    Niestety na kopiowanie danych poprawność danych nie pomoże.

    Jeżeli nie chcesz makr to może zamiast z poprawności danych skorzystaj z formantów formularza i pola kombinowanego, a dane do arkusza "przerzucaj" indeksem. Przy czym zablokuj komórki chroniąc arkusz.
  • #4
    markoz7874
    Level 31  
    marek003 wrote:
    ..
    Niestety na kopiowanie danych poprawność danych nie pomoże..

    Ale włączenie ochrony arkusza pomoże, umożliwiając równocześnie wstawianie danych w komórkach które nie są zablokowane.
  • #5
    marek003
    Level 40  
    Markoz7874, a spróbuj w swoim przykładzie zmienić OK na NOK tak jakbyś chciał normalnie to zrobić.

    Chyba nie o to chodzi autorowi.
  • #6
    markoz7874
    Level 31  
    marek003 wrote:
    Markoz7874, a spróbuj w swoim przykładzie zmienić OK na NOK tak jakbyś chciał normalnie to zrobić.

    Chyba nie o to chodzi autorowi.

    klikam na liste rozwijalna i zmieniam.
    U mnie działa - u Ciebie nie? Sprawdzałeś mój załączony arkusz?
  • #7
    marek003
    Level 40  
    Sprawdzam twój załącznik.
    U mnie on i pod E2003 i pod E2010 jeżeli chcę zmienić w pierwszej kolumnie OK na NOK lub odwrotnie pojawia się komunikat że komórka jest chroniona więc tylko do odczytu.

    Ale tak samo jest jak sam zrobię we własnym arkuszu podobną listę i zablokuje komórki - tak było od "zarania" dziejów z excelem :) i to ja się dziwie że u Ciebie to "chodzi".

    Może niech sprawdzi autor topiku czy u niego to działa.
  • #8
    markoz7874
    Level 31  
    marek003 wrote:
    Sprawdzam twój załącznik.
    U mnie on i pod E2003 i pod E2010 jeżeli chcę zmienić w pierwszej kolumnie OK na NOK lub odwrotnie pojawia się komunikat że komórka jest chroniona więc tylko do odczytu..

    U mnie (Excel 2000 9.0.3821 SR-1) działa. Nie twierdził bym tak, gdybym tego nie sprawdził.
    Owszem nie będzie to działać jeżeli zamiast wybrać z listy będziesz chciał wpisać OK z ręki - pojawi się komunikat. Podobnie nie zadziała, jeżeli zdefiniujesz sam listę wpisując ją ręcznie. Aby zadziałało musisz pobierać listę z komórek.
    Niestety nie mam w tej chwili możliwości sprawdzenia tego na nowszych wersjach excela :(

    Sprawdziłem na OneDrive i faktycznie tam nie działa. :(
  • #9
    barszczoo
    Level 9  
    Witam ponownie :)

    Międzyczasie, wpadłem na inne rozwiązanie. Porzuciłem listę rozwijaną i napisałem takiego oto makro:

    Sub Raportowanie_kompletacji()
    Dim Zlecenie As String, i, j As Long, Status As String, Komponent As String
    
    j = 0
    
    'odblokowanie arkusza
    ActiveSheet.Unprotect
    
    Zlecenie = ""
    Do
    Zlecenie = InputBox("Podaj numer zlecenia")
    Loop While (Zlecenie = "")
    
    
    For i = 1 To 1000
        If Cells(i, 4) = Zlecenie Then
        Status = MsgBox("Czy zlecenie zostalo skompletowane?", vbYesNo + vbDefaultButton1, "Pytanie")
            If Status = 6 Then
            Cells(i, 7) = "OK"
            j = 1
            Else
            Cells(i, 7) = "NOK"
            j = 1
                If Cells(i, 7) = "NOK" Then
                Komponent = InputBox("Podaj item brakujacego komponentu")
                Cells(i, 12).Value = Komponent
                End If
      
            End If
        
        End If
    
    Next i
    
    If j = 0 Then
        MsgBox "Nie ma takiego zlecenia w bazie danych."
    End If
    
    'blokada arkusza
        ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
            False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
            AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
            :=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
            AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
            AllowUsingPivotTables:=True
    
    End Sub
    


    Mam ustawione pod przyciskiem i użytkownik szuka swojego rekordu i odpowiada na pytania. Jeśli ma być OK, wpisze się Ok, a jak ma być NOK, to makro przypisze danej komórce NOK :)
    Arkusz jest początkowo chroniony, ale na samym początku makra odblokowuje się i po zakończeniu działania, znów się blokuje.

    Działa idealnie.

    @markoz7874,
    Sprawdzałem Twój plik i Excel nie pozwala nic wpisać dopóki nie wyłączy się ochrony arkusza. Po wyłączeniu ochrony można nadal wpisać dane "z ręki" lub wkleić (oczywiście tylko wartości OK lub NOK).
  • #10
    markoz7874
    Level 31  
    barszczoo wrote:
    ..
    Sprawdzałem Twój plik i Excel nie pozwala nic wpisać dopóki nie wyłączy się ochrony arkusza. Po wyłączeniu ochrony można nadal wpisać dane "z ręki" lub wkleić (oczywiście tylko wartości OK lub NOK).

    Niestety nic na to nie poradzę. Kolejne wersje Excela różnią się miedzy sobą, wiec to co działa w jednej nie musi funkcjonować w następnej.
    Co do rozwiązań z makrem, to nie ma żadnego problemu- z tym, że na początku ograniczałeś zakres rozwiązań do cyt.: "zrobić to konwencjonalnie".
  • #11
    barszczoo
    Level 9  
    markoz7874 wrote:

    Co do rozwiązań z makrem, to nie ma żadnego problemu- z tym, że na początku ograniczałeś zakres rozwiązań do cyt.: "zrobić to konwencjonalnie".


    Międzyczasie poza forum dowiedziałem się, że być może nie ma konwencjonalnego rozwiązania zaproponowanego przez MS Office. Dlatego też zacząłem sobie kombinować :)