• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

positie van een cel bepalen t.o.v. cel met gevonden waarde in VBA

Status
Niet open voor verdere reacties.

ErikdV

Gebruiker
Lid geworden
16 jun 2011
Berichten
81
Ik heb een werkblad met daarop 2 onderdelen:
Bovenaan staat een lijst met testen en de daarbij behorende resultaten. Deze lijst is variabel van grootte en het aantal rijen kan dus varieren.
Daaronder staat een overzicht waarin de verschillende resultaatcodes worden opgeteld. Dit overzicht staat dus ook niet altijd op dezelfde rij. Het begint wel altijd in kolom 1.
Tussen de 2 onderdelen staat een rij in rood, met daarin de tekst "NIET VERWIJDEREN".

Ik wil het overzicht met resultaatcodes automatisch met VBA opmaken.
Omdat ik niet weet op welke rij het overzicht begint wil ik zoeken naar de cel met de tekst "NIET VERWIJDEREN" en vervolgens de positie van het overzicht bepalen. Het overzicht staat immers altijd 1 rij daaronder.

Met de zoekfunctie kan ik de cel vinden met de tekst "NIET VERWIJDEREN"

With Worksheets(1).Range("A:A")
Set c = .Find("NIET VERWIJDEREN", lookin:=xlValues)
If Not c Is Nothing Then
nv = c.Address
End If

Aan de hand hiervan wil ik de eerste cel van het overzicht bepalen. Hoe doe ik dit in VBA ?
 

Bijlagen

  • testopmaak.xlsm
    28,9 KB · Weergaven: 92
Deze geeft u de rij waarop "Niet Verwijderen" staat in Blad "5"

Code:
Sub cobbe()
With Worksheets("5").Range("A:A")
 Set c = .Find("NIET VERWIJDEREN", LookIn:=xlValues)
 If Not c Is Nothing Then
 nv = c.Row
 End If
End With
End Sub

En dus kan je hiermee de eerste cel bepalen van uw overzicht : =Cells(nv+3,"G")
 
Laatst bewerkt:
Nu heb ik dus alleen de rij ipv. het complete celadres.
Als ik
 
Ik heb de code uitgebreid.
Ik heb alleen de code voor de selectie van de range niet correct (zie onder in rode tekst).
Wat doe ik hier fout?

Sub opmaakoverzicht()
'zoeken "Niet verwijderen"
'rijnummer wordt in rijopm gezet

With Worksheets("5").Range("A:A")
Set c = .Find("NIET VERWIJDEREN", LookIn:=xlValues)
If Not c Is Nothing Then
rijopm = c.Row
End If
End With

'Rij onder gevonden rij selecteren
'Beginkolom en eindkolom selecteren
rijopm = rijopm + 1
kolopmb = 2
kolopme = 3

'De volgende syntax is niet correct !!
Worksheets("5").Range(.Cells(rijopm, kolopmb), .Cells(rijopm, kolopme)).Select

'Opmaak van selectie
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
 
Code:
sub M_snb()
  with sheets("5").columns(1).find("NIET VERWIJDEREN").offset(1,1).resize(,3).interior
    .colorindex=12
  end with
End Sub
 
Ik heb de niet werkende regels van de code aangepast en nu doet ie het wel.

Range(Cells(rijopm, kolopmb), Cells(rijopm, kolopme)).Select
With Selection.Interior

'Opmaak van selectie
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With

Nu kan ik op dezelfde manier de andere cellen van het overzicht selecteren en opmaken.

Dank je wel voor de tips.
 
diverse cellen een andere kleur geven zonder telkens een zoekopdracht uit te voeren.

Ik heb het antwoord van SNB over het hoofd gezien.
Dit doet wat ik wil en is ook nog eens kort en krachtig. Dank je wel.:d
Ik kan nu telkens na een zoekopdracht met offset de juiste cellen selecteren en opmaken.
Ik wil de zoekopdracht echter slechts 1 keer uitvoeren en vervolgens met offset/resize telkens andere cellen selecteren en een andere kleur geven.
Dat wilde ik bereiken met mijn script.
Hoe kan ik deze code aanpassen?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan