Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Excel 97 - szukanie danych
anonim




Typ: Nie zarejestrowany
Excel 97 - szukanie danych

Czy można zmienić coś w ustawieniach excela żeby znajdowanie danej wartości odbywało się nie od 1 wiersza w dół lecz od ostatniego zapisanego w górę.
Biorąc pod uwagę że szukamy danej zaznaczając całą kolumnę i ustawiamy szukanie wartości.

28-10-2004 14:03
  
Piotr T




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

Nagraj makro, a następnie zmodyfikuj je i po sprawie


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

04-11-2004 08:38
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
anonim




Typ: Nie zarejestrowany
Co mam zmienić ??????

Nagrałem makro i niewiem co mam zmienić żeby szukało w górę a nie w dół. Może mi podpowiesz Piotrze T.

Columns("D".Find(What:="2", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False).Activate

04-11-2004 12:20
  
Piotr T




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

Sub FIND()
' żałóżmy że w kolumnie C znajdują się jakieś dane
' i chcemy wyszukać jakąś wartość
'--------------------------------
Dim T As Long
Dim WARTOSC As String
Dim OK As Boolean
WARTOSC = "Tekst szukany"
OK = False
'--------------------------------
    Range("C65536" ).Select
    Range(Selection, Selection.End(xlUp)).Select
    '
        For T = Selection.Row To 1 Step -1
            If Cells(T, Columns("C" ).Address) = WARTOSC Then
            OK = True: Exit For
            End If
        Next
       
    ' jeśli OK = prawda to kursor zostanie ustawiony na znalezionej pozycji
    If OK = True Then
 
        Cells(T, Columns("C" ).Address).Select
        MsgBox "Znaleziono w wierszu: " & T
    Else ' w przeciwnym wypadku
        Cells(1, 1).Select
        MsgBox "nie znaleziono", vbCritical
    End If
   
End Sub

[Post edytowany dnia 04-11-2004 12:50 przez Piotr T]


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

04-11-2004 12:48
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
anonim




Typ: Nie zarejestrowany
Znalazłem co trzeba zmienić aby szukał w górę!!!!!!!!!!!

Tylko nie wiem w jaki sposób zadać funkcji find zakres komórek do przeszukiwania.
O ile columns("D : D" działa bez zaznaczania zakresu to Range(" D2 : D560 " bez zaznaczenia nie działa. Muszę najpierw zrobić select i dopiero selection.columns("D : D".find .........itd.
Co zrobić żeby find jażyło bez zaznaczania zakresu??????

04-11-2004 13:49
  
losmac
"profesorek"




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


Columns("D".Find(What:="2", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False).Activate

zamień na:

ActiveSheet.Range("D2560".Find(What:="2", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False).Activate

i powinno działać bez zaznaczania


_____________________________________________
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ś

04-11-2004 21:49
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
anonim




Typ: Nie zarejestrowany
Niestety nie działa tak jak chciałem.

Na początek małe sprostowanie.Zmieniłem nieco ten kawałek kodu aby przekazywał mi do zmiennej aaa nr wiersza w którym znalazł szukaną wartość.Wygląda to tak :

aaa = activesheet.range("d5560".Find(What:="2", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:= _
        False).Row

i niestety nie podaje numeru wiersza

Jeśli zmienię to na :

Range("d5560".Select
aaa = Selection.Find(What:="2", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:= _
        False).Row

to działa dobrze i podaje nr wiersza, ale zaznacza cały przeszukiwany zakres.

Chciałbym aby przeszukał i podał nr wiersza bez zaznaczania zakresu.

Dlaczego jeśli zrobię

aaa = activesheet.Columns("D".Find(What:="2", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False).Row

to znajduje mi bez zaznaczania całej kolumny, a zakres zaznacza???????

Myślę że to jest określone już odgórnie i nie da się tego ruszyć.
Pozostaje mi wyłączenie odświerzania ekranu aby nie migał mi zaznaczony zakres przy szukaniu.

Pozdro dla wyszstkich
NARA

05-11-2004 12:56
  
Piotr T




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

Widzę anonimie że nie skorzystałeś lub nie sprawdziłes procedury, którą Ci wcześniej wypisałem - tak więc ja się już wyłączam z tej dyskusji i radź sobie niestety sam
Btw: i naucz się korzystać z BreakPoint oraz Watch, a będziesz wtedy mógł sprawdzić działanie zmiennych


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

05-11-2004 16:03
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
Wszystkich odpowiedzi: 7 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1