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

Foutmelding VBA bij lege cel

  • Onderwerp starter Onderwerp starter MMV
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

MMV

Gebruiker
Lid geworden
6 mei 2008
Berichten
111
Beste,

Ik gebruik onderstaande code om in een kolom te zoeken naar een waarde die in een cel staat (tabblad "voorblad", C-kolom).

Afhankelijk van de gevonden waarde op het werkblad "Bron", eerste rij, dient de gehele kolom naar tabblad "info MDR" gekopieerd te worden.

Nu loopt mijn macro vast wanneer in de criteria kolom (C op tabblad "voorblad") geen informatie staat.

Hoe kan ik dit het beste voorkomen? Een if-then functie?

Code:
'lijst van criteria op het voorblad
Sheets("Bron").Select
desc = WorksheetFunction.Match(Sheets("Voorblad").Range("c6"), Rows("1:1"), 0)
distr = WorksheetFunction.Match(Sheets("Voorblad").Range("c7"), Rows("1:1"), 0)
doctekno = WorksheetFunction.Match(Sheets("Voorblad").Range("c8"), Rows("1:1"), 0)

'lijst van locaties waar de data heen wordt gekopieerd
Sheets("Bron").Columns(desc).Copy Destination:=Sheets("Info MDR").Range("A1")
Sheets("Bron").Columns(distr).Copy Destination:=Sheets("Info MDR").Range("B1")
Sheets("Bron").Columns(doctekno).Copy Destination:=Sheets("Info MDR").Range("C1")
 
Laatst bewerkt:
Inderdaad met een If..Then.

Het 2e gedeelte van je code wordt dan:

Code:
'lijst van locaties waar de data heen wordt gekopieerd
If Not IsEmpty(desc) Then Sheets("Bron").Columns(desc).Copy Destination:=Sheets("Info MDR").Range("A1")
If Not IsEmpty(distr) Then Sheets("Bron").Columns(distr).Copy Destination:=Sheets("Info MDR").Range("B1")
If Not IsEmpty(doctekno) Then Sheets("Bron").Columns(doctekno).Copy Destination:=Sheets("Info MDR").Range("C1")

Met vriendelijke groet,


Roncancio
 
Ron, bedankt voor je terugkoppeling.
Het is soms zo simpel....
Ik heb na lang nadenken een loop functie toegepast. Zie onder. Dit in combinatie met een fictieve kolom in mijn 'bron' sheet genaamd 'xxx'.

Code:
For Each cl In Range("C6:C67")
If cl.Value = "" Then cl.Value = "xxx"
Next
 
Ik raad een ieder aan om loops zoveel mogelijk (zeker in dit geval) te mijden.
Ze werken vertragend.

Code:
Range("C6:C67").Replace "", "xxx"

Bovenstaande code volstaat.
Bij zeer grote cellen zou ik een autofilter gebruiken.

Met vriendelijke groet,


Roncancio
 
Bedankt voor je terugkoppeling. Ik zal het meenemen in de opzet!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan