Avatar billede bulldog_dk Nybegynder
01. maj 2013 - 10:18 Der er 3 kommentarer og
1 løsning

hvordan søger man i et område ("b1:e100") og fylder listebox med fundne ("a1:e100")

jeg vil gerne lave en søgning i b1:e100 og fylde listebox med fundne poster MEN listebox skulle gerne medtage kolonne "A" (a1:e100)
her er hvad jeg er kommet frem til ind til nu:

Private Sub hentFundneTilListe(række)
'Application.ScreenUpdating = False
   
    With ActiveWorkbook.Sheets("Area51_DB")
       
        Me.LB_FundetPoster.AddItem .Range("a" & (række))
        MsgBox "søg " & række
    For felt = 1 To 5
       
        Me.LB_FundetPoster.list(Me.LB_FundetPoster.ListCount - 1, felt - 1) = .Cells(række, felt) 'rette til
       
    Next
       
        Me.LB_FundetPoster.list(Me.LB_FundetPoster.ListCount - 1, felt - 1) = række 'gem det fundne række-nr
       
    End With

    LB_FundetPoster.ListIndex = 0

    LB_FundetPoster.SetFocus

'Application.ScreenUpdating = True
End Sub

Private Function søgIdatabase(søgefter, område)
'Application.ScreenUpdating = False
   
    With Sheets("Area51_DB").Range(område)
 
    Set c = .Find(søgefter, LookIn:=xlValues, LookAt:=xlPart)
       
    If Not c Is Nothing Then
         
          søgIdatabase = c.Row
   
    Else
       
        søgIdatabase = 0
   
    End If
   
    End With

'Application.ScreenUpdating = True
End Function
Sub søg1()
'Application.ScreenUpdating = False
 
    Dim fundetRække As Integer, ræk As Long, søgFra As Long

    Me.LB_FundetPoster.Clear 'slet evt. gl. indhold
       
        søgFra = 1
   
    If TB_Find.Text <> "" Then
   
        Me.LA_SumAfPosterIalt.Caption = Range("last_a").Offset(-1, 0)
   
     
    For ræk = 0 To 65000
 
       
        fundetRække = søgIdatabase(Me.TB_Find, "a" & (søgFra) & ":last_e")
        'fundetRække = søgIdatabase(Me.TB_Find, "b" & (søgFra) & ":e65000")
   
    If fundetRække = 0 Then
        'fundetRække = søgIdatabase(Me.TB_Find, "a" & CStr(søgFra) & "65000")
   
    Exit For
       
    Else
        'fundetRække = søgIdatabase(Me.TB_Find, "b" & CStr(søgFra) & ":last_e")
        hentFundneTilListe fundetRække
       
        søgFra = fundetRække + 1
             
        LA_SumAfPosterFundnet = Area51_DB.LB_FundetPoster.ListCount
       
        TB_Find.SetFocus
       
    End If
   
    Next ræk

    Else
   
        TB_Find.Text = ""
        LB_FundetPoster.Clear
        LA_SumAfPosterFundnet = ""
 
    End If
 
        TB_Find.SetFocus

'Application.ScreenUpdating = True
End Sub
Avatar billede natkatten Mester
01. maj 2013 - 13:35 #1
Jeg har ikke tid nu til at kigge nærmere på din kode. Men du (eller andre) kunne måske have glæde af dette eksempel på en mere generisk søgefunktion lavet i VBA og med resultater, der vises i en userform. Jeg har tilrettet ud fra noget, jeg har fundet på nettet på et tidspunkt. Desværre skrev jeg ikke kilden ind som kommentar i koden, så jeg kan ikke ære den, som rettelig æres bør!

http://gupl.dk/695889/
Avatar billede bulldog_dk Nybegynder
02. maj 2013 - 12:05 #2
jeg har kigget på dit regneark. der søges kun i enkelt kolonne. men det er brugbart men løser ikke mit problem.

jeg har set om der er noget jeg kan genbruge og det er der så tak for det. :-)

for at vende tilbage mener jeg at have løst problemet ved at ændre på søgerække:

fra:
fundetRække = søgIdatabase(Me.TB_Find, "a" & (søgFra) & ":last_e")

til:
fundetRække = søgIdatabase(Me.TB_Find, "b" & (søgFra) & ":last_e")

nu er der kun en udfortring tilbage, der bliver ikke fundet noget i "b1" til trods for at søgeområde er "b1:last_E" . det er som om at der bliver søgt fra "b1" og frem men indkludere ikke b1 ???
Avatar billede bulldog_dk Nybegynder
06. maj 2013 - 14:04 #3
hej natkatten, efter megen tilretning lykkes det for mig at få tilrettet og "lånt" fra filen du anbefalede , så når du lægger et svar får du point :-)

tak for det
Avatar billede bulldog_dk Nybegynder
16. maj 2013 - 10:15 #4
lukkes
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