Stránka 1 z 1

VBA - find - proč makro nefunguje?

Napsal: 02 bře 2012 08:47
od Branscombe
Ahoj, neví někdo proč mi makro v přiloženém souboru nevyhledá hodnotu Datum2 ve sloupci hodnot ?

Nějak s těmi vyhledávacími funkcemi poslední dobou bojuji :-/

Re: VBA - find

Napsal: 02 bře 2012 08:56
od Azuzula
Ahoj,
možná to bude tím, že tam není makro? Nebo je to makro v jiném sešitu, ale v tomhle není a ani není jasné kde je v tomto dokumentu Datum2.

Re: VBA - find - proč makro nefunguje?

Napsal: 02 bře 2012 10:04
od Branscombe
:-D No tím to možná bude .. Nevím kam zmizelo, když jsem to snad s ním ukládal nicméně tam bylo toto:

Kód: Vybrat vše

Option Explicit

Sub Vyhledej()

Dim Datum As Range, Datum2 As Range

Set Datum = Worksheets("List1").Range("C1")
With Worksheets("List1").Range("A1:A31")
    Set Datum2 = .Find(Mesic, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
End With

Datum2.Select

Set Datum = Nothing
Set Datum2 = Nothing

End Sub


Re: VBA - find - proč makro nefunguje?

Napsal: 02 bře 2012 10:48
od Azuzula
Použila bych následující.

Kód: Vybrat vše

Sub vyhledej()
Dim datum As Date
Dim oblast As Variant
Dim bunka As Variant

datum = Range("C1")
Set oblast = Range("A1:A31")

    For Each bunka In oblast
        If bunka = datum Then
        ActiveSheet.Cells(bunka.Row, 1).Select
        Exit For
        End If
    Next
End Sub

Prohledá zadanou oblast a označí buňku se shodou.

Re: VBA - find - proč makro nefunguje?

Napsal: 02 bře 2012 11:01
od Branscombe
Hm... Díky, ale to mi neřeší můj problém, jelikož tohle je sakra zdlouhavé ! :-(

To je uplně jiné řešení, které jsem nepoužil, jelikož mi záleží na rychlosti a nemohu takto ztrácet čas v makru :-/

Neví někdo jak přizpůsobit vyhledávací příkaz Worksheets("").Range("").Find(....) ?

Re: VBA - find - proč makro nefunguje?

Napsal: 02 bře 2012 11:17
od Azuzula
Nevím co je na tomhle zdlouhavé, i 3000 buněk zvládne během mžiku, ale je fakt, že přes milion buněk makru už pár sekund zabere.

Našla jsem tohle a funguje to nejspíš jak potřebujete. Stačí jen hledat.

Kód: Vybrat vše

Sub Find_First()
    Dim FindString As Date
    Dim Rng As Range
    FindString = CLng(Range("C1"))
    With Sheets("List1").Range("A:A")
        Set Rng = .Find(What:=FindString, _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlFormulas, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
        If Not Rng Is Nothing Then
            Application.Goto Rng, True
        Else
            MsgBox "Nothing found"
        End If
    End With

End Sub

Re: VBA - find - proč makro nefunguje?  Vyřešeno

Napsal: 02 bře 2012 12:34
od Branscombe
Tak už jsem zjistil proč toto funguje a to moje ne, bylo to v definování kam se má dívat, konkrétně "LookIn:=xlFormulas" .. Taková blbost, jinak díky za rady