28. juli 2009 - 20:07Der er
5 kommentarer og 1 løsning
Vis resultat af beregning - VBA
Hej eksperter
Dette er vist et temmeligt simpelt spørgsmål for VBA nørder, men jeg kan simpelthen ikke greje hvordan jeg skal få det lavet.
Jeg har et simpelt regneark hvor der bliver indtastet et tal i kolonne A. Dette tal skal ganske enkelt ganges med værdien i en celle(f.eks. E1). Resultatet skal derfter vises i kolonne B. Jeg ved at det er ganske simpel regnearkslogik, men problemet er at jeg gerne vil have lavet resultatet om til en værdi med det samme, derfor VBA. Tallet i celle (eks. E1)ændrer sig nemlig ofte og de gamle linier skal bibeholde deres resultat. Brugerne er ikke specielt Excel kyndige og jeg vil derfor gerne være fri for at de selv skal rode med at ændre til værdi.
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then If IsNumeric(Target) Then Target.Offset(0, 1) = Target * [E1] End If End If End Sub
Tak for dit svar kabbak. Det virker jo rigtig godt.
Kan man også udvide den lidt til at der er nogle betingelser der skal være opfyldt. F.eks. at hvis man indtaster et usd beløb i kolonne a og derefter skriver usd i kolonne b, så skal den gange med f.eks. celle b2 på et andet ark og skrive resultatet i kolonne C. Næste linie kunne så være et euro beløb som skal gange med en anden celle. Jeg kunne forestille mig at bruge enten en select case eller if then struktur.
Hvis du kan hjælpe med dette, vil det være fint, ellers smid et svar så får du pointsene for dit første svar :-)
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <= 2 Then
If IsNumeric(Cells(Target.Row, 1)) And Not IsEmpty(Cells(Target.Row, 2)) Then Select Case UCase(Cells(Target.Row, 2)) Case "KR" Target.Offset(0, 1) = Cells(Target.Row, 1) * [E1] Case "USD" Target.Offset(0, 1) = Cells(Target.Row, 1) * [E2] Case "EURO" Target.Offset(0, 1) = Cells(Target.Row, 1) * [E3] Case Else MsgBox "Valuta er ikke genkendt" End Select End If
tak for point, men jeg ser at jeg har lavet en fejl, så her er den rigtige.
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <= 2 Then
If IsNumeric(Cells(Target.Row, 1)) And Not IsEmpty(Cells(Target.Row, 2)) Then Select Case UCase(Cells(Target.Row, 2)) Case "KR" Cells(Target.Row, 3) = Cells(Target.Row, 1) * [E1] Case "USD" Cells(Target.Row, 3) = Cells(Target.Row, 1) * [E2] Case "EURO" Cells(Target.Row, 3) = Cells(Target.Row, 1) * [E3] Case Else MsgBox "Valuta er ikke genkendt" End Select End If
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.