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

Kolom vullen aan de hand van gevulde regels

Status
Niet open voor verdere reacties.

CorVerm

Redacteur
Lid geworden
11 mrt 2005
Berichten
5.272
Beste mensen,

Uit de code blijkt dat ik handmatig een bereik heb ingesteld, namelijk Kolom B van B1 t/m B100. Nu wil ik alleen het aantal cellen in kolom B laten vullen met de formule waarvan de rijen gevuld zijn.

Code:
Cells(1, 2).Select
      ActiveCell.FormulaR1C1 = _
        "=DATE(LEFT(RC[-1],4),MID(R[1]C[-1],5,2),RIGHT(R[1]C[-1],2))"
         Range("B1:B100").Select
           Selection.FillDown
        Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
 
Code:
sub M_snb()
  sn=columns(1).specialcells(2)

  for j=2 to ubound(sn)
    sn(j,1)=cdate(dateserial(year(sn(j,1),month(sn(1,1)),day(sn(1,1)))
  next

  columns(1).specialcells(2).offset(,1)=sn
Edn Sub
 
Dank je snb,

Helaas geeft deze een syntaxfout:
Code:
    sn(j,1)=cdate(dateserial(year(sn(j,1),month(sn(1,1)),day(sn(1,1)))

Off topic:
Alles goed?
 
Lijkt me nogal wiedes Cor,

kwestie van haakjes tellen:

sn(j,1)=cdate(dateserial(year(sn(j,1)),month(sn(1,1)),day(sn(1,1))))


PS.'mag niet klagen' is het geijkte Nederlandse antwoord.
Maar zie voor meer info op :www.snb-vba.eu
 
Ik ben waarschijnlijk niet helemaal duidelijk geweest. In kolom A staan de datums als bijvoorbeeld 20150327. In kolom B wil ik echte datums, vandaar de formule in de code die ik geplaatst heb. Nu is het de bedoeling dat het omzetten naar echte datums alleen in die cellen gebeurd dan waar kolom A gevuld is met gegevens. Nu heb ik een bepaald bereik opgegeven en krijg dus, als er geen gegevens in kolom A staan, de foutmelding WAARDE.
 
Cor, je zou evebtueel ook dit kunnen gebruiken:
Code:
Sub macro1()
With Sheets("Blad1").Range("B1:B" & Range("A" & Rows.Count).End(xlUp).Row)
.Formula = "=value(Left(A1,4) & ""-"" & mid(A1,5,2)& ""-"" & Right(A1,2))"
.NumberFormat = "yyyy-mm-dd"  'als je NL-notatie wil: "dd-mm-yyyy"
End With
End Sub
 
Heb je mijn code wel gebruikt ?
Waarvoor denk je dat ik specialcells(2) heb gebruikt ?
 
@snb,
Natuurlijk heb ik jouw code gebruikt, ook na toevoeging van de ontbrekende haakjes. Helaas, de code gaf weer een foutmelding.
 
Vooruit dan:

Code:
Sub M_snb()
  For Each it In Columns(1).SpecialCells(2)
    it.Offset(, 1) = Format(it, "0000-00-00")
  Next
End Sub
 
Cor,
als in kolom A lege cellen (kunnen) voorkomen, wijzig dan in mijn macro regel 3 als volgt:
Code:
.Formula = "=if(A1="""","""",value(Left(A1,4) & ""-"" & mid(A1,5,2)& ""-"" & Right(A1,2)))"
 
@snb,
Werkt nu goed :thumb:.
Thanks.

@zapatr,
Er komen nooit lege cellen in kolom A voor :).
Thanks again.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan