Sökning i en arbetsbok
Här demonstreras en teknik för att söka efter ett värde e d i en arbetsbok.
Tekniken kan vara intressant om vi arbetar med omfattande arbetsböcker och där vi kanske även har ett "startblad".
Koden kan kopieras och klistras in direkt i en modul eller så kan du hämta ett exempel här.
Option Explicit
Sub Sök_Alla_Blad()
Dim wsBlad As Worksheet
Dim stHittaStrang As String
Dim rnFAdress As Range, rnAktiv As Range
Dim stMeddText As String, stPrompt As String, _
stTitel As String, stSvar As String
stMeddText = "Sökbegreppet har hittats: Vill du fortsätta _
sökningen?"
stPrompt = "Ange det som ska sökas efter:"
stTitel = "Sök igenom alla blad"
On Error Resume Next
stHittaStrang = Application.InputBox( _
Prompt:=stPrompt, _
Title:=stTitel, _
Type:=2)
If stHittaStrang = "" Then
MsgBox "Söka efter en tom sträng går inte!"
End
End If
'Här initieras sökprocessen mha "Find".
For Each wsBlad In ActiveWorkbook.Worksheets
With wsBlad.UsedRange
Set rnAktiv = .Find(stHittaStrang, LookIn:=xlValues, _
Lookat:=xlPart, MatchCase:=False)'Om sökningen ger resultat så aktiveras bladet
If Not rnAktiv Is Nothing Then
rnFAdress = rnAktiv.Address
wsBlad.Activate'Här initieras en loop för fortsatt sökning eller ej.
Do
stSvar = MsgBox(stMeddText, vbYesNo, stTitel)'Om svaret är nej (VBNo = 7) så avslutas sökningen.
If stSvar = 7 Then End'Om sökningen ska fortsätta så sker det mha "FindNext".
Set rnAktiv = .FindNext(rnAktiv)
Loop While Not rnAktiv Is Nothing And _
rnAktiv.Address <> rnFAdress
End If
End With
Next
End Sub