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

Klein hulpje gevraagd

Status
Niet open voor verdere reacties.

Theknurt

Gebruiker
Lid geworden
11 nov 2006
Berichten
130
Ik ben bezig met een makro te maken om een dump met tijden (negatief en positief) om te zetten naar de datumsysteem 1904 notatie om te zetten, zodat ik met negatieve tijden kan rekenen.....

De geimporteerde tijden uit de dump kunnen als -29:00 genoteerd staan.

Code:
If Left(waarde(a), 1) = "-" Then
           lentekst = Len(waarde(a))
           waarde(a) = Right(waarde(a), lentekst - 1)
           waarde(a) = "-" & Chr(34) & waarde(a) & Chr(34)
           Else


Als ik de negatieve waarde moet invoeren, moet dat met
Code:
- "09:00"
.

nu probeer ik bovenstaande code dit te bewerkstelligen, alleen lukt het niet.

kunnen jullie aangeven waar ik wat fout doe ???


Thanks
 
Heeft echt niemand een idee of tip voor mij, hoe ik het moet oplossen ??
 
Ik heb mij vraag in een voorbeeldje verwerkt.

Het tabblad import komt van een dump van een andere programma. dit is onbewerkt

In cel C5 staat een negatieve tijd (29:00 negatief).

middels een stukje VBA wil ik de waarden inlezen in het tabblad 'inlezen'.

Met datum_systeem 1904, zou ik de negatieve waarde moeten invoeren met ' -"29:00" '.
Alleen hoe moet ik dat verwerken in VBA....
 

Bijlagen

Wat de code verder moet doen weet ik niet en lijkt mij voor verbetering vatbaar.
Maar bij het wegschrijven moet ergens onderstaande code ingepast worden.

Code:
Selection.NumberFormat = "[h]:mm"

Die if, then,else constructie kan dan weggelaten worden.

Mvg

Piet
 
Wat de code verder moet doen weet ik niet en lijkt mij voor verbetering vatbaar.
Maar bij het wegschrijven moet ergens onderstaande code ingepast worden.

Code:
Selection.NumberFormat = "[h]:mm"

Die if, then,else constructie kan dan weggelaten worden.

Piet,

Bedankt voor de reactie, echter dit is nog niet het resultaat dat ik zou willen.

Heb de code (als proef) uitgedund en is maar een test[knutsel]code....

Code:
Sub waarden_ophalen()
Dim a As Integer, i As Integer, y As Integer
Dim waarde(0 To 250) As String
Dim lentekst As Integer

Worksheets("import").Select

Cells(1, 1).Select
ActiveCell.Offset(4, 2).Range("A1").Select

For a = 0 To 16
    waarde(a) = ActiveCell.Offset(0, a).Range("a1").Value
        Selection.NumberFormat = "[h]:mm"
Next a

Blad2.Select

Cells(1, 1).Select
ActiveCell.Offset(3, 1).Range("A1").Select

For a = 0 To 16
    ActiveCell.Offset(0, a).Range("a1").Value = waarde(a)
Next a


End Sub

Met deze optie zet ie de waarde zoals import neer...... dat zie je dat hij 'links' uitlijnt.

Kan je me misschien nog een beetje op weg helpen ??
 
Probeer dit eens


Code:
Sub WaardenOphalen()
Dim a As Integer
Dim waarde(0 To 250) As String
Blad1.Select
[C5].Select
For a = 0 To 16
    waarde(a) = ActiveCell.Offset(0, a).Value
Next a
Blad2.Select
[C4].Select
For a = 0 To 16
With ActiveCell.Offset(0, a)
    .Value = waarde(a)
    .NumberFormat = "[hh]:mm"
End With
Next a
End Sub

Mvg

Piet
 
Piet,

Wederom bedankt voor de suppersnelle reactie en de inkorting van de formule...

Echter dit is niet het resultaat wat ik zocht, het is namelijk niet mogelijk om deze gekopieerde waarden, het e.e.a. op te tellen c.q. af te trekken....

En dat is uiteindelijk wel de bedoeling........

via deze link zou ik het e.e.a. willen invoeren..... probeer het maar eens.

http://www.exceltip.com/st/Negative_times_in_Microsoft_Excel/525.html

is er nog een andere optie ??
 
Vanalles geprobeerd maar zonder resultaat.
Misschien iemand anders.
Jammer maar helaas

Mvg

Piet
 
Is dit iets in de richting van wat je zoekt?
Code is geschreven gewoon om C5 van de sheet import over te brengen naar B4 van sheet inlezen. Eventueel aanpassen voor een meer universeel gebruik:

Code:
Sub NegTimes()
Dim waarde As String
Dim teken As String

waarde = Worksheets("import").Range("c5")

If Left(waarde, 1) = "-" Then
    teken = "=-"
    waarde = Right(waarde, Len(waarde) - 1)
End If

Worksheets("inlezen").Range("b4").FormulaR1C1 = teken & Chr(34) & waarde & Chr(34)
End Sub

Laat je bevindingen maar weten.

edit: enkel te gebruiken wanneer de input negatieve uren bevat.
 
Laatst bewerkt:
Finch,

Met deze oplossing ga ik verder borduren. Want er zijn niet altijd negatieve tijden te verwerken..

Maar met deze oplossing werkt ie perfect en ik zal de vraag als opgelost zetten...

:p :cool:

Txs Theknurt
 
Hoi mede excelisten,

Ik ben toch nog even bezig geweest met de code die Finch mij aanreikte....

De eerste ingelezen regel gaat perfect.

Echter de daarop volgende regels, gaat het regelmatig mis. Vooral bij postieve getallen zoals '01:12".......

Kunnen jullie aangeven waar het fout gaat ?
 

Bijlagen

Heren en Dames,

Ik heb nu weer tijd gevonden om met mijn probleem verder te gaan.......

Heb het als volgt voor mekaar, maar volgens mij kan het op een simpelere manier.....

Let wel. Dit is een begin van een test omgeving.

Code:
Sub NegTimes()
Dim waarde As String
Dim teken As String
Dim Waarde2 As Date

waarde = Worksheets("SLD_WZNG_Wk3").Range("d6")

If Left(waarde, 1) = "-" Then
    teken = "=-"
    waarde = Right(waarde, Len(waarde) - 1)
    Worksheets("inlezen").Range("b4").FormulaR1C1 = teken & Chr(34) & waarde & Chr(34)
Else
    waarde = ""
    Waarde2 = Worksheets("SLD_WZNG_Wk3").Range("d6")
    Worksheets("inlezen").Range("b4") = Waarde2
End If

End Sub

Het is uiteindelijk de bedoeling dat de dump op SLD_WZNG_WK3 op een ander tabblad komt te staan met correcte tijd notatie's (positief en negatief)

Ik hoor wel wat jullie ervan vinden.
 

Bijlagen

En ik ben weer wat verder gegaan, alleen ziet er een beetje kleuter-school manier VBA programeren uit....... Maar het werkt wel....... en dat voor een beginneling.......

Code:
Sub NegTimes()
Dim waarde As String
Dim teken As String
Dim Waarde2 As Date
Dim I As Integer
Dim X As Integer


For I = 5 To Worksheets("SLD_WZNG_Wk3").Cells.SpecialCells(xlCellTypeLastCell).Row
    For X = 1 To 2
        waarde = Worksheets("SLD_WZNG_Wk3").Cells(I, X).Value
        Worksheets("inlezen").Cells(I, X).Value = waarde
    Next X
Next I
    

For I = 5 To Worksheets("SLD_WZNG_Wk3").Cells.SpecialCells(xlCellTypeLastCell).Row

    For X = 1 To 16
        
        waarde = Worksheets("SLD_WZNG_Wk3").Cells(I, X + 2).Value
       
        If Left(waarde, 1) = "-" Then
            teken = "=-"
            waarde = Right(waarde, Len(waarde) - 1)
         
            Worksheets("inlezen").Cells(I, X + 2).FormulaR1C1 = teken & Chr(34) & waarde & Chr(34)
        Else
            waarde = ""
            Waarde2 = Worksheets("SLD_WZNG_Wk3").Cells(I, X + 2).Value
            Worksheets("inlezen").Cells(I, X + 2).Value = Waarde2
        End If
    Next X
Next I

End Sub

Zou dit nog simpeler te (her) schrijven zijn, waarbij hetzelfde blijft gebeuren ??
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan