afrundingsproblem i forbindelse med skrivning tilbage i regnearke
Jeg bruger nedenstående kode til at indtaste info i et regneark. Jeg har et problem i rutinen der skriver data tilbage til regnearket. Når gas og el skrives i arket sker det fint med decimaler, men når tallet for vandforbruget skrives tilbage, så sker der en afrunding - selvom jeg bruger samme funktion til at gemme data med. Det er lidt frustrerende ikke at kunne gennemskue det - kan du?Option Explicit
Dim dage, ny_gas, ny_el, ny_vand, gl_gas, gl_el, gl_vand, gas, el, vand As Integer
Private Sub CmdAnnuler_Click()
Unload Me
End Sub
Private Sub UserForm_Activate()
txtGas.Text = Round(hent_gl_data("gas", "S6"), 1)
txtEl.Text = Round(hent_gl_data("el", "O6"), 1)
txtVand.Text = Round(hent_gl_data("vand", "N6"), 1)
txtantal_dage = 7
txtDato.Text = Format(Now, "dd-mm-yy")
gl_gas = txtGas.Text
gl_el = txtEl.Text
gl_vand = txtVand.Text
End Sub
Private Sub CmdGem_Click()
Dim a As Integer
'ResetArk
Application.ScreenUpdating = True
If txtGas.Value = "" Then
MsgBox "Der skal angives en værdi for gas"
txtGas.SetFocus
End If
If txtEl.Value = "" Then
MsgBox "Der skal angives en værdi for el"
txtEl.SetFocus
End If
If txtVand.Value = "" Then
MsgBox "Der skal angives en værdi for vand"
txtVand.SetFocus
End If
If txtantal_dage = "" Then
MsgBox "Der skal angives en værdi for dage"
txtantal_dage.SetFocus
End If
ny_gas = txtGas.Value
ny_el = txtEl.Value
ny_vand = txtVand.Value
dage = txtantal_dage.Value
'Beregn forbrug
gas = gl_gas + ((ny_gas - gl_gas) / dage * 7)
el = gl_el + ((ny_el - gl_el) / dage * 7)
vand = gl_vand + ((ny_vand - gl_vand) / dage * 7)
'gem nye data (streng, celle, værdi, talformat)
a = gem_data("gas", "S65536", gas, "00000.0")
a = gem_data("el", "O65536", el, "0000.0")
a = gem_data("vand", "N65536", vand, "0000.0")
Unload Me
End Sub
Sub ResetArk()
Dim x As Long
x = ActiveSheet.UsedRange.Rows.Count
End Sub
Function hent_gl_data(streng, celle)
Dim x As Integer
Dim var1 As String
x = ActiveSheet.UsedRange.Rows.Count
Worksheets(streng).Select
Range(celle).End(xlDown).Select
var1 = ActiveCell.Address
hent_gl_data = CSng(Range(var1).Value)
End Function
Function gem_data(streng, celle, værdi, talformat) ' den er ikke korrekt
Dim x As Integer, var1 As String
x = ActiveSheet.UsedRange.Rows.Count
Worksheets(streng).Select
Sheets(streng).Range(celle).End(xlUp).Select
Range(celle).End(xlUp).Select ' ok hertil
var1 = ActiveCell.Address
' sætter formatet for aktiv celle
ActiveCell.Offset(1, 0).Activate
Range(var1).NumberFormat = talformat
ActiveCell.Value = værdi * 1
' ActiveCell.Value = CSng(ActiveCell.Value)
End Function
