27. februar 2007 - 13:01Der 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.
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
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
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?!?
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
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.