Note: The other languages of the website are Google-translated. Back to English

Hvordan synkroniseres rullelister i flere regneark i Excel?

Antag, at du har rullelister på flere regneark i en projektmappe, der indeholder nøjagtig de samme rullemenuer. Nu vil du synkronisere rullelisterne på tværs af regneark, så når du vælger et element fra en rulleliste i et regneark, synkroniseres rullelisterne i andre regneark automatisk med det samme valg. Denne artikel indeholder en VBA-kode, der hjælper dig med at løse dette problem.

Synkroniser rullelister i flere regneark med VBA-kode


Synkroniser rullelister i flere regneark med VBA-kode

For eksempel er rullelisterne i fem navngivne regneark Ark1, Ark2, ..., Ark 5, for at synkronisere rullelisterne i andre regneark i henhold til rullemenuen i Ark1, skal du anvende følgende VBA-kode for at få det gjort.

1. Åbn Ark1, højreklik på arkfanen og vælg Vis kode fra højreklikmenuen.

2. i Microsoft Visual Basic til applikationer vinduet, indsæt følgende VBA-kode i Ark1 (kode) vindue.

VBA-kode: Synkroniser rullelisten i flere regneark

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220815
    Dim tSheet1 As Worksheet
    Dim tRange As Range
    Dim xRangeStr As String
    On Error Resume Next
    If Target.Count > 1 Then Exit Sub
    
    xRangeStr = "A2:A11"

    Set tRange = Intersect(Target, Range(xRangeStr))
    If Not tRange Is Nothing Then
        xRangeStr = tRange.Address
        Application.EnableEvents = False
        Set tSheet1 = ActiveWorkbook.Worksheets("Sheet2")
        tSheet1.Range(xRangeStr).Value = Target.Value
        Set tSheet1 = ActiveWorkbook.Worksheets("Sheet3")
        tSheet1.Range(xRangeStr).Value = Target.Value
        Set tSheet1 = ActiveWorkbook.Worksheets("Sheet4")
        tSheet1.Range(xRangeStr).Value = Target.Value
        Set tSheet1 = ActiveWorkbook.Worksheets("Sheet5")
        tSheet1.Range(xRangeStr).Value = Target.Value
        Application.EnableEvents = True
    End If
    
End Sub

Bemærkninger:

1) I koden, A2: A11 er det område, der indeholder rullelisten. Sørg for, at alle rullelister er i samme område på tværs af forskellige regneark.
2) Ark2, Ark3, Ark4 og Sheet5 er regneark, der indeholder rullelister, du vil synkronisere baseret på rullelisten i Ark1;
3) For at tilføje flere regneark i koden skal du tilføje følgende to linjer før linjen "Application.EnableEvents = True", skift derefter arknavnet "Sheet5” til det navn, du har brug for.
Indstil tSheet1 = ActiveWorkbook.Worksheets("Sheet5")
tSheet1.Range(xRangeStr).Value = Target.Value

3. Tryk på andre + Q taster for at lukke Microsoft Visual Basic til applikationer vindue.

Fra nu af, når du vælger et element fra rullelisten i Ark 1, rullelisterne i de angivne regneark vil automatisk blive synkroniseret for at have det samme valg. Se nedenstående demo.


Demo: Synkroniser drop-down lister i flere regneark i Excel


De bedste Office-produktivitetsværktøjer

Kutools til Excel løser de fleste af dine problemer og øger din produktivitet med 80%

  • Genbruge: Indsæt hurtigt komplekse formler, diagrammer og alt, hvad du har brugt før; Krypter celler med adgangskode Opret postliste og send e-mails ...
  • Super formel bar (let redigere flere linjer med tekst og formel); Læsning Layout (let at læse og redigere et stort antal celler); Indsæt til filtreret rækkevidde...
  • Flet celler / rækker / kolonner uden at miste data; Split celler indhold; Kombiner duplikerede rækker / kolonner... Forhindre duplikerede celler; Sammenlign områder...
  • Vælg Duplicate eller Unique Rækker; Vælg tomme rækker (alle celler er tomme); Super Find og Fuzzy Find i mange arbejdsbøger; Tilfældig valg ...
  • Præcis kopi Flere celler uden at ændre formelreference; Auto Opret referencer til flere ark; Indsæt kugler, Afkrydsningsfelter og mere ...
  • Uddrag tekst, Tilføj tekst, Fjern efter position, Fjern mellemrum; Opret og udskriv personsøgningssubtotaler; Konverter mellem celler indhold og kommentarer...
  • Superfilter (gem og anvend filterskemaer på andre ark); Avanceret sortering efter måned / uge / dag, hyppighed og mere; Specielt filter af fed, kursiv ...
  • Kombiner arbejdsbøger og arbejdsark; Fletabeller baseret på nøglekolonner; Opdel data i flere ark; Batch Konverter xls, xlsx og PDF...
  • Mere end 300 kraftfulde funktioner. Understøtter Office / Excel 2007-2021 og 365. Understøtter alle sprog. Nem implementering i din virksomhed eller organisation. Fuld funktioner 30-dages gratis prøveperiode. 60 dages pengene tilbage garanti.
kte-fane 201905

Fanen Office bringer en grænseflade til et kontor med Office, og gør dit arbejde meget lettere

  • Aktiver redigering og læsning af faner i Word, Excel, PowerPoint, Publisher, Access, Visio og Project.
  • Åbn og opret flere dokumenter i nye faner i det samme vindue snarere end i nye vinduer.
  • Øger din produktivitet med 50 % og reducerer hundredvis af museklik for dig hver dag!
officetab bund
Sorter kommentarer efter
Kommentarer (5)
Ingen vurderinger endnu. Vær den første til at bedømme!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,

Hvordan kan jeg gøre dette, hvis mine rullemenuer er i forskellige intervaller? For at uddybe har jeg en dropdown i ark 7, der er i celle B7 og den samme dropdown på ark 6 i celle B2.

Tak,
Elaine
Denne kommentar blev minimeret af moderatoren på webstedet
Hej E,
Følgende VBA-kode kan hjælpe.
Her tager jeg Sheet6 som hovedregneark, højreklikker på arkfanen, vælger View Code fra højrekliksmenuen, og kopierer derefter følgende kode i Sheet6 (Code) vinduet. Når du vælger et element fra rullelisten i B2 i Ark6, vil rullelisten i B7 i Ark7 blive synkroniseret til at have det samme valgte element.

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20221025
    Dim tSheet1 As Worksheet
    Dim tRange As Range
    Dim xRangeStr As String
    On Error Resume Next
    If Target.Count > 1 Then Exit Sub
    
    xRangeStr = "B2"
    
    Set tRange = Range("B7")
    If Not tRange Is Nothing Then
        xRangeStr = tRange.Address
        Application.EnableEvents = False
        Set tSheet1 = ActiveWorkbook.Worksheets("Sheet7")
        tSheet1.Range(xRangeStr).Value = Target.Value
        Application.EnableEvents = True
    End If
    
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Crystal,

Mange tak for dit svar, din kode virkede! Jeg har en celle lige under henholdsvis b2 og b7, b3 og b8, der skal have samme funktion. Jeg forsøgte at omskrive din kode som vist nedenfor, men det virkede ikke. Det fik b7 i stedet for b8 til at ændre sig, da jeg ændrede b3. Måske du kan identificere, hvad jeg gør forkert?

Tak så meget!

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20221025
    Dim tSheet1 As Worksheet
    Dim tRange1 As Range
    Dime tRange2 As Range
    Dim xRangeStr1 As String
    Dim xRangeStr2 As String
    On Error Resume Next
    If Target.Count > 1 Then Exit Sub
    
    xRangeStr1 = "B2"
    xRangeStr2="B3"
    
    Set tRange1 = Range("B7")
    If Not tRange1 Is Nothing Then
        xRangeStr1 = tRange1.Address
        Application.EnableEvents = False
        Set tSheet1 = ActiveWorkbook.Worksheets("Sheet7")
        tSheet1.Range(xRangeStr1).Value = Target.Value
        Application.EnableEvents = True
    End If
    
    Set tRange2 = Range("B8")
    If Not tRange2 Is Nothing Then
        xRangeStr2 = tRange2.Address
        Application.EnableEvents = False
        Set tSheet1 = ActiveWorkbook.Worksheets("Sheet7")
        tSheet1.Range(xRangeStr2).Value = Target.Value
        Application.EnableEvents = True
    End If

End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Hej E,
Der er noget galt med VBA-koden, jeg svarede dig ovenfor.
For det nye spørgsmål, du nævnte, prøv venligst følgende kode.

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20221031
    
    Dim xBool1 As Boolean
    Dim xBool2 As Boolean
    Dim xRgStr As String
    Dim tRange As Range
    
    xRangeStr1 = "B2"
    xRangeStr2 = "B3"
    xRgStr = ""
    
    On Error Resume Next
    If Target.Count > 1 Then Exit Sub
    xBool1 = Intersect(Target, Range(xRangeStr1)) Is Nothing
    xBool2 = Intersect(Target, Range(xRangeStr2)) Is Nothing
    
    If xBool1 And xBool2 Then Exit Sub
    
    xRgStr = Target.Address(False, False, xlA1, False, False)
    
    If Target.Address(False, False, xlA1, False, False) = xRangeStr1 Then
        xRgStr = "b7"
    ElseIf Target.Address(False, False, xlA1, False, False) = xRangeStr2 Then
        xRgStr = "b8"
    End If
    If xRgStr = "" Then Exit Sub
    
    Application.EnableEvents = False
    Set tSheet1 = ActiveWorkbook.Worksheets("Sheet7")
    tSheet1.Range(xRgStr).Value = Target.Value
    Application.EnableEvents = True

End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Krystal,

Mange tak for dit svar, det virkede! Hvordan kunne jeg ændre koden for at tilføje en anden celle i samme ark 6, B3, der også skulle synkroniseres med B8 i ark 7? Jeg har forsøgt at ændre det nedenfor, men det ender med at sætte indholdet af B3 på ark 6 i B7 på ark 7 i stedet for B8.


Privat Sub Worksheet_Change (ByVal Target As Range)
'Opdateret af Extendoffice 20221025
Dim tSheet1 Som arbejdsark
Dim tRange1 As Range
Dim tRange2 As Range
Dim xRangeStr1 Som streng
Dim xRangeStr2 Som streng
On Error Resume Next
Hvis Target.Count > 1 Afslut Sub

xRangeStr1 = "B2"
xRangeStr2 = "B3"

Indstil tRange1 = Range("B7")
Hvis ikke tRange1 er ingenting, så
xRangeStr1 = tRange1.Address
Application.EnableEvents = False
Indstil tSheet1 = ActiveWorkbook.Worksheets("Sheet7")
tSheet1.Range(xRangeStr1).Value = Target.Value
Application.EnableEvents = True
End If

Indstil tRange2 = Range("B8")
Hvis ikke tRange2 er ingenting, så
xRangeStr2 = tRange2.Address
Application.EnableEvents = False
Indstil tSheet1 = ActiveWorkbook.Worksheets("Sheet7")
tSheet1.Range(xRangeStr2).Value = Target.Value
Application.EnableEvents = True
End If

End Sub
Der er endnu ingen kommentarer her
Efterlad dine kommentarer
Sender som gæst
×
Bedøm dette indlæg:
0   Tegn
Foreslåede steder

Følg os

Copyright © 2009 - www.extendoffice.com. | Alle rettigheder forbeholdes. Drevet af ExtendOffice. | | Sitemap
Microsoft og Office-logoet er varemærker eller registrerede varemærker tilhørende Microsoft Corporation i USA og / eller andre lande.
Beskyttet af Sectigo SSL