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

Ongewenste afronding op 2 decimalen

Status
Niet open voor verdere reacties.

Revolutionary

Gebruiker
Lid geworden
1 apr 2009
Berichten
183
Goedemiddag allemaal,

Met behulp van de helpers op dit forum heb ik een aantal weken geleden een vba-code opgesteld waarbij een rij wordt overgekopieerd van het ene tabblad naar het andere tabblad. Ik kom er zojuist achter dat een deel van de data die wordt overgekopieerd afgerond wordt op 2 decimalen, terwijl dat bij de andere data niet gebeurd. In de vba-code kan ik geen gekke dingen vinden (maar ik ben ook geen expert). Heeft een van jullie een idee waarom dat sommige data wordt afgerond op 2 decimalen en andere data niet wordt afgerond? Ik wil namelijk dat er niets wordt afgerond.

De vba-code ziet er als volgt uit:
Code:
Sub Macro1()
Dim response As VbMsgBoxResult
If Selection.Column() <> 3 Then
MsgBox "Select a cell in column C and press the button again."
Exit Sub
End If
response = MsgBox("Are you sure you want to move this order to sheet ""Finished""?" & Chr(13) & "This action can not be undone!" & Chr(13) & "Be sure that the cursor is placed on the right place in Column C!", vbYesNo)

If response = vbYes Then
   ActiveSheet.Unprotect
   With ActiveCell
        ['Finished'!A65536].End(xlUp).Offset(1).Resize(, 28) = .Resize(, 28).Value
        .EntireRow.ClearContents
        End With

MsgBox "The order has been copied to sheet ""Finished"".", vbOKOnly
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
If response = vbNo Then
    End
End If
End Sub

Korte samenvatting van de vba-code: de code werkt alleen wanneer een cel in kolom c wordt geselecteerd, vervolgens wordt de rij met gegevens overgezet naar een ander tabblad. Het vreemde is dat de data in kolom D wordt afgerond op 2 decimalen en alle andere data niet wordt afgerond...

Alvast bedankt!

Groeten,
Tim
 
Tim

Deze regel:

Code:
['Finished'!A65536].End(xlUp).Offset(1).Resize(, 28) = .Resize(, 28).Value

zet ergens waarden die overkomen van ergens anders. Deze code neemt geen opmaak mee over. M.a.w. de opmaak in de cellen waar de gegevens terecht komen, blijft gewoon behouden. Die zal dan soms 2 decimalen hebben, soms anders.

Wigi
 
Bedankt voor je reactie Wigi!:thumb:

Toch klopt er iets niet, de opmaak in de cellen waar de gegevens naar toegekopieerd worden is gezet op 5 decimalen. Het vreemde is, dat de macro blijkbaar zelf de getallen afrond en dat er daardoor als het ware een deel van de informatie verloren gaat.

Ik zal het proberen uit te leggen: in kolom D staat bijvoorbeeld: 0,00940, na het uitvoeren van de macro komt er in een ander tabblad in kolom B te staan: 0,01000. Dus de macro rondt het getal af en dat kan niet meer teruggedraaid worden, ook niet door de opmaak te veranderen. De waarden in andere kolommen worden niet afgerond voor zover ik weet. Iemand een idee hoe dat kan komen?

Tim
 
Inmiddels zijn er weer een paar dagen verstreken, ik heb het forum ondertussen wat afgezocht naar mogelijke oplossing, maar niks kunnen vinden. Heeft iemand een idee hoe ik dit probleem kan oplossen?

Groeten,
Tim
 
zit er nog niet ergens een andere macro (worksheet_change of zo) de zaak te verknoeien ? zet anders eens application.enableevents=false net voor die lijn en ....=true er net achter
 
voorbeeldbestandje?

Tim,

zou je het betreffende bestand (ontdaan van evt "gevoelige" info) als bijlage kunnen posten?
 
Bedankt voor jullie snelle reactie!

Hierbij een voorbeeld bestandje. Wat mij inmiddels is opgevallen, is dat data in valuta's wel worden afgerond en data als gewoon getal niet wordt afgerond...

Groeten,
Tim

Bekijk bijlage Voorbeeld.rar
 
zipje?

Tim,

kun je het bestand ook Zippen? Ik kan helaas geen rar bestanden openen....
 
Beste Haije,

Ik heb helaas geen winzip op mijn laptop. Ik heb het geprobeerd op internet te downloaden maar voor de legale versie moet je betalen zag ik, en aangezien ik altijd de gratis versie van winrar gebruik vind ik het zonde van mijn geld om winzip aan te schaffen. Ik heb geprobeerd om het excelbestand ongecomprimeerd op het forum te plaatsen, maar dat is niet mogelijk omdat er een macro in het bestandje zit.

Is er een andere mogelijkheid?

Groeten,
Tim
 
Probeer eens het stukje code beginnend met "With ActiveCell" te vervangen door onderstaande.
Code:
With ActiveCell
        
        .Resize(, 28).Copy ['Finished'!A65536].End(xlUp).Offset(1).Resize(, 28)
        .EntireRow.ClearContents

End With
 
Beste WHER,

Bedankt voor je hulp! Ik heb jouw code geprobeerd en hij werkt want de data in valuta wordt niet meer afgerond, maar met deze code worden de formules ook meegekopieerd en aangezien de formules verwijzen naar bepaalde vaste cellen in het eerste tabblad levert dit onjuiste gegevens op in het tabblad waar de data naar wordt gekopieerd. Dus wat ik eigenlijk nodig heb is een code die alleen de waarde kopieert, maar die niet de gegevens in valuta afrond op 2 decimalen...

Iemand een idee?

Groeten,
Tim
 
En met PasteSpecial?
Code:
With ActiveCell
        
        .Resize(, 28).Copy
        Worksheets("Finished").Range("A65536").End(xlUp).Offset(1).Resize(, 28).PasteSpecial xlValues
        Application.CutCopyMode = False

        .EntireRow.ClearContents

End With
 
Laatst bewerkt:
of gewoon zo...
Code:
   ...
      With ActiveCell
        .Resize(, 28).Copy ['Finished'!A65536].End(xlUp).Offset(1)
       ...

Groet, Leo
 
WHER en Leo bedankt voor jullie hulp:thumb:

Ik gebruik de code van WHER, want met die code worden alleen de waarden meegekopieerd en niet de formules.

Ik zet deze topic op opgelost:)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan