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

Macro cellen met "tijdnotatie" kopieren

Status
Niet open voor verdere reacties.

Excel gebruiker

Gebruiker
Lid geworden
17 apr 2010
Berichten
19
Hallo,

Ik heb voor mijn vrouw die aanstaand ZZP-er is, een excel sheet gemaakt om haar gewerkte uren bij te houden (urencriterium belastingdienst).
In dat sheet zijn 2 tabbladen: week en jaar.
Tabblad week geef je de gewerkte uren op en die worden getotaliseerd.
Aan het eind van de week klik je op button "Naar jaaroverzicht" en dan worden de totalen gekopieerd naar het tabblad jaar.
Bij dat kopieren gaat het fout, omdat naar ik aanneem excel de "tijdnotatie" van de te kopieren cellen aanpast naar "getal". Daardoor kloppen de waarden niet meer.

De macro voor deze kopieeractie heb ik op het net gevonden.

Wie kan mij helpen e.e.a. wel goed te laten kopieren?

Met vriendelijke groet,

Ton
 

Bijlagen

Excel gebruiker,

Heb je al bij Format gekeken in de help van Excel?
 
Ik heb de cellen in de macro op text gezet en nu doet hij het goed overzetten.
Misschien weet iemand het op een andere manier te doen?
 

Bijlagen

Ik heb de cellen in de macro op text gezet en nu doet hij het goed overzetten.
Misschien weet iemand het op een andere manier te doen?

Hallo

Ik heb gebruik gemaakt van de format eigenschap en ik denk dat je dan wel het gewenste resultaat krijgt.
Code:
Sub kopie()
     [Jaar!c65536].End(xlUp).Offset(1).Resize(1, 22) = _
    Split(Join(Array(Format([L9], "hh:mm"), Format([L10], "hh:mm"), etc...
End Sub
Succes

Met vr gr
Jack
 
Jack Nouws,

De code van jouw is misschien beter om er naderhand mee door te kunnen rekenen. :thumb:

Oftopic;
Weet je misschien hier een oplossing voor ?
 
Ton,

deze oplossing maakt gebruik van transponeren, zie bijlage
 

Bijlagen

Haije,

Je macro werkt goed.
Je kunt hem zeker tot hier in korten en je bent het flikkeren kwijt.
Alleen jammer dat het te copyeren gedeelte geselecteerd blijft.
Code:
Sub opslaan()
Application.ScreenUpdating = False
  Sheets("Week").[L9:L36].Copy
  Sheets("Jaar").[C65536].End(xlUp).Offset(1).PasteSpecial _
  Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Application.ScreenUpdating = True
End Sub
 
Haije,

Je macro werkt goed.
Je kunt hem zeker tot hier in korten en je bent het flikkeren kwijt.
Alleen jammer dat het te copyeren gedeelte geselecteerd blijft.
Code:
Sub opslaan()
Application.ScreenUpdating = False
  Sheets("Week").[L9:L36].Copy
  Sheets("Jaar").[C65536].End(xlUp).Offset(1).PasteSpecial _
  Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Application.ScreenUpdating = True
End Sub

Als je dit nog toevoegt is dat ook opgelost:

Code:
Application.CutCopyMode = False
 
@Jack & ExcelAmateur.
Beide jullie oplossingen kopieren de juiste waarden.
Alleen lukt het mij dan niet om in cel Z13 het totaal op te laten tellen (waarde blijft dan 0:00)

@Haije.
Bij jou worden de waarden in verticale kolommen gezet i.p.v. horizontale en krijg ik (maar dat kan ook aan mij liggen) niet de juiste waarden gekopieerd.
 
met een loop, de matrix geeft enkel Textstrings

Code:
Sub kopie()
    Dim cel As Range, x As Long, y As Long, matrix As Variant
    y = [Jaar!c65536].End(xlUp).Offset(1).Row
    matrix = Split(Join(Array([L9], [L10], [L11], [L12], [L13], [L14], [L15], [L16], [L20], [L21], [L22], [L24], [L25], [L26], [L27], [L29], [L30], [L31], [L32], [L34], [L35], [L36]), "|"), "|")
    For x = LBound(matrix) To UBound(matrix)
        Sheets("Jaar").Cells(y, x + 3) = matrix(x) * 1
        Sheets("Jaar").Cells(y, x + 3).NumberFormat = "[h]:mm"
    Next
End Sub
 
met een loop, de matrix geeft enkel Textstrings

Code:
Sub kopie()
    Dim cel As Range, x As Long, y As Long, matrix As Variant
    y = [Jaar!c65536].End(xlUp).Offset(1).Row
    matrix = Split(Join(Array([L9], [L10], [L11], [L12], [L13], [L14], [L15], [L16], [L20], [L21], [L22], [L24], [L25], [L26], [L27], [L29], [L30], [L31], [L32], [L34], [L35], [L36]), "|"), "|")
    For x = LBound(matrix) To UBound(matrix)
        Sheets("Jaar").Cells(y, x + 3) = matrix(x) * 1
        Sheets("Jaar").Cells(y, x + 3).NumberFormat = "[h]:mm"
    Next
End Sub

G E W E L D I G !!!

Het werkt. Optellen gaat ook goed.
Nogmaals bedankt.

Vriendelijke groet, Ton
 
@EvR
Toch nog een klein vraagje.
Als ik het sheet "Jaar" bladbeveilig (m.u.v. de in te vullen cellen natuurlijk) dan wil de macro niet meer alle waarden van sheet week kopieeren. Foutopsporing geeft dan een gele regel op: Sheets("Jaar").Cells(y, x + 3) = matrix(x) * 1 respectievelijk
Sheets("Jaar").Cells(y, x + 3).NumberFormat = "[h]:mm"

Heeft dit te maken met "Cells(y, x + 3)? (deze kolommen zijn dan namelijk schrijfbeveiligd).

Wat doet deze Y, x eigenlijk?

Groet Ton
 
Als ik het sheet "Jaar" bladbeveilig (m.u.v. de in te vullen cellen natuurlijk)
Vink dan ook de Celeigenschappen aan in het lijstje van Blad Beveiligen of gebruik UserInterFaceOnly = true in de code om de beveiling niet van toepassing te laten zijn op de uitvoering van macro's

Wat doet deze Y, x eigenlijk?

Y is in dit geval de rijwaarde (eerste lege rij) en X+3 de kolomwaarde waarbij X de indexwaarde van 0 tot het einde van de Matrix is
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan