Just nu i M3-nätverket
Gå till innehåll

VBA,decimaler försvunna


Dwinnie

Rekommendera Poster

Hej!

 

Nu har jag ett litet (o)lustigt problem.

faktor = .Cells(valuta.Row - 1, valuta.Column).Value

Set jfrDatumCell = .Columns(1).Find(jfrDatum)

kurs = .Cells(jfrDatumCell.Row, valuta.Column).Value / faktor

 

Faktor är 1 eller 100 och det beror på hur värdefull valutan är (om kursen är angiven i 100 DEM t ex eller 1 EURO). jfrDatum är det datum för vilket kursen ska tas fram. kurs är alltså det jag sedan multiplicerar med de svenska kronorna för att få fram beloppet i SEK. Nu till mitt problem: Decimalerna försvinner från "kurs". När värdet skrivs till ett nytt blad så är det bar ett heltal. Vad är det jag har missförstått?

 

MVH,

 

Mattias

 

Länk till kommentar
Dela på andra webbplatser

Mattias,

 

Är variabeln kurs deklarerad som Integer?

Om ja, så använd datatypen Long instället.

 

Vilken värden antar variablerna faktor och

.Cells(jfrDatumCell.Row, valuta.Column).Value?

 

Innan du tilldelar kurs värdet av divisionen i din kod så infoga:

 

Debug.Print faktor & " " & .Cells(jfrDatumCell.Row, valuta.Column).Value

 

Mvh

Dennis

Besök Sveriges ledande oberoende webbplats om MS Excel: http://www.xldennis.com

 

Länk till kommentar
Dela på andra webbplatser

Nu har det löst sig! Jag ändrade så att kurs deklarerades som double istället för long. Men jag förstår inte varför det fungerar =)

 

MVH Mattias

 

 

 

Klantade mig lite, sorry...

Allt är deklararerat som long. Debugutskriften för faktor ger 1 och värdet för den andra delen av debugutskriften ger rätt värde.

 

 

Här kommer koden. Det märks kanske att jag inte jobbar professionellt med det här =)

 

Mattias

 

 

Private Sub okButton_Click()

Dim jfrDatum As Variant, Datum As Variant

Dim valuta As Range, jfrDatumCell As Range, sist As Range

Dim moms As Long, uMoms As Long, faktor As Long, kurs As Long

Dim rad As Integer

 

With Inmatning

Datum = Me.fakturaDatumBox.Text

jfrDatum = DateSerial(Year(Datum), Month(Datum), 1)

End With

 

With ThisWorkbook.Worksheets(1).Range("b3:at3")

If EUR.Value = True Then

Set valuta = .Find("SEKEUR")

ElseIf DKK.Value = True Then

Set valuta = .Find("SEKDKK")

ElseIf GBP.Value = True Then

Set valuta = .Find("SEKGBP")

ElseIf USD.Value = True Then

Set valuta = .Find("SEKUSD")

End If

End With

 

With oW.Worksheets(1)

faktor = .Cells(valuta.Row - 1, valuta.Column).Value

Set jfrDatumCell = .Columns(1).Find(jfrDatum)

Debug.Print faktor & " " & .Cells(jfrDatumCell.Row, valuta.Column).Value

 

kurs = .Cells(jfrDatumCell.Row, valuta.Column).Value

MsgBox kurs

kurs = kurs / faktor

End With

 

[inlägget ändrat 2003-03-31 14:53:20 av Mattias Qvist]

[inlägget ändrat 2003-03-31 15:12:03 av Mattias Qvist]

Länk till kommentar
Dela på andra webbplatser

I VBA hjälpen hittar du en beskrivnig på talformaten om du söker med CDbl.

Double kan innehålla decimaltal, long heltal.

bi

 

Länk till kommentar
Dela på andra webbplatser

Tackar! Vilket skämt, jag utgick från att det bara var integer som innehöll heltal utan att kolla upp det. Såhär i efterhand verkar det oerhört dumt =)

 

Mattias

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...