Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Edytowanie wylacznie zdefiniowanych komorek
binabik




Typ: neutral
Postów: 7
Zarejestrowany: Sep 2004
Edytowanie wylacznie zdefiniowanych komorek

Witam
mam taki problem: jak zbudowac arkusz, w ktorym edytowalne sa 3 komorki (np. A2:C2); po wypelnieniu A2, focus przeskakuje do B2,a po wypelnieniu B2 - do C2. Nastepnie, chce zeby nastapila zmiana wiersza i znowu to samo (np. A5:C5).
Ma to byc idioto-odporne, wprowadzac dane bedzie osoba majaca niewielkie pojecie o Excelu.

pozdrawiam i dziekuje

10-10-2004 15:28
Pokaż profil binabik  Wyślij email do binabik        3159485
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

Oczywiście arkusz musi być chroniony hasłem a komórki w których będzie mozna pisać muszą być odblokowane we właściwościach formatowania komórek w sekcji Ochrona

A w sekcji Workbook wstawiasz tą instrukcję

Private Sub Workbook_Open()
ActiveWorkbook.Sheets("Arkusz1" ).EnableSelection = xlUnlockedCells
End Sub



_____________________________________________
Visual Basic.NET - Mercedes dla programistów

10-10-2004 19:05
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
binabik




Typ: neutral
Postów: 7
Zarejestrowany: Sep 2004

thx, ale chyba nie opisalem dokladnie problemu.
otóż:
edytowalne maja byc tylko dwa zakresy A22 oraz A55. Po nacisnieciu <enter> focus ma przesunac sie automatycznie na prawo do kolejnej komorki. Z D2 ma przeskoczyc do A5. Proba klikniecia gdzies indziej lub przeskoczenia kursorem ma byc zablokowana.

dzieki za szybka reakcje

10-10-2004 23:01
Pokaż profil binabik  Wyślij email do binabik        3159485
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

No i tak to będzie działać - tylko odblokowane komórki będą posiadały fokus


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

11-10-2004 07:51
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Piotrze, ja myślę, że nasz binabik nie wie, że można blokować komórki.

Zablokuj komórki - binabik i zostaw tylko te aktywne, które chcesz.
Zaznacz wszystkie komórki w tym arkuszu i wejdź do polecenia "Formatuj komórki". W oknie, które się pojawi w zakładce Ochrona zaznacz pole wyboru ochrona.
Następnie zaznacz te komórki, które mają byc dostępne dla użytkownika i znowu wejdź do polecenia "Formatuj komórki". W oknie, które się pojawi w zakładce Ochrona odznacz pole wyboru ochrona.
W menu Narzędzia->Ochrona wybierz polecenie chroń arkusz i zablokuj dostęp do obiektów tego arkusza za pomocą hasła.

Jeśli to nie wystarczy, daj znać. Programowo też da się to zrobić.

[Post edytowany dnia 12-10-2004 21:56 przez losmac]


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

12-10-2004 21:56
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
binabik




Typ: neutral
Postów: 7
Zarejestrowany: Sep 2004

sorki ze dopiero dzis, wczesniej nie mialem czasu.
losmac: mam jako takie pojecie o Excelu. wiem co to znaczy chronic arkusz i blokowac komorki. srednio przyjemne jest byc potraktowanym jak blondynka, :).

ale zapewne to moja wina, niezbyt scisle wyjasnilem problem, chyba. otoz, po wlaczeniu ochrony arkusza, owszem zblokowane komorki beda niedostepne, ale to za malo. nacisniecie <enter> powoduje ze zaznacza sie kolejna komorka i bez znaczenia jest czy jest ona zblokowana czy nie, prawda? mi zalezy zeby nacisniecie <enter> skutkowalo przeskokiem focusa do nastepnej EDYTOWALNEJ komorki. dodam ze nie sa one ani w jednej kolumnie ani w jednym wierszu. prosciej juz tego wyjasnic nie potrafie.

rozwiazanie problemu zaproponowano mi poza forum. oto kod:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim kolumna As Integer
Dim wiersz As Integer
Dim wartosc
If ActiveCell.Column > = 4 Then Exit Sub
If ActiveCell.Row < > 3 And ActiveCell.Row < > 6 Then Exit Sub
kolumna = ActiveCell.Column
wiersz = ActiveCell.Row
wartosc = Cells(wiersz, kolumna).Value
If wiersz = 3 Then
If kolumna < = 2 Then
Cells(wiersz - 1, kolumna + 1).Select
Exit Sub
End If
Cells(wiersz + 2, 1).Select
End If
If wiersz = 6 Then
If kolumna <= 2 Then
Cells(wiersz - 1, kolumna + 1).Select
Exit Sub
End If
Cells(2, 1).Select
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If ActiveCell.Column > = 4 Then
Cells(2, 1).Select
Exit Sub
End If
If ActiveCell.Row < > 2 And ActiveCell.Row < > 5 Then
Cells(2, 1).Select
Exit Sub
End If
End Sub

bardzo dziekuje za pomoc.
pozdrowienia

23-10-2004 18:26
Pokaż profil binabik  Wyślij email do binabik        3159485
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Sorry binabik...
Nie chcałem Cię potraktować jak blondynkę
Zresztą, sam napisałeś, że za mało sprecyzowałeś problem...

Przedstawiony przez Ciebie kod, zaproponowany poza forum jest dla mnie mało zrozumiały, bo co tam robi ActiveCell, skoro w parametrach obu procedur przekazuje się Target jako obiekt Range(zakres komórek lub pojedyńczą komórkę).

Ale więcej nic nie podpowiem, bo jak potestujesz to sam dojdziesz do wniosku, że można to zrobić inaczej (moim zdaniem, nawet lepiej).


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

23-10-2004 18:50
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

Łoł po co tyle kombinacji z kodem i wypisywanie numerów wierszy i kolumn
------------------------------------
Wysyłam Ci arkusz beż żadnych fajerwerków i to działający tak jak chcesz
------------------------------------
Mam nadzieję że pocztę otrzymałeś
--- A oto krótkie solution

1. zaznaczasz tylko tek komórki, które mają być niechronione - czytaj odblokowane, bo standartowo wszystkie mają włączony status ochrony na Zablokuj

2. Wklejasz poniższy kod do sekcji Workbook nacisając klawisz Alt+F11

Private Sub Workbook_Open()
ActiveWorkbook.Sheets("Arkusz1" ).EnableSelection = xlUnlockedCells
End Sub


3. Włączasz ochronę arkusza i go zapisujesz

4. Zamknij ten arkusz i go otwórz ponownie - i co... kursor skacze tylko po odblokowanych komórkach bez żadnych ceregieli

[Post edytowany dnia 23-10-2004 20:06 przez Piotr T]


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

23-10-2004 19:52
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
binabik




Typ: neutral
Postów: 7
Zarejestrowany: Sep 2004

Piotrze T jestes wielki!
chyba jestem blondynka!
dzieki mocno raz jeszcze, dziala jak zloto!

pozdrowienia

24-10-2004 19:00
Pokaż profil binabik  Wyślij email do binabik        3159485
Wszystkich odpowiedzi: 8 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1