Avatar billede berit66 Praktikant
28. juli 2009 - 20:07 Der 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.

Håber I kan hjælpe mig med dette.

Hilsen Berit
Avatar billede kabbak Professor
28. juli 2009 - 21:08 #1
Sættes i arkets modul

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
Avatar billede berit66 Praktikant
29. juli 2009 - 09:51 #2
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 :-)
Avatar billede kabbak Professor
29. juli 2009 - 17:03 #3
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
       
    End If
End Sub
Avatar billede berit66 Praktikant
29. juli 2009 - 20:01 #4
Fantastisk! Tak for hjælpen.
Avatar billede kabbak Professor
29. juli 2009 - 20:12 #5
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
     
    End If
End Sub
Avatar billede berit66 Praktikant
29. juli 2009 - 20:24 #6
OK, men den virkede da ellers godt nok ;-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester