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

2 macro's om cel te vullen met "Tijdstip nu" zitten elkaar in de weg.

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

Louw

Gebruiker
Lid geworden
13 feb 2017
Berichten
13
Best forum,

Ik heb twee knoppen toegevoegd met elk een macro er onder om een bepaalde cel te vullen met Tijdstip=nu.
Als ik 1 macro heb werkt het prima. Maar zodra ik 2 macro's heb gaat het fout. Als ik de knoppen gebruik, worden beide cellen gevuld tijdstip nu.
Wat ik dus wil is als ik op knop 1 klik de begintijd wordt gevuld met tijdstip nu en als ik tien minuten later op knop 2 klik de eindtijd wordt gevuld met tijdstip nu.
Alvast bedankt.

Code:
' Begintijd
'

'
    Range("G5").Select
    ActiveCell.FormulaR1C1 = "=NOW()"
    Range("G5").Select
End Sub

Code:
' Eindtijd
'

'
    Range("G6").Select
    ActiveCell.FormulaR1C1 = "=NOW()"
    Range("G6").Select
End Sub
 
Test dit eens,

Code:
Sub Begintijd()
  With Range("G5")
     .Formula = "=NOW()"
  End With
End sub
 
Of:
Code:
Sub Begintijd()
    With Range("G5")
        .Value = Time()
        .NumberFormat = "h:mm:ss"
    End With
End Sub

Of met datum:
Code:
Sub Begintijd()
    With Range("G5")
        .Value = Now()
        .NumberFormat = "DD-MM-YYYY h:mm:ss"
    End With
End Sub
 
Laatst bewerkt:
Helaas ik heb ze beiden gebruikt. Ook de ene voor begintijd en de andere voor eindtijd. Het lijkt erop dat zodra de macro's worden gebruikt alle cellen met =Now() worden vernieuwd.
 
Gelukt! IK gebruik de formule =NOW() om het tijdstip te gebruiken en kopier en plak de tijd als waarde :)

Code:
Sub Begintijd()
'
' Begintijd Macro
'

'
    Range("G5").Select
    ActiveCell.FormulaR1C1 = "=NOW()"
    Range("G5").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.NumberFormat = "[$-F400]h:mm:ss AM/PM"
End Sub
 
Cellen met =NOW() worden altijd vernieuwd.
Daarom staat dat ook niet in de code die ik plaatste.

Je hele code van Select, Copy en Paste is nergens voor nodig.
 
Laatst bewerkt:
Heb het dan niet goed getest blijkbaar. Maar ik ben er nu met een omweggetje gekomen. Thanks :)
 
Heb je korte code nog weer geprobeerd en het werkt.

Code:
 With Range("G5")
        .Value = Time()
        .NumberFormat = "h:mm:ss"
    End With
End Sub
 
Volgens mij gaat het zo ook goed.

Code:
Range("G5") = Format(Now, "h:mm:ss")
 
Niet aan gedacht, maar klopt helemaal :thumb:
 
Voor de zekerheid:

Code:
cells(5,7)= Format(Now, "'h:mm:ss")
 
Een beetje afhankelijk van de celeigenschappen natuurlijk.;)
 
VenA wat is het voordeel van jouw code? Gewoonweg omdat ie korter en dus sneller?
 
Een korter code is niet per definitie sneller maar vaak wel omdat elke stap in de code doorlopen moet worden. Het meest vertragend zijn de handeling die je in het werkblad doet. In mijn code wordt de cel maar 1 keer 'aangesproken'; ga naar G5 en zet daar de huidige tijd in het juiste formaat neer.

In de andere iets minder korte code is het meer van: we gaan wat met G5 doen aha de huidige tijd er inzetten oh en ook nog het formaat aanpassen. Maar daar merk je in dit geval niets van.

In jouw code ga je nog een stap verder door eerst de cel te selecteren. Als iets een code traag maakt is dat het gebruik van Select wel.

Voor in een testbestandje om 1000 cellen om het verschil te zien.
Code:
Sub VenA_select()
For j = 1 To 1000
  Cells(j, 1).Select
  ActiveCell = Format(Now, "h:mm:ss")
Next j
End Sub

Code:
Sub VenA()
  Cells(1, 2).Resize(1000) = Format(Now, "h:mm:ss")
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan