07. oktober 2003 - 20:51Der er
19 kommentarer og 1 løsning
Formatering af tal i VBA
Jeg har en række semikolonsepareret strenge, som indeholder decimaltal. Når jeg har fået delt mine data delt op i rækker og kolonner og vil indsætte en kurve. Opfatter diagrammet ikke tallene som decimaltal, men som 0. I cellen står tallene rigtig nok med komma. Jeg har prøvet med : format(tal,"#0,0") i VBA-koden men det hjælper ikke. Det er som om det bliver omfattet som "#0.0" Er der nogen, som har en idé ?
En formatering af tallene i VBA, har ikke indflydelse på det format de får i regnearket. Her er det cellernes format, der er afgørende. Men du kan evt. ændre på celleformatet efter at tallene er sat ind.
Har du fx indsat et tal i a3, kan du køre denne kodelinie, for at formatere cellen som tal med to decimaler:
Ja, men det hjælper ikke at formater cellen. Værdien i cellen bliver nok ikke opfattet som et tal. Hvis man skriver et tal i en celle, vil tallet komme til at stå i højre side af cellen. mine værdier står i venstre side ??? selv efter formateringen.
Public Sub sorter() Dim RC, CC As Integer ' Række og kolonne Dim ARK1, ARK2 As String ' ark navne Dim Streng As String Dim Semi As String RC = 1 ARK1 = "Rådata" ARK2 = "Kurvedata" Semi = ";" Application.ScreenUpdating = False Sheets(ARK2).Select Do While Sheets(ARK1).Cells(RC, 1).Value <> "" Streng = Sheets(ARK1).Cells(RC, 1).Value CC = 1 Do While InStr(Streng, Semi) > 0 If CC > 3 And CC < 13 And RC > 1 Then ' ny Cells(RC, CC).Value = Val(Left(Streng, InStr(Streng, Semi) - 1)) 'ny laver tal Else ' ny Cells(RC, CC).Value = Left(Streng, InStr(Streng, Semi) - 1) ' laver tekst og datoer End If ' ny Streng = Mid(Streng, InStr(Streng, Semi) + Len(Semi)) CC = CC + 1 ' ny kolonne Loop Streng = "" RC = RC + 1 ' Ny række Loop Application.ScreenUpdating = True End Sub
Iøvrigt skulle Format(x, "#.##") være helt overflødig, hvis tallet skal ind i en celle, men hvis der er et komma som adskilder til decimalerne, så kan løsningen se således ud: CDbl(Replace(tal-strengen, ",", "."))
Kabak her du selv kørt den ? val sætningen stjæler mine decimaler. Hvis den erstattes med den foreslået CDbl får jeg en kørselsfejl når talkolonnerne er tomme.
Virker ikke med CDbl("" & tal-string) Streng ser sådan ud når det virker "5;7-10-03;15:25;1;0;4,0;0;0;16,0;-36,0;6,9;0,0;PRØVETAGNING:;;;5;" Sådan nå det ikke virker ";;;;;;;;;;;;START TID 3-10-03 13:00;3-10-03;13:00;6;"
Jeg har valgt at bruge Kabbak svar, da har har sendt mig en færdig løsning. Tak for hjælpen til alle. Hvis du lige vil give et svar, så vil jeg give dig dine point.
Public Sub sorter() Dim RC, CC As Integer ' Række og kolonne Dim ARK1, ARK2 As String ' ark navne Dim Streng As String Dim Semi As String Dim DM As Double RC = 1 ARK1 = "Rådata" ARK2 = "Kurvedata" Semi = ";" Application.ScreenUpdating = False Sheets(ARK2).Select Do While Sheets(ARK1).Cells(RC, 1).Value <> "" Streng = Sheets(ARK1).Cells(RC, 1).Value CC = 1 Do While InStr(Streng, Semi) > 0 If CC > 3 And CC < 13 And RC > 1 Then ' ny If Val(Left(Streng, InStr(Streng, Semi) - 1)) <> 0 Then DM = Left(Streng, InStr(Streng, Semi) - 1) Cells(RC, CC).Value = DM 'ny laver tal Else Cells(RC, CC).Value = 0 End If Else ' ny Cells(RC, CC).Value = Left(Streng, InStr(Streng, Semi) - 1) ' laver tekst og datoer End If ' ny Streng = Mid(Streng, InStr(Streng, Semi) + Len(Semi)) CC = CC + 1 ' ny kolonne Loop Streng = "" RC = RC + 1 ' Ny række Loop Application.ScreenUpdating = True End Sub
Synes godt om
Ny brugerNybegynder
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.