Opgelost Zoeken in Excel en gevonden regel geel arceren

  • Onderwerp starter Onderwerp starter Tont
  • Startdatum Startdatum
Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

Tont

Gebruiker
Lid geworden
17 jan 2024
Berichten
42
Ik wil graag VBA code voor een Excel macro die zoekt in een Excel bestand, over meerdere tabbladen, naar een willekeurige naam, die ik dan eerst zelf kan opgeven en als deze naam gevonden is zou ik graag zien dat de regel waarin de gezochte naam staat In het Excel sheet met de kleur geel wordt opgevuld.
Als de gezochte naam niet wordt gevonden komt er een melding; "naam niet gevonden" en kan er eventuele een nieuwe zoekopdracht worden ingegeven.
Het is dus eigenlijk de Ctrl-F functie om te zoeken maar dan dus in VBA
Het voorbeeld bestand bestaat uit twee tabbladen met ieder vijf namen.
 

Bijlagen

Code kan korter om bij een gevonden naam te stoppen, maar met deze code loop je door alle werkbladen om de eerder gevonden gele rij weer ongedaan te maken in elk blad.
Code:
Sub hsv()
Dim sh As Worksheet, c As Range, cl As Range, y As Long, naam As String
naam = Application.InputBox("welk naam zoek je", "Zoeken", "hier ingeven")
 For Each sh In Sheets
   sh.Cells.Interior.Color = xlNone
   Set c = sh.Cells.Find(naam, , , 1)
    If c Is Nothing Then
      y = y + 1
    Else
      Set cl = c
    End If
 Next sh
If y = Sheets.Count Then
   MsgBox "niet gevonden"
 Else
   cl.EntireRow.Interior.Color = vbYellow
   Application.Goto cl
End If
End Sub
 
Hartelijk dank HSV voor jouw ongelooflijke snelle en mooie oplossing.
Eén klein dingetje nog. Ik kan hier zeker mee verder. Stel dat mijn uiteindelijke bestand iets van 15 kolommen gaat bevatten is het dan ook nog mogelijk dat de gevonden regel geel wordt t/m kolom 15 en niet zoals nu helemaal tot aan het eind, dus t/m kolom XFD ? Als het niet kan is het niet anders. Ik ben hier ook al helemaal blij mee.
 
verander volgende regel:
Code:
 cl.EntireRow.Interior.Color = vbYellow
naar
Code:
 cl.Resize(, 15).Interior.Color = vbYellow
 
Hartelijk dank djutoch. Het werkt.
Nu heb ik gemerkt dat in mijn uiteindelijke bestand sommige namen meerdere keren voorkomen en dan ook nog soms op verschillende werkbladen.
Weet iemand of het mogelijk is de macro nog zo aan te passen dat er meerdere regels geel gearceerd worden als dezelfde zoeknaam meerdere keren voorkomt?
 
Zoek hier op het forum naar Find en Findnext.
 
Net thuis dus bij deze.
Code:
Sub hsv()
Dim sh As Worksheet, c As Range, eersteadres As String, naam As String, y As Long
naam = Application.InputBox("welk naam zoek je", "Zoeken", "hier ingeven")
 For Each sh In Sheets
   sh.Cells.Interior.Color = xlNone
   Set c = sh.Columns(1).Find(naam, , , 1)
    If Not c Is Nothing Then
             eersteadres = c.Address
             y = y + 1
          Do
            c.Resize(, 15).Interior.Color = vbYellow
            Set c = sh.Columns(1).FindNext(c)
          Loop While Not c Is Nothing And c.Address <> eersteadres
    End If
 Next sh
If y = 0 Then MsgBox "niet gevonden"
End Sub
 
Doe het met voorwaardelijke opmaak:
Dubbelklik op een naam in kolom A
 

Bijlagen

Dank jullie wel voor jullie oplossingen. HSV, jouw oplossing is precies waar ik naar op zoek was.
Ik heb nog niet veel ervaring met VBA. Was hier zelf nooit op gekomen!
 
@snb
Krijg ik niet goed werkend in Excel 2007. Plaats anders de code en formule wil je?
 
Ik download jouw bestand en doe wat jij zegt. Dan
> Dubbelklik op een naam in kolom A
dan is toch de bedoeling dat die rij oplicht als die naam in een rij voorkomt?
Foutopsporing:
it.UsedRange.FormatConditions(1).Modify 2, , Replace("=$A1=""~""", "~", Target)
 
Werkt hier vlekkelings.
Je werkt toch wel in het bestand dat ik plaatste zonder er enige wijziging in aan te brengen ?
Download het bestand; open het; klik op een naam in kolom A.

Welke mededeling krijg je in de VBEditor ?
 
Zie de regel in post 13. Ik wijzig helemaal niets en doe wat jij zegt. Maar goed, ik zal het wel niet begrijpen wat er precies moet gebeuren en ik stop ermee. Dit kost mij veel te veel tijd en die laatste van HSV krijg ik ook niet werkend. Of het ligt aan mij of aan Excel 2007. Einde verhaal. Bedankt voor de hulp.
 
Steek wat tijd in je Excel versie; ik zie steeds maar problemen bij jou.
Het betekent einde verhaal voor je hobby.
 
Als de regel
CSS:
it.UsedRange.FormatConditions(1).Modify 2, , Replace("=$A1=""~""", "~", Target

geel gearceerd is voor de foutopsporing, wordt tegelijkertijd een berichtvenster getoond met informatie over de opgetreden fout.
Dat gebeurt ook in VBA van 2007.

Waarom maak je geen schermafdruk van wat er dan te zien is ?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan