Avatar billede komputerdk Mester
03. august 2008 - 19:49 Der er 4 kommentarer og
1 løsning

nem måde at få dato ud af tekststreng (VBA)

hi

jeg skal have en dato ud af xx antal tekstfiler.

jeg har fået læst tekstfilerne ind i variablerne, men nu kommer problemstillingen.

Datoen står f.eks. som:

blabla bla  21. Januar 2009
bla bla

dette skal laves om til en tekststreng 210109

hvordan klares det på en nem og let måde (jeg havde oprindeligt brugt mid og instr i en sammenblanding, men den kan ikke klare at tekststrengen er kortere nogen gange (1. maj 2009)

tak for hjælpen
Avatar billede kabbak Professor
03. august 2008 - 20:38 #1
prøv med

Dstreng =#21. Januar 2009 #
Dato = Format(Dstreng,"ddmmyy")
Avatar billede kabbak Professor
03. august 2008 - 23:44 #2
Prøv at køre strengen igennem denne funktion
strengen kommer tilbege i Datoskift

Public Function Datoskift(Ord As String) As String
    Dim Dag As String, Måned As String, År As String
    Dim D As Variant, F As Integer, I As Integer, L As Integer
    D = Array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December")

    For I = 0 To 11
        F = InStr(1, Ord, D(I))
        If F > 0 Then
            L = Len(D(I))
            Dag = Mid(Ord, F - 4, 2)
            If I + 1 < 10 Then
                Måned = "0" & I + 1
            Else
                Måned = I + 1
            End If
            År = Mid(Ord, F + L + 1, 4)
            Exit For
        End If
    Next
    GL = Dag & ". " & D(I) & " " & År
    ny = Dag & Måned & Right(År, 2)
    Datoskift = Replace(Ord, GL, ny, 1)
End Function
Avatar billede komputerdk Mester
05. august 2008 - 05:59 #3
den tilgang havde jeg ikke tænkt på  (2) - 1 kan ikke bruges, da strengen nogen gange er 1. maj 2009 bla
:)
koden har dog kun svaghed, den er casesensitiv  - hvilket dog nemt kan klares med lcase..

point på vej - opgaven er klaret smart  !
Avatar billede kabbak Professor
05. august 2008 - 08:06 #4
et svar ;-))
Avatar billede kabbak Professor
05. august 2008 - 08:10 #5
Dagen

if val(Mid(Ord, F - 4, 2)) > 9 then
Dag = Mid(Ord, F - 4, 2)
else
Dag = "0" & val(Mid(Ord, F - 4, 2))
end if
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester