Hittar inget forum för VBA så jag provar här. Alltså... mitt kvar från förra tråden kvarstår: CDate funktionen var bra den klarade att tolka " 1.56.20" som en giltligt tid. Anledningen är förmodligen att Excel 2003 har blivit hårdare med reglerna för vad som är tal och inte.Exel VBA Läsa in värde från cell till variabel
I en cell skall finnas ett tidvärde med format "tt:mm:ss". Vi hämtar uppgifter från olika hemsidor genom att markera och kopiera tidstabeller. Vi klistrar in dessa i excel. Ibland kommer tidsformatet med punkt(.) alltså "tt.mm.ss".
När min kod läser in dessa tidsvärden till en double variabel får jag olika resultat beroende på (som det verkar) vilken version av excel vi använder.
Om tiden i cellen är "1.56.20", och excel har uppfattat detta som en sträng, tolkar excel 2000 det som talet 15620. Medan excel 2003 spårar ur och säger fel 13 "inkomplatibla typer".
Min fråga är nu är det en inställning i VBA editorn som gör att strängen tolkas som ett tal?
Min kod ser ut så här:
Dim Tidin As Double
Tidin = tid.Offset(rowOffset:=0, columnOffset:=3).Value
Om jag undersöker cellens format med
a = boat.Offset(rowOffset:=0, columnOffset:=3).NumberFormatLocal
får jag resultatet "[h]:mm:ss".Sv: Exel VBA Läsa in värde från cell till variabel
<info>
Satsa istället på att antingen:
1. Se till att det sparas i tid/datumformat, och hämta upp det som en Date-variabel.
2. Se till att det sparas i strängformat, hämta upp det, och omvandla på lämpligt vis till en date eller double (antal sekunder etc.).
</info>
Detta gör du genom att ändra nummerformatet.
Jag ser inte varför du vill omvandla strängen till ett så märkligt uppbyggt tal. Du vill väl ha det som ett datum?
Använd då
<code>
Dim myDate as Date
myDate = cdate(Cells(...).Value)
</code>
Om du prompt ska ha det på det skumma sättet är det väl snyggaste med något i stil med:
<code>
i = CInt(CStr(Cells(...).Value))
'Eller
i = CInt(Format("hhmmss", cells(...).value))
'Eller
i = Cint(Replace(cstr(cellc(...).value, ".", ""))
</code>
... inte för att något av alternativen är speciellt snyggt.Sv:Exel VBA Läsa in värde från cell till variabel
Men en jag är fortfarande nyfiken på varför Excel 2000 inte spårar ur men att 2003 gör det.
Tidin är en Double
Tidin =Worksheets("Sheet1").Cells(5, 3).Value
Cellen C5 har värdet " 1.56.20"Sv: Exel VBA Läsa in värde från cell till variabel