Print side | Luk vindue

Søgefunktion der ikke er præcis

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=434
Udskrevet den: 18.Maj.2024 kl. 13:25


Emne: Søgefunktion der ikke er præcis
Besked fra: Dynde
Emne: Søgefunktion der ikke er præcis
Posteringsdato: 23.Aug.2011 kl. 16:13
Hej
 
Jeg har lavet/fundet en søge funktion (via tryk på en knap), hvor man kan finde leverandører i en database, og derefter kopiere det ovet i et andet ark. Funktionen er også klar til at kunne kopiere flere leverandører, men problemet er at funktion kun kan finde leverandøren, hvis man skriver navnet 100 % korrekt. Kan man lave en funktion, hvor det er nok fx at skrive "B" og alle leverandører som start med "B" vil blive fundet?
 
Koden ser sådan ud pt.:
 
Public sheetname
Public LCopyToRow As Integer
Public LSearchValue As String
Sub SearchForStrin(Inddata)
Dim LSearchRow As Integer
  For Each sh In Array("Firma")
  Sheets("Inddata").Select
  'Start search in row 2
  LSearchRow = 2
 
  'Start copying data to row 2 in Resultat (row counter variable)
 
      While Len(Range("A" & CStr(LSearchRow)).Value) > 0
     
      If Range("A" & CStr(LSearchRow)).Value = LSearchValue Then
         
              'Select row in Inddata to copy
              Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select
              Selection.Copy
         
              'Paste row into Resultat in next row
              Sheets("Resultat").Select
           
              Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select
              ActiveSheet.Paste
                       
              'Move counter to next row
              LCopyToRow = LCopyToRow + 1
         
              'Go back to Inddata to continue searching
              Sheets("Inddata").Select
         
          End If
          LSearchRow = LSearchRow + 1
       Wend
  Next
'Position on cell A3
  Application.CutCopyMode = False
 
 
  Exit Sub
 
 
Err_Execute:
  MsgBox "Fejl i søgningen."
 
End Sub
Public Sub SearchSheet()
LSearchValue = InputBox("Søg", "Leverandør eller produktgruppe")
LCopyToRow = 4
SearchForStrin ("Inddata")
Sheets("Resultat").Select
  MsgBox "Søgning udført"
 
End Sub
 
Håber I kan hjælpe mig.



Svar:
Besked fra: Allan
Posteringsdato: 23.Aug.2011 kl. 18:57
Hej Dynde,
 
Jeg har ikke testet det, men prøv at udskifte denne linje:
 
If Range("A" & CStr(LSearchRow)).Value = LSearchValue Then
Med
If InStr(1, Range("A" & CStr(LSearchRow)).Value, LSearchValue, vbTextCompare) Then
 
Jeg tror det er det som skal til.
 
//Allan


Besked fra: rassten
Posteringsdato: 23.Aug.2011 kl. 20:27
Hvis Allans metode ikke skulle virke, kunne en anden mulighed kunne være:
uploads/107/SøgOgFlyt.xlsm - uploads/107/SøgOgFlyt.xlsm
 
Bemærk hvis makroen finder et resultat, sletter den alt på arket "Resultat" og kopierer det nye over.


-------------
VH rassten

Arbejde excel 2010
Privat excel 2010


Besked fra: Dynde
Posteringsdato: 25.Aug.2011 kl. 10:18
Hej Allan
 
Det fungerer helt perfekt... Super mange tak.
 
Nu er jeg så løbet ind i et andet problem ;-)
Jeg har lavet et rullegardin, som også skal bruges som en søgefunktion. En af de informationer den skal retunere er et hyperlink, men hyperlinket er ikke aktivt i retuneringen. Hyperlinket er aktivitet i arket som fungere som database, men altså ikke i retunering.
 
Er det noget der kan løses eller er det noget man skal leve med? Wink
 
Super fedt med dette her forum, hvor man som novice kan få en masse hjælp. Håber en dag, man bliver dygtig nok til at kunne hjælpe andre.


Besked fra: Dynde
Posteringsdato: 25.Aug.2011 kl. 12:15
Hej rassten
 
Tak for din OBS, men det er bevidst da det er en ny bruger der skal lave en ny søgning hver gang arket åbnes.
 
Men tak igen Wink



Print side | Luk vindue