14. januar 2006 - 17:24Der er
3 kommentarer og 1 løsning
Makro - fejl i summeringen
Jeg har en formular, hvor jeg har nogle felter, som lægges sammen i et 3. felt.
Formatet har jeg valgt til at være: #.##0,00 i alle 3 felter.
Følgende værdier står i felterne:
Felt 1: 12.000,00 Felt 2: 1,00
I felt 3 bør der så stå 12.001,00, men der står 13,00. Makroen der beregner dette er: 'Beregner ny saldo hvis bevægelse er <> "" og sætter "Kr." ind 2 steder 'Det gentages for hver række i tabellen If ActiveDocument.FormFields("Bevaegelse2").Result <> "" Then ActiveDocument.FormFields("Saldo2").Result _ = Val(ActiveDocument.FormFields("Bevaegelse2").Result) _ + Val(ActiveDocument.FormFields("Saldo1").Result) ActiveDocument.FormFields("Bkr2").Result = "kr." ActiveDocument.FormFields("Skr2").Result = "kr." Else ActiveDocument.FormFields("Saldo2").Result = "" ActiveDocument.FormFields("Bkr2").Result = "" ActiveDocument.FormFields("Skr2").Result = "" End If End Sub
Fejlen kan vel rettes ved at sætte noget format ind i formlerne..??
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Dim strBevaegelse2 As String Dim strSaldo2 As String
If ActiveDocument.FormFields("Bevaegelse2").Result <> "" Then If ActiveDocument.FormFields("Bevaegelse2").Result = "" Then strBevaegelse2 = 0 Else strBevaegelse2 = CDbl(ActiveDocument.FormFields("Bevaegelse2").Result) End If
If ActiveDocument.FormFields("Saldo1").Result = "" Then strSaldo2 = 0 Else strSaldo2 = CDbl(ActiveDocument.FormFields("Saldo1").Result) End If
eller mere korrekt med den rigtige variabelnavngivning:
Dim dblBevaegelse2 As Double Dim dblSaldo2 As Double
If ActiveDocument.FormFields("Bevaegelse2").Result <> "" Then If ActiveDocument.FormFields("Bevaegelse2").Result = "" Then dblBevaegelse2 = 0 Else dblBevaegelse2 = CDbl(ActiveDocument.FormFields("Bevaegelse2").Result) End If
If ActiveDocument.FormFields("Saldo1").Result = "" Then dblSaldo2 = 0 Else dblSaldo2 = CDbl(ActiveDocument.FormFields("Saldo1").Result) End If
Super rvm - Det virker, men hvad er det der sker i den sidste makro du har lavet? Hvad gør CDlb() og hvad betyder det at sætte dbl foran navnet på teksfeltet? Blot for at kunne gennemskue hvad jeg selv sætter ind i en makro!
CDlb() konverterer indholdet i en variabel til tal-typen double - læs om typerne i hjælpen. Jeg navngiver variablene med type foran for at man senere i makroen kan se hvilken type varieblen er dimensioneret som (dblSaldo2) - altså en slags service til mig selv :-) - f.eks. str = string, dbl = double
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.