Print side | Luk vindue

Søgeresultater til listbox

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=4031
Udskrevet den: 26.Nov.2024 kl. 18:04


Emne: Søgeresultater til listbox
Besked fra: Lassenielsen
Emne: Søgeresultater til listbox
Posteringsdato: 14.Okt.2019 kl. 11:14
Jeg sidder med et ark, hvor jeg gennem et listbox søger på et navn, og derefter får information om personen med dette navn. Tabellen ser således ud:

 

Min listbox ser således ud, og fungerer fint, men der er nogle mangler. 


1) datoen står på amerikansk. Hvordan fixer jeg det?
2) hvordan gør jeg, så personen, der søger på navnet, kan kopiere teksten (Der kan sagtens være flere linjer med fraværsperioder)? Jeg har lavet en knap: "kopier tekst", men ikke skrevet noget kode.
3) hvordan gør jeg, så "søgefunktionen" nulstiller teksten i boksen? Som det er nu, smider den bare flere og flere linjer ind, hvis man søger efter et andet navn.

Jeg smider koden i næste indlæg.



Svar:
Besked fra: Lassenielsen
Posteringsdato: 14.Okt.2019 kl. 11:16
herunder er koden. Det skal siges, at jeg nok er ved at være ude hvor jeg ikke kan bunde, så koden er måske ret dårligt skrevet.

Private Sub CmdCancel_Click()

  Unload Me
  
End Sub


Private Sub cmdOK_Click()
  Dim lrow As Long
  
  
  Unload Me
  
End Sub


Private Sub cmdSøg_Click()
    Dim lrow As Long
    
    For lrow = 1 To Range("tlbdata").Rows.Count
    
      If Range("tlbdata[navn]").Cells(lrow, 1).Value = Me.txtName Then
        Me.listFravær.AddItem Range("tlbdata[Første fraværsdato]").Cells(lrow, 1).Value
        Me.listFravær.List(Me.listFravær.ListCount - 1, 1) = Range("tlbdata[sidste fraværsdato]").Cells(lrow, 1).Value
        Me.listFravær.List(Me.listFravær.ListCount - 1, 2) = Range("tlbdata[Dage]").Cells(lrow, 1).Value
        Me.listFravær.List(Me.listFravær.ListCount - 1, 3) = Range("tlbdata[Fraværs/nærværsarter]").Cells(lrow, 1).Value
        
      End If
      
    Next lrow
    
    

End Sub



Private Sub UserForm_Initialize()
  Dim lrow As Long
  
End Sub





Besked fra: Skovgaard
Posteringsdato: 15.Okt.2019 kl. 13:52
Hej Lasse,

Jeg har tidligere lavet noget lignende, bare en søgefunktion i en kundedatabase i stedet.
I min liste brugte jeg avanced filter til mine selektioner.

Min VBA ser såleder ud, se om du kan bruge den som inspiration:

Private Sub CommandButtonSearch_Click()
    
  Dim DataSH As Worksheet
  Set DataSH = Sheets("KUNDER")
  DataSH.Range("V2").Value = TextBox1.Text
  DataSH.Range("W2").Value = TextBox2.Text
  DataSH.Range("X2").Value = TextBox3.Text
  DataSH.Range("Y2").Value = TextBox4.Text
  DataSH.Range("Z2").Value = TextBox5.Text
  DataSH.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, criteriarange:=DataSH.Range("V1:Z2"), copytorange:=DataSH.Range("AB1:AF1")
  On Error Resume Next
  ListBox1.RowSource = "KUNDER!" & DataSH.Range("outdata").Address
  
  
  
End Sub

"Outdata" defineres som navn, som resultaterne af dit advanced filter.

/Skovgaard



Print side | Luk vindue