Just nu i M3-nätverket
Jump to content

Behöver hjälp med en sökfunktion


sofiageorgsson

Recommended Posts

sofiageorgsson

Hej.

Jag håller på att skapa en databas i Excel och har en kod som fungerar.

 

Mitt problem nu är att användaren ska kunna mata in flera nyckel ord t ex (korv bröd sol etc) och programmet ska hitta alla celler (i en kolumn) som innehåller något (eller flera) av dessa sökord. Just nu hittar bara programmet de ord som stämmer precis överens med det som står i cellen.

 

Jag är rätt ny på programmering och har aldrig tidigare använt mig av vba, så keep it simple smile.gif

 

Tack på förhand.

 

 

Sub SearchForSubject()

Dim LSearchRow As Integer
Dim LCopyToRow As Integer
Dim LSearchValue As String

On Error GoTo Err_Execute
Sheet2.Rows("2:" & Rows.Count).ClearContents


LSearchValue = InputBox("Please enter subjects.", "Enter value")
LSearchValue = UCase(LSearchValue)

LSearchRow = 4
LCopyToRow = 2
Sum = 0

While Len(Range("B" & CStr(LSearchRow)).Value) > 0

   	If Range("B" & CStr(LSearchRow)).Value = LSearchValue Then


       	Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select
       	Selection.Copy

       	Sheets("Sheet2").Select
       	Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select
       	ActiveSheet.Paste

       	LCopyToRow = LCopyToRow + 1

       	Sheets("Sheet1").Select

       	Sum = Sum + 1
   	End If

   	LSearchRow = LSearchRow + 1

Wend

Application.CutCopyMode = False
Range("A1").Select

If Sum > 0 Then
       	MsgBox "All matching data has been copied to sheet 2"
       	Else
       	MsgBox "No data found"
End If


Exit Sub

Err_Execute:
MsgBox "An error occurred."

End Sub

Link to comment
Share on other sites

Du säger att koden bara hittar Exakta träffar; gäller detta även om du använder wildcards i sökfrasen? Alltså du hittar "Björnbär" genom att skriva "Björn*"

 

Jag ser nu (efter att ha tittat på din kod) att du inte aktivt letar, utan endast jämför innehållet i varje cell med ditt sökbegrepp för att få träff.

 

Kanske borde du använda dej av "FIND" metoden?

Lite underlag: http://www.cpearson.com/excel/RangeFind.htm

Link to comment
Share on other sites

och vanliga tipsen jag inte orkar skriva fler gånger:

//eforum.idg.se/topic/220943-riktlinjer-for-bra-vba-kod/

inte mer än - adressera alltid dina referenser och bort bort bort med Select/Activate/Selection/ActiveSheet.

 

Samt Axi är korrekt.. Använd Find-funktionen. Mycket snabbare, mycket enklare.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...