• 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.

VBA Selection.Replace

Status
Niet open voor verdere reacties.

pesto61

Gebruiker
Lid geworden
19 jul 2011
Berichten
18
Beste Forumleden,

Ik heb onderstaande macro geschreven om lege cellen te vullen met een formule.
De cellen blijven echter leeg.
Als ik in plaats van de formule een tekst zet (vb "XXX") worden de cellen keurig gevuld met XXX.
Iemand een suggestie.


Range("B3:B10000").Select
Selection.Replace What:="", Replacement:= _
"=(VERT.ZOEKEN([@[U_NaamAfl]];Afleveradressen!A:B;2;ONWAAR))", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("B4343").Select
 
Doe het eens zo:
Code:
Range("B3:B10000").SpecialCells(xlCellTypeBlanks).FormulaLocal = "=(VERT.ZOEKEN([@[U_NaamAfl]];Afleveradressen!A:B;2;ONWAAR))"
 
Laatst bewerkt:
Dat werkt, geweldig!
Hartelijk dank voor je snelle reactie.

Groeten Peter
 
Beter is:
Code:
Range("B3:B10000").SpecialCells(xlCellTypeBlanks).Formula = "=VLOOKUP([@[U_NaamAfl]],Afleveradressen!A:B,2,FALSE)"
dan is het onafhankelijk van de taalinstelling van Excel.
 
korter is:

Code:
Range("B3:B10000").SpecialCells(4) = "=VLOOKUP([@[U_NaamAfl]],Afleveradressen!A:B,2,0)"
 
Ik dacht dat het nu klaar was, echter;
als er geen lege cellen voorkomen in kolom B, en de macro wordt uitgevoerd, krijg ik de volgende foutmelding

Fout 1004 tijdens uitvoering:
Er zijn geen cellen gevonden

(de macro is onderdeel van een grotere macro die meerdere handelingen uitvoert)
 
Dat kan je op de slordige manier zo opvangen:
Code:
On Error Resume Next
Range("B3:B10000").SpecialCells(4) = "=VLOOKUP([@[U_NaamAfl]],Afleveradressen!A:B,2,0)"
On Error Goto 0
 
Slordig, omdat wanneer zich een andere fout voordoet, deze niet wordt getoond terwijl je dat misschien wel wilt weten. Dit is dan netter:
Code:
On Error Resume Next
Range("B3:B10000").SpecialCells(4) = "=VLOOKUP([@[U_NaamAfl]],Afleveradressen!A:B,2,0)"
If Err.Number <> 1004 Then
    MsgBox "Fout: " & Err.Description
    Exit Sub
End If
On Error GoTo 0
 
Misschien beter:

Code:
Dim oRng As Range
On Error Resume Next
Set oRng = Range("B3:B10000").SpecialCells(4)
On Error Goto 0
IF not oRng Is Nothing Then
 oRng.Formula = "=VLOOKUP([@[U_NaamAfl]],Afleveradressen!A:B,2,0)"
End If
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan