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

Getal word in verkeerd formaat weergegeven

Status
Niet open voor verdere reacties.

DJ.Funny

Gebruiker
Lid geworden
17 jan 2006
Berichten
112
Beste Specialisten,

Ik heb een Excel waarin ik een bepaalde selectie opsla als csv, nu gebeurd het volgende:

wanneer er een getal staat 1,00 dan word deze opgeslagen in de csv als 1 echter wanneer ik 1,25 opsla, dan word deze in de csv opgeslagen als 1,25 en aangezien de komma ook het lijstscheidingsteken is, ziet ie dus een kolom waarin staat 1 en een kolom waarin staat 25?

Ik krijg het niet opgelost?

Code:
Sub DirkVrolijk()
  
  Dim MyName
  MyName01 = Range("v1").Value
  MyName02 = Range("u1").Value
    
  c00 = "C:\temp\" & MyName01 & "\basis_" & MyName02 & ".csv"
  ar = Range("A2:N" & Cells(Rows.Count, 9).End(xlUp).Row)
  For j = 1 To UBound(ar)
    For jj = 1 To UBound(ar, 2)
      c01 = c01 & ar(j, jj) & IIf(jj = UBound(ar, 2), "", ",")
    Next jj
    c01 = c01 & vbCrLf
  Next j
  CreateObject("scripting.filesystemobject").CreateTextFile(c00).write c01
End Sub
 

Bijlagen

  • verkoopprijzen_vraag.xlsm
    33,5 KB · Weergaven: 15
Als je een getal omzet naar tekst dan gebruikt VBA je Windows instellingen om te bepalen welk decimaalscheidingsteken het moet gebruiken. Omdat je getallen toevoegt aan een string converteert VBA de getallen naar tekst op die manier. Je moet de Str functie gebruiken, die gebruikt automatisch de decimale punt:
Code:
c01 = c01 & Str(ar(j, jj)) & IIf(jj = UBound(ar, 2), "", ",")
 
Laatst bewerkt:
Daarnaast heb je een met een wachtwoord beveiligd document geplaatst.
 
Hmmmm aangepast, maar dat trekt ie niet!! Wordt uit Excel gemikt??

Code:
Sub DirkVrolijk()
  
  Dim MyName
  MyName01 = Range("v1").Value
  MyName02 = Range("u1").Value
    
  c00 = "C:\temp\" & MyName01 & "\basis_" & MyName02 & ".csv"
  ar = Range("A2:N" & Cells(Rows.Count, 9).End(xlUp).Row)
  For j = 1 To UBound(ar)
    For jj = 1 To UBound(ar, 2)
      'c01 = c01 & ar(j, jj) & IIf(jj = UBound(ar, 2), "", ",")
      c01 = c01 & Str(ar(j, jj)) & IIf(jj = UBound(ar, 2), "", ",")
    Next jj
    c01 = c01 & vbCrLf
  Next j
  CreateObject("scripting.filesystemobject").CreateTextFile(c00).write c01
End Sub

2019-11-28 11_09_23-Microsoft Excel.png
2019-11-28 11_09_27-Microsoft Excel.png

Als je een getal omzet naar tekst dan gebruikt VBA je Windows instellingen om te bepalen welk decimaalscheidingsteken het moet gebruiken. Omdat je getallen toevoegt aan een string converteert VBA de getallen naar tekst op die manier. Je moet de Str functie gebruiken, die gebruikt automatisch de decimale punt:
Code:
c01 = c01 & Str(ar(j, jj)) & IIf(jj = UBound(ar, 2), "", ",")
 
Gevalletje niet opletten?? Excuus!! Nu zonder wachtwoord :shocked:
 

Bijlagen

  • verkoopprijzen_vraag.xlsm
    27,9 KB · Weergaven: 21
Maak er eens dit van:
Code:
c01 = c01 & Replace(ar(j, jj), ",", ".") & IIf(jj = UBound(ar, 2), "", ",")
 
Heel vreemd, die crash. Mijn code zou gewoon moeten werken.
 
Het gebeurde bij mij ook.
Vond het ook vreemd, maar vandaar dat alternatief.
 
De functie cell kan je beter niet gebruiken in een werkblad omdat deze taalgevoelig is. De naam van het blad kan je eenvoudig ophalen in VBA. Als je gebruik maakt van tabellen gebruik deze dan ook in VBA. Een variabele declareren die je niet gebuikt en andere variabelen gebruiken die je niet declareert is niet echt logisch.:d

Code:
Sub DirkVrolijk()
  With Sheets("basisprijzen")
    ar = .ListObjects(1).DataBodyRange
    '....
    '....
    CreateObject("scripting.filesystemobject").CreateTextFile("C:\temp\" & .Name & "\basis_" & Sheets("voorblad").Cells(3, 3) & ".csv").write c01
  End With
End Sub
 
Laatst bewerkt:
de CELL functie werkt prima in alle taalversies zolang je de engelse argumentnamen gebruikt, dus =CEL("filename") werkt gewoon in een Nederlandse Excel.
 
Volgens mij niet in alle versies. Maar is in deze wel overbodig;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan