Jag håller på att bli galen på detta. Hur ändrar jag punkt till comma i celler?
Om jag gör det med knappen 'replace' i excel fungerar det.
Om jag spelar in ett macro när jag använder kanppen funkar det.
Men om jag sen använder exakt samma kod som jag spelat in fungerar det inte.
Tänkte på en sak.
Jag behöver egentligen inte ha siffrorna i kolumn A och B, så om det finns någon annan lösning så går det lika bra.
Typ att man lägger till två nya kolumner och där gör någon förvandling.
Som ni kanske ser så är det GPSdata, och tanken är att jag ska göra ett macro som fixar till siffrorna så jag kan göra en overlay på en video.
Och då måste jag ha GPSdatan i commaformat för att kunna räkna ut sträckan mellan två GPSpunkter.
Så kort och gott, lösningen behöver inte vara snygg eller smidig bara den gör jobbet
Tanken är att jag skulle skapa en Private sub workbook_open() som körs var gång excel startar.
Och när jag då startar excel ska den kolla om det är en csv-fil och då fråga om jag vill köra makrot.
Koden fungerar men ändå inte.
När jag öppnar en csv-fil körs makrot men det stannar vid extension=mid(.....
Och anledningen till att det stannar är för att wkbName är tomt.
Om jag nu stoppar koden och sen kör den igen så går allt genom.
Så det verkar som att när jag öppnar csv-filen så "hinner" inte excel förstå att den öppnat en fil innan makrot körs (?).
Första for-loopen är till för att kolla vilken fil som är öppen, om jag bara använder thisworkbook.name så visar den xlam-filen (add-in filen).
Andra for-loopen är till för att få fram vilken filtyp det är på filen, här borde den veta att det är en csv-fil som är öppen och då "sortera bort" namnet från filändelsen.
koden:
(strecket visar var koden stannar när den körs första gången.)
Private Sub Workbook_Open()
Dim A As Double
Dim wkbName As String
Dim wkb As Workbook
'ThisWorkbook.Activate
For Each wkb In Workbooks
wkbName = wkb.Name
Next
For i = Len(wkbName) To 2 Step -1
c = Mid(wkbName, i, 1)
If c = "." Then
pos = i + 1
Exit For
End If
Next
extension = Mid(wkbName, pos, (Len(wkbName) + 1 - pos))
____________________________________________________________
If extension = "csv" And Range("A1").Value = "LATITUDE" And Range("B1").Value = "LONGITUDE" And Range("C1").Value = "ALTITUDE" And Range("D1").Value = "SPEED" Then
Response = MsgBox(prompt:="Run GPS-Script?", Buttons:=vbYesNo)
If Response = vbNo Then
Exit Sub
End If
Else
Exit Sub
End If
Columns(1).Insert
Rows(2).Insert
Rows(2).Insert
LastRow = Range("B" & Rows.Count).End(xlUp).Row
Range("B4", "E" & LastRow).NumberFormat = "@"
For Each Dcell In Range("B4", "E" & LastRow)
A = Replace(Dcell.Value, ".", ",")
Dcell.Value = A
Next
Columns(4).Insert
Range("D:D").NumberFormat = "0"
Range("D5").Value = "=ACOS(COS(RADIANS(90-B4)) *COS(RADIANS(90-B5)) +SIN(RADIANS(90-B4)) *SIN(RADIANS(90-B5)) *COS(RADIANS(C4-C5))) *6371000"
Range("D6").Value = "=D5+ACOS(COS(RADIANS(90-B5)) *COS(RADIANS(90-B6)) +SIN(RADIANS(90-B5)) *SIN(RADIANS(90-B6)) *COS(RADIANS(C5-C6))) *6371000"
Range("D6", "D" & LastRow).FillDown
Columns(6).Insert
Range("E:G").NumberFormat = "0"
Range("F5").Value = "=((E4-E5)/1000)*60*60"
Range("F5", "F" & LastRow).FillDown
Columns(8).Insert
Range("H:H").NumberFormat = "0.000"
Range("H5").Value = "=G5/F5"
Range("H5", "H" & LastRow).FillDown
Range("I:I").TextToColumns Destination:=Range("I1"), DataType:=xlDelimited, Other:=True, OtherChar:="Z"
Range("I:I").TextToColumns Destination:=Range("I1"), DataType:=xlDelimited, Other:=True, OtherChar:="T"
Range("A1", "K1").ClearContents
Range("B1").Value = "Latitude"
Range("C1").Value = "Longitude"
Range("D1").Value = "H-Distance"
Range("E1").Value = "Altitude"
Range("F1").Value = "V-Speed"
Range("G1").Value = "H-Speed"
Range("H1").Value = "Glide"
Range("I1").Value = "Date"
Range("J1").Value = "Time"
Range("A2").Value = "Max"
Range("A3").Value = "Min"
Range("F2").Value = "=MAX(F5:F" & LastRow & ")"
Range("F3").Value = "=MIN(F5:F" & LastRow & ")"
Range("G2").Value = "=MAX(G5:G" & LastRow & ")"
Range("G3").Value = "=MIN(G5:G" & LastRow & ")"
Range("H2").Value = "=MAX(H5:H" & LastRow & ")"
Range("H3").Value = "=MIN(H5:H" & LastRow & ")"
Cells.Columns.AutoFit
End Sub