Avatar billede moldrup Nybegynder
27. februar 2007 - 13:01 Der er 4 kommentarer og
1 løsning

Lave relationer mellem flere celler

Hej Eksperter.

Jeg har brug for at kunne lave relationer mellem 2 eller flere celler.
Med relation mener jeg at lave en sådan afhængighed mellem 2 celler at hvis jeg ændrer tallet i en hvilken som helst af cellerne, vil det automatisk opdatere i den anden celle.

Eks:
Cellen A1 indeholder "20"
Cellen B1 skal linkes således at den også indeholder "20"

Hvis jeg ændrer A1 til "25" bliver B1="25" eller
hvis jeg ændrer B1 til "25" bliver A1="25"

Det vil nok være muligt at lave en rimeligt (kompliceret) VBA kode der vil kunne sørge for at opdatere cellerne imellem, men jeg håber at dette kan undgås.

Håber at I forstår spørgsmålet og kan hjælpe.
Avatar billede supertekst Ekspert
27. februar 2007 - 14:01 #1
Her er første udgave:
- Marker de ønskede celler, der skal kædes sammen.
- Udfør Sub Test (gemmer adressen på de markerede celler)

- Indtast herefter en værdi i en af cellerne

Dette er jo ikke så effektivt - men jeg vender tilbage om lidt - således at man ikke manuelt skal udføre SUB Test.......

Koden anbringes i VBA - Ark1
============================
Dim rA As Variant, flag As Boolean
Sub test()
    rA = ActiveWindow.RangeSelection.Address
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If InStr(rA, Target.Address) > 0 And flag = False Then
        opdaterKæde Target.Address
    End If
End Sub
Private Sub opdaterKæde(adr)
Dim rX As Variant, v
    flag = True
    rX = rA
    v = Range(adr)
   
    While InStr(rX, ",") > 0
        p = InStr(rX, ",")
        If p > 0 Then
            del = Left(rX, p - 1)
            If del <> adr Then
                Range(del) = v
            End If
            rX = Mid(rX, p + 1)
        End If
    Wend
    flag = False
End Sub
Avatar billede supertekst Ekspert
27. februar 2007 - 14:07 #2
Version 2
=========
Erstatter tidligere:
- multimarker de ønskede celler
- Højreklik i een af dem - de markerede celler gemmes
- indtast en værdi i een af dem

Dim rA As Variant, flag As Boolean
Sub gemMarkeredeCeller()
    rA = ActiveWindow.RangeSelection.Address
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    gemMarkeredeCeller
    Cancel = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    If InStr(rA, Target.Address) > 0 And flag = False Then
        opdaterKæde Target.Address
    End If
End Sub
Private Sub opdaterKæde(adr)
Dim rX As Variant, v
    flag = True
    rX = rA
    v = Range(adr)
   
    While InStr(rX, ",") > 0
        p = InStr(rX, ",")
        If p > 0 Then
            del = Left(rX, p - 1)
            If del <> adr Then
                Range(del) = v
            End If
            rX = Mid(rX, p + 1)
        End If
    Wend
    flag = False
End Sub
Avatar billede moldrup Nybegynder
27. februar 2007 - 14:26 #3
Det ser rigtig godt ud Supertekst.
Jeg har ikke mulighed for at teste det før senere, men smid lige et svar så jeg har mulighed for at give dig point'ene såfremt det virker.

Jeg går dermed ud fra at der ikke findes nogen anden løsning end VBA?!?
Avatar billede supertekst Ekspert
27. februar 2007 - 16:05 #4
Det får du så.....
Avatar billede excelent Ekspert
27. februar 2007 - 19:27 #5
Et alternativ:
indsæt koden i arkets kodemodul (højreklik på fanen)
ret evt. sellerne til i de 2 linier.

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B5, C10, E15, F20")) Is Nothing Then Exit Sub
Range("B5, C10, E15, F20") = Target
End Sub
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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