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

Hur synkroniserar man rullgardinslistor i flera kalkylblad i Excel?

Anta att du har rullgardinslistor på flera kalkylblad i en arbetsbok som innehåller exakt samma rullgardinsobjekt. Nu vill du synkronisera rullgardinslistorna över kalkylblad så att när du väl väljer ett objekt från en rullgardinslista i ett kalkylblad, synkroniseras rullgardinslistorna i andra kalkylblad automatiskt med samma urval. Den här artikeln innehåller en VBA-kod som hjälper dig att lösa det här problemet.

Synkronisera rullgardinslistor i flera kalkylblad med VBA-kod


Synkronisera rullgardinslistor i flera kalkylblad med VBA-kod

Till exempel finns listorna i fem kalkylblad med namn Blad1, Blad2, ... Blad 5, för att synkronisera rullistorna i andra kalkylblad enligt rullgardinsvalet i Sheet1, använd följande VBA-kod för att få det gjort.

1. Öppna Blad1, högerklicka på arkfliken och välj Visa kod från högerklick-menyn.

2. I Microsoft Visual Basic för applikationer fönstret, klistra in följande VBA-kod i Blad1 (kod) fönster.

VBA-kod: Synkronisera listrutan i flera kalkylblad

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

Anmärkningar:

1) I koden, A2: A11 är intervallet som innehåller rullgardinsmenyn. Se till att alla rullgardinslistor är i samma intervall över olika kalkylblad.
2) Blad2, Blad3, Blad4 och Sheet5 är kalkylblad som innehåller rullgardinslistor som du vill synkronisera baserat på rullgardinslistan i Kalkylblad1;
3) För att lägga till fler kalkylblad i koden, lägg till följande två rader före raden "Application.EnableEvents = True", ändra sedan arknamnet "Sheet5” till det namn du behöver.
Set tSheet1 = ActiveWorkbook.Worksheets("Sheet5")
tSheet1.Range(xRangeStr).Value = Target.Value

3. tryck på andra + Q för att stänga Microsoft Visual Basic för applikationer fönster.

Från och med nu, när du väljer ett objekt från rullgardinsmenyn i Blad 1, rullgardinslistorna i de angivna kalkylbladen synkroniseras automatiskt för att ha samma val. Se demon nedan.


Demo: Synkronisera rullgardinslistor i flera kalkylblad i Excel


De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (5)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

Hur kan jag göra detta om mina rullgardinsmenyer finns inom olika intervall? För att förtydliga har jag en rullgardinsmeny i blad 7 som finns i cell B7 och samma rullgardinsmeny på blad 6 i cell B2.

Tack,
Elaine
Denna kommentar minimerades av moderatoren på webbplatsen
hej E,
Följande VBA-kod kan hjälpa.
Här tar jag Sheet6 som huvudkalkylblad, högerklickar på arkfliken, väljer View Code från högerklicksmenyn och kopierar sedan följande kod i Sheet6 (Code)-fönstret. När du väljer ett objekt från rullgardinsmenyn i B2 i Sheet6, kommer rullgardinsmenyn i B7 i Sheet7 att synkroniseras till att ha samma valda objekt.

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
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Crystal,

Tack så mycket för ditt svar, din kod fungerade! Jag har en cell precis under b2 och b7, b3 respektive b8 som behöver ha samma funktion. Jag försökte skriva om din kod enligt nedan, men detta fungerade inte. Det gjorde att b7 istället för b8 ändrades när jag bytte b3. Kanske du kan identifiera vad jag gör fel?

Tack så mycket!

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
Denna kommentar minimerades av moderatoren på webbplatsen
hej E,
Det är något fel med VBA-koden jag svarade dig ovan.
För den nya frågan du nämnde, försök med följande kod.

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
Denna kommentar minimerades av moderatoren på webbplatsen
Kristall,

Tack så mycket för ditt svar, det här fungerade! Hur kunde jag ändra koden för att lägga till ytterligare en cell i samma blad 6, B3 som också behövde synkroniseras med B8 i blad 7? Jag har försökt att ändra det nedan, men det slutar med att innehållet i B3 placeras på blad 6 i B7 på blad 7 istället för B8.


Privata delarkivsförändring (ByVal-mål som område)
'Uppdaterad av Extendoffice 20221025
Dim tSheet1 Som arbetsblad
Dim tRange1 As Range
Dim tRange2 As Range
Dim xRangeStr1 As String
Dim xRangeStr2 As String
On Error Resume Next
Om Target.Count > 1 Avsluta Sub

xRangeStr1 = "B2"
xRangeStr2 = "B3"

Ange tRange1 = Range("B7")
Om inte tRange1 är ingenting då
xRangeStr1 = tRange1.Address
Application.EnableEvents = False
Set tSheet1 = ActiveWorkbook.Worksheets("Sheet7")
tSheet1.Range(xRangeStr1).Value = Target.Value
Application.EnableEvents = True
End If

Ange tRange2 = Range("B8")
Om inte tRange2 är ingenting då
xRangeStr2 = tRange2.Address
Application.EnableEvents = False
Set tSheet1 = ActiveWorkbook.Worksheets("Sheet7")
tSheet1.Range(xRangeStr2).Value = Target.Value
Application.EnableEvents = True
End If

End Sub
Det finns inga kommentarer här ännu
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL