Bevestigen datum output / overnemen waarden

Status
Niet open voor verdere reacties.

JKlerks

Gebruiker
Lid geworden
15 aug 2017
Berichten
54
Goedemorgen,

Ik wil voor medewerkers een simpel werkbestand maken om een download te verwerken naar werklijsten. In de download worden datums met verschillende notatie weergegeven en als ik deze kopieer, wordt de weergave niet aangepast naar wat ik wil (te weten DD-MM-YY).

Ik heb gezocht naar een loop om de inhoud van de cellen te bevestigen, maar kan die niet vinden. Ik maak nu gebruikt van het loopje zoals hieronder. Het resultaat hiervan is zeker niet juist.

Kan iemand me helpen of aangeven wat er mis gaat. Voor de volledigheid: de inhoud van kolom B moet worden gekopieerd naar kolom E én voorzien van nieuwe opmaak.

Code:
Sub test()
Dim i As Integer
i = 2

Do While Cells(i, 1).Value <> ""
    Cells(i, 5).Value = Cells(i, 1).Value
    i = i + 1
Loop

End Sub

Thnx a million

JKlerks
 

Bijlagen

  • VBHM.xlsm
    14 KB · Weergaven: 22
Maak er eens dit van:
Code:
Sub test()
    Dim i As Integer
    i = 2
    
    Do While Cells(i, 1).Value <> ""
        With Cells(i, 5)
            .Value = Cells(i, 2).Value
            .NumberFormat = "m/d/yyyy"
        End With
        i = i + 1
    Loop
End Sub
 
Dank Edmoor,

Output ziet er zo uit zoals gewenst. Super :thumb:

Doorlooptijd wordt hiermee wel vertraagd zie ik. Weet jij of dat standaard is of kan ik beter een andere oplossing gebruiken?
 
Ik had het eenvoudig voor je gehouden omdat in #1 te zien is dat je er nog niet echt kaas van hebt gegeten.
Mijn voorbeeld werkt direct op het werkblad en dat werkt vertragend. Je kan het ook in geheugen doen:
Code:
Sub test()
    reeks = Cells(1).CurrentRegion
    For i = 2 To UBound(reeks)
        reeks(i, 4) = reeks(i, 2)
    Next i
    Columns(4).NumberFormat = "m/d/yyyy"
    Cells(1).CurrentRegion = reeks
End Sub

Haal hiervoor wel de lege kolom D weg.
 
Laatst bewerkt:
Ja, loops zijn enorm nieuw, maar ik ben er wel aan toe... Enkelvoudig werkt het perfect!

Ik heb (uiteraard) twee kolommen waarvoor dit geldt en met onderstaande geeft vba een fout op de regel "reeks(i, 54) = reeks(i, 2)" (NB het komt uiteindelijk in kolommen BB en BC en niet in D, maar dat had ik ook maar makkelijker gehouden ;)

Code:
    reeks = Cells(1).CurrentRegion
    For i = 2 To UBound(reeks)
        reeks(i, 54) = reeks(i, 2)
    Next i
    Columns(54).NumberFormat = "dd/mm/yy"
    Cells(1).CurrentRegion = reeks

    reeks = Cells(1).CurrentRegion
    For j = 2 To UBound(reeks)
        reeks(j, 55) = reeks(j, 3)
    Next j
    Columns(55).NumberFormat = "dd/mm/yy"
    Cells(1).CurrentRegion = reeks
 
Bij gebruik van Cells(1).CurrentRegion wordt de variabele gevuld tot de eerste lege kolom en de eerste lege regel.
 
Overigens maak ik gebruik van onderstaande code voor de rest. Als dit makkelijker/sneller kan, super!

Code:
Sheets("BLAD1").Range("BD2", Range("A1048576").End(xlUp).Offset(0, 55)).FormulaR1C1 = "=TRIM(RC4)"
Sheets("BLAD1").Range("BE2", Range("A1048576").End(xlUp).Offset(0, 56)).FormulaR1C1 = "=TRIM(RC5)"
Sheets("BLAD1").Range("BF2", Range("A1048576").End(xlUp).Offset(0, 57)).FormulaR1C1 = "=TRIM(RC6)"
Sheets("BLAD1").Range("BG2", Range("A1048576").End(xlUp).Offset(0, 58)).FormulaR1C1 = "=TRIM(RC7)"
Sheets("BLAD1").Range("BH2", Range("A1048576").End(xlUp).Offset(0, 59)).FormulaR1C1 = "=TRIM(RC8)"
Sheets("BLAD1").Range("BI2", Range("A1048576").End(xlUp).Offset(0, 60)).FormulaR1C1 = "=TRIM(RC10)"
Sheets("BLAD1").Range("BJ2", Range("A1048576").End(xlUp).Offset(0, 61)).FormulaR1C1 = "=TRIM(RC11)"
Sheets("BLAD1").Range("BK2", Range("A1048576").End(xlUp).Offset(0, 62)).FormulaR1C1 = "=TRIM(RC12)"
Sheets("BLAD1").Range("BL2", Range("A1048576").End(xlUp).Offset(0, 63)).FormulaR1C1 = "=TRIM(RC13)"
Sheets("BLAD1").Range("BM2", Range("A1048576").End(xlUp).Offset(0, 64)).FormulaR1C1 = "=TRIM(RC19)"
Sheets("BLAD1").Range("BN2", Range("A1048576").End(xlUp).Offset(0, 65)).FormulaR1C1 = "=TRIM(RC22)"
Sheets("BLAD1").Range("BA2", Range("A1048576").End(xlUp).Offset(0, 65)).Copy
Range("BA2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 
Bij gebruik van Cells(1).CurrentRegion wordt de variabele gevuld tot de eerste lege kolom en de eerste lege regel.

Dus als ik het goed begrijp, werkt dit niet als ik het ga verplaatsen naar een verdere locatie op het werkblad en/of als er een lege cel is. Dat is jammer, want ik zou het graag verplaatsen en er zitten nu eenmaal ook lege cellen in ... (waar geen ATA / ETA gevuld is)
 
Kan ook wel zonder loop
Code:
Sub VenA()
  ar = Cells(1).CurrentRegion.Offset(, 1).Resize(, 2)
  With Columns(54).Resize(UBound(ar), 2)
    .NumberFormat = "dd/mm/yy"
    .Value = ar
  End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan