Avatar billede steensommer Praktikant
14. januar 2004 - 14:02 Der er 10 kommentarer og
1 løsning

Søgeresultat i listbox

Hej

Jeg har lavet en søgning som jeg gerne ville vise i en listbox (Userform1.listbox1) men jeg har en anelse svært ved at finde den rigtige metode. Jeg har tidl fået hjælp til tilsvarende blot med søgning fra access men jeg synes ikke at det har hjulpet :0(
Her er koden (der lægger resultatet ind i resultat - den mellemregning ville det være dejligt at slippe for):

Sub FindEfterlysteDyr()
Sheets("Resultat").Range("A2:G1000").ClearContents
Application.ScreenUpdating = False
Dim Søg As String, twb As Workbook
Set twb = ThisWorkbook
Søg = InputBox("Indtast søgetekst")
If Søg <> "" Then
With Sheets("Efterlyste dyr").Range("C3:D1000")

    Set s = .Find(Søg, LookIn:=xlValues)
    If Not s Is Nothing Then
        firstAddress = s.Address
        Do
 
                      Set s = .FindNext(s)
           
            If Left(s.Address, 2) = "$C" Then
                With Sheets("Resultat").Range("C65536").End(xlUp)
                .Offset(1, -1) = s.Value
                .Offset(1, -2) = s.Offset(0, -2).Value
                .Offset(1, 0) = s.Offset(0, 1).Value
                .Offset(1, 1) = s.Offset(0, 2).Value
                .Offset(1, 2) = s.Offset(0, 3).Value
                .Offset(1, 3) = s.Offset(0, 4).Value
                .Offset(1, 4) = s.Offset(0, 5).Value
                End With
          ElseIf Left(s.Address, 2) = "$D" Then
                With Sheets("Resultat").Range("D65536").End(xlUp)
                .Offset(1, -1) = s.Value
                .Offset(1, -2) = s.Offset(0, -1).Value
                .Offset(1, -3) = s.Offset(0, -3).Value
                .Offset(1, 0) = s.Offset(0, 1).Value
                .Offset(1, 1) = s.Offset(0, 2).Value
                .Offset(1, 2) = s.Offset(0, 3).Value
                .Offset(1, 3) = s.Offset(0, 4).Value
                End With
            End If
         
          Loop While Not s Is Nothing And s.Address <> firstAddress
          MsgBox ("Fundne dyr ses på arket resultat")
       
        Else:
        MsgBox ("Ikke fundet")
        Exit Sub
       
        End If
End With
Exit Sub
Else
MsgBox ("Søgetekst skal indtastes")
End If

End Sub

vh Steen
Avatar billede kabbak Professor
15. januar 2004 - 22:34 #1
Hej Steen

Du skal have en userform1 og en listbox1

jeg har ikke rettet i din programering, bare tilføjet.

Sub FindEfterlysteDyr()
Sheets("Resultat").Range("A2:G1000").ClearContents
UserForm1.ListBox1.Clear  ' NY
Application.ScreenUpdating = False
Dim Søg As String, twb As Workbook
Set twb = ThisWorkbook
Søg = InputBox("Indtast søgetekst")
If Søg <> "" Then
With Sheets("Efterlyste dyr").Range("C3:D1000")

    Set s = .Find(Søg, LookIn:=xlValues)
    If Not s Is Nothing Then
        firstAddress = s.Address
        Do
 
                      Set s = .FindNext(s)
           
            If Left(s.Address, 2) = "$C" Then
                With Sheets("Resultat").Range("C65536").End(xlUp)
                .Offset(1, -1) = s.Value
                .Offset(1, -2) = s.Offset(0, -2).Value
                .Offset(1, 0) = s.Offset(0, 1).Value
                .Offset(1, 1) = s.Offset(0, 2).Value
                .Offset(1, 2) = s.Offset(0, 3).Value
                .Offset(1, 3) = s.Offset(0, 4).Value
                .Offset(1, 4) = s.Offset(0, 5).Value
                End With
      UserForm1.ListBox1.AddItem s.Value _
      & " " & s.Offset(0, -2).Value & " " & s.Offset(0, 1).Value _
      & " " & s.Offset(0, 2).Value & " " & s.Offset(0, 3).Value _
      & " " & s.Offset(0, 4).Value & " " & s.Offset(0, 5).Value 'NY
     
          ElseIf Left(s.Address, 2) = "$D" Then
                With Sheets("Resultat").Range("D65536").End(xlUp)
                .Offset(1, -1) = s.Value
                .Offset(1, -2) = s.Offset(0, -1).Value
                .Offset(1, -3) = s.Offset(0, -3).Value
                .Offset(1, 0) = s.Offset(0, 1).Value
                .Offset(1, 1) = s.Offset(0, 2).Value
                .Offset(1, 2) = s.Offset(0, 3).Value
                .Offset(1, 3) = s.Offset(0, 4).Value
                End With
               
              UserForm1.ListBox1.AddItem s.Value _
      & " " & s.Offset(0, -1).Value & " " & s.Offset(0, -3).Value _
      & " " & s.Offset(0, 1).Value & " " & s.Offset(0, 2).Value _
      & " " & s.Offset(0, 3).Value & " " & s.Offset(0, 4).Value ' NY
            End If
         
          Loop While Not s Is Nothing And s.Address <> firstAddress
          MsgBox ("Fundne dyr ses på arket resultat")
       
        Else:
        MsgBox ("Ikke fundet")
        Exit Sub
       
        End If
End With
UserForm1.Show ' NY

Exit Sub
Else
MsgBox ("Søgetekst skal indtastes")
End If
End Sub
Avatar billede steensommer Praktikant
15. januar 2004 - 22:48 #2
-->kabbak Tja med risiko for at lyde som en grammofonplade med ridser i: Du kan bare det gylde!!! (undskyld det forslidte udtryk). Der er fortsat lidt arbejde med bredden i kolonnerne men det skulle jeg vist kunne klare. Tusinde tak for hjælpen.
Hilsen Steen
NB! Husk lige at svare
Avatar billede kabbak Professor
15. januar 2004 - 22:53 #3
Et svar. ;-))

Var det det du skulle bruge.?
Avatar billede steensommer Praktikant
15. januar 2004 - 22:55 #4
Det var præcist det!!!
Avatar billede kabbak Professor
15. januar 2004 - 22:57 #5
tak for point
Avatar billede steensommer Praktikant
15. januar 2004 - 22:58 #6
Det var meget lidt i forhold til den hjælp du har ydet. :0)
Avatar billede steensommer Praktikant
15. januar 2004 - 23:13 #7
Hov en lille "fejl". Alle resultater kommer i listboxens 1 kolonne. De skulle helst komme i hver sin kolonne så udseendet kan forbedres.
Avatar billede kabbak Professor
15. januar 2004 - 23:37 #8
Er rettet, du skal sætte din listbox til 6 kolonner.

Jeg bruger dit resultat ark til at hente daterna fra.

Sub FindEfterlysteDyr()
Dim Data As Variant ' NY
Sheets("Resultat").Range("A2:G1000").ClearContents
UserForm1.ListBox1.Clear  ' NY
Application.ScreenUpdating = False
Dim Søg As String, twb As Workbook
Set twb = ThisWorkbook
Søg = InputBox("Indtast søgetekst")
If Søg <> "" Then
With Sheets("Efterlyste dyr").Range("C3:D1000")

    Set s = .Find(Søg, LookIn:=xlValues)
    If Not s Is Nothing Then
        firstAddress = s.Address
        Do
 
                      Set s = .FindNext(s)
         
            If Left(s.Address, 2) = "$C" Then
                With Sheets("Resultat").Range("C65536").End(xlUp)
                .Offset(1, -1) = s.Value
                .Offset(1, -2) = s.Offset(0, -2).Value
                .Offset(1, 0) = s.Offset(0, 1).Value
                .Offset(1, 1) = s.Offset(0, 2).Value
                .Offset(1, 2) = s.Offset(0, 3).Value
                .Offset(1, 3) = s.Offset(0, 4).Value
                .Offset(1, 4) = s.Offset(0, 5).Value
                End With
        ElseIf Left(s.Address, 2) = "$D" Then
                With Sheets("Resultat").Range("D65536").End(xlUp)
                .Offset(1, -1) = s.Value
                .Offset(1, -2) = s.Offset(0, -1).Value
                .Offset(1, -3) = s.Offset(0, -3).Value
                .Offset(1, 0) = s.Offset(0, 1).Value
                .Offset(1, 1) = s.Offset(0, 2).Value
                .Offset(1, 2) = s.Offset(0, 3).Value
                .Offset(1, 3) = s.Offset(0, 4).Value
                End With
                   
            End If
         
          Loop While Not s Is Nothing And s.Address <> firstAddress
        ' MsgBox ("Fundne dyr ses på arket resultat")
        A = Sheets("Resultat").Range("D65536").End(xlUp).Row 'NY
        Data = Sheets("Resultat").Range("A2:F" & A)          'NY
        UserForm1.ListBox1.List() = Data                    'NY
        Else:
        MsgBox ("Ikke fundet")
        Exit Sub
       
        End If
End With
UserForm1.Show ' NY

Exit Sub
Else
MsgBox ("Søgetekst skal indtastes")
End If
End Sub
Avatar billede steensommer Praktikant
15. januar 2004 - 23:41 #9
Det ser meget bedre ud. Hvor vender du resultatet - jeg troede egentlig at listen skulle "Transpose's"?
Avatar billede kabbak Professor
15. januar 2004 - 23:45 #10
Data = Sheets("Resultat").Range("A2:F" & A)          'NY
Data, det er en array , den ser ud ligesom på arket resultat
Avatar billede steensommer Praktikant
16. januar 2004 - 12:35 #11
Tak for hjælpen endnu en gang. Har du mulighed for at kigge med på:
http://www.eksperten.dk/spm/452446
Som omhandler det du har lavet (blot den anden vej)

Hilsen Steen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester