Microsoft Excel

Herbers Excel/VBA-Archiv

Private Sub Worksheet_Change(ByVal target As Range


Betrifft: Private Sub Worksheet_Change(ByVal target As Range von: Gergö
Geschrieben am: 04.04.2018 13:21:25

Hallo alle miteinander!

Ich habe sämtliche Foren durchsucht, aber nichts brauchbares für mich gefunden.
Ich möchte 7 Private Sub Worksheets aneinander reihen, jedoch weiß ich nicht wie ich aus all dem ein Bündel mache.

Das hier ist mein Ansatz, ihr könnt mir sicher weiterhelfen

  • 
    Private Sub Worksheet_Change(ByVal target As Range)
    
    If target.Address <> "$B$22" Then Exit Sub
    If target.Value = "1" Then Call Makro1
    If target.Value = "2" Then Call Makro2
    If target.Value = "3" Then Call Makro3
    If target.Value = "4" Then Call Makro4
    If target.Value = "5" Then Call Makro5
    If target.Value = "6" Then Call Makro6
    If target.Value = "7" Then Call Makro7
    If target.Value = "8" Then Call Makro8
    If target.Value = "9" Then Call Makro9
    If target.Value = "10" Then Call Makro10
    If target.Value = "11" Then Call Makro11
    If target.Value = "12" Then Call Makro12
    If target.Value = "13" Then Call Makro13
    If target.Value = "14" Then Call Makro14
    If target.Value = "15" Then Call Makro15
    If target.Value = "16" Then Call Makro16
    If target.Value = "17" Then Call Makro17
    If target.Value = "18" Then Call Makro18
    If target.Value = "19" Then Call Makro19
    If target.Value = "20" Then Call Makro20
    If target.Value = "21" Then Call Makro21
    If target.Value = "22" Then Call Makro22
    If target.Value = "23" Then Call Makro23
    If target.Value = "24" Then Call Makro24
    If target.Value = "25" Then Call Makro25
    If target.Value = "26" Then Call Makro26
    If target.Value = "27" Then Call Makro27
    If target.Value = "28" Then Call Makro28
    If target.Value = "29" Then Call Makro29
    If target.Value = "30" Then Call Makro30
    
    End Sub
    Private Sub Worksheet_Change(ByVal target As Range)
    
    If target.Address <> "$B$55" Then Exit Sub
    If target.Value = "1" Then Call Makro31
    If target.Value = "2" Then Call Makro32
    If target.Value = "3" Then Call Makro33
    If target.Value = "4" Then Call Makro34
    If target.Value = "5" Then Call Makro35
    If target.Value = "6" Then Call Makro36
    If target.Value = "7" Then Call Makro37
    If target.Value = "8" Then Call Makro38
    If target.Value = "9" Then Call Makro39
    If target.Value = "10" Then Call Makro40
    If target.Value = "11" Then Call Makro41
    If target.Value = "12" Then Call Makro42
    If target.Value = "13" Then Call Makro43
    If target.Value = "14" Then Call Makro44
    If target.Value = "15" Then Call Makro45
    If target.Value = "16" Then Call Makro46
    If target.Value = "17" Then Call Makro47
    If target.Value = "18" Then Call Makro48
    If target.Value = "19" Then Call Makro49
    If target.Value = "20" Then Call Makro50
    If target.Value = "21" Then Call Makro51
    If target.Value = "22" Then Call Makro52
    If target.Value = "23" Then Call Makro53
    If target.Value = "24" Then Call Makro54
    If target.Value = "25" Then Call Makro55
    If target.Value = "26" Then Call Makro56
    If target.Value = "27" Then Call Makro57
    If target.Value = "28" Then Call Makro58
    If target.Value = "29" Then Call Makro59
    If target.Value = "30" Then Call Makro60
    
    End Sub
    Private Sub Worksheet_Change(ByVal target As Range)
    
    If target.Address <> "$B$87" Then Exit Sub
    If target.Value = "1" Then Call Makro61
    If target.Value = "2" Then Call Makro62
    If target.Value = "3" Then Call Makro63
    If target.Value = "4" Then Call Makro64
    If target.Value = "5" Then Call Makro65
    If target.Value = "6" Then Call Makro66
    If target.Value = "7" Then Call Makro67
    If target.Value = "8" Then Call Makro68
    If target.Value = "9" Then Call Makro69
    If target.Value = "10" Then Call Makro70
    If target.Value = "11" Then Call Makro71
    If target.Value = "12" Then Call Makro72
    If target.Value = "13" Then Call Makro73
    If target.Value = "14" Then Call Makro74
    If target.Value = "15" Then Call Makro75
    If target.Value = "16" Then Call Makro76
    If target.Value = "17" Then Call Makro77
    If target.Value = "18" Then Call Makro78
    If target.Value = "19" Then Call Makro79
    If target.Value = "20" Then Call Makro80
    If target.Value = "21" Then Call Makro81
    If target.Value = "22" Then Call Makro82
    If target.Value = "23" Then Call Makro83
    If target.Value = "24" Then Call Makro84
    If target.Value = "25" Then Call Makro85
    If target.Value = "26" Then Call Makro86
    If target.Value = "27" Then Call Makro87
    If target.Value = "28" Then Call Makro88
    If target.Value = "29" Then Call Makro89
    If target.Value = "30" Then Call Makro90
    
    End Sub
    Private Sub Worksheet_Change(ByVal target As Range)
    
    If target.Address <> "$B$120" Then Exit Sub
    If target.Value = "1" Then Call Makro91
    If target.Value = "2" Then Call Makro92
    If target.Value = "3" Then Call Makro93
    If target.Value = "4" Then Call Makro94
    If target.Value = "5" Then Call Makro95
    If target.Value = "6" Then Call Makro96
    If target.Value = "7" Then Call Makro97
    If target.Value = "8" Then Call Makro98
    If target.Value = "9" Then Call Makro99
    If target.Value = "10" Then Call Makro100
    If target.Value = "11" Then Call Makro101
    If target.Value = "12" Then Call Makro102
    If target.Value = "13" Then Call Makro103
    If target.Value = "14" Then Call Makro104
    If target.Value = "15" Then Call Makro105
    If target.Value = "16" Then Call Makro106
    If target.Value = "17" Then Call Makro107
    If target.Value = "18" Then Call Makro108
    If target.Value = "19" Then Call Makro109
    If target.Value = "20" Then Call Makro110
    If target.Value = "21" Then Call Makro111
    If target.Value = "22" Then Call Makro112
    If target.Value = "23" Then Call Makro113
    If target.Value = "24" Then Call Makro114
    If target.Value = "25" Then Call Makro115
    If target.Value = "26" Then Call Makro116
    If target.Value = "27" Then Call Makro117
    If target.Value = "28" Then Call Makro118
    If target.Value = "29" Then Call Makro119
    If target.Value = "30" Then Call Makro120
    
    End Sub
    Private Sub Worksheet_Change(ByVal target As Range)
    
    If target.Address <> "$B$153" Then Exit Sub
    If target.Value = "1" Then Call Makro121
    If target.Value = "2" Then Call Makro122
    If target.Value = "3" Then Call Makro123
    If target.Value = "4" Then Call Makro124
    If target.Value = "5" Then Call Makro125
    If target.Value = "6" Then Call Makro126
    If target.Value = "7" Then Call Makro127
    If target.Value = "8" Then Call Makro128
    If target.Value = "9" Then Call Makro129
    If target.Value = "10" Then Call Makro130
    If target.Value = "11" Then Call Makro131
    If target.Value = "12" Then Call Makro132
    If target.Value = "13" Then Call Makro133
    If target.Value = "14" Then Call Makro134
    If target.Value = "15" Then Call Makro135
    If target.Value = "16" Then Call Makro136
    If target.Value = "17" Then Call Makro137
    If target.Value = "18" Then Call Makro138
    If target.Value = "19" Then Call Makro139
    If target.Value = "20" Then Call Makro140
    If target.Value = "21" Then Call Makro141
    If target.Value = "22" Then Call Makro142
    If target.Value = "23" Then Call Makro143
    If target.Value = "24" Then Call Makro144
    If target.Value = "25" Then Call Makro145
    If target.Value = "26" Then Call Makro146
    If target.Value = "27" Then Call Makro147
    If target.Value = "28" Then Call Makro148
    If target.Value = "29" Then Call Makro149
    If target.Value = "30" Then Call Makro150
    
    End Sub
    Private Sub Worksheet_Change(ByVal target As Range)
    
    If target.Address <> "$B$186" Then Exit Sub
    If target.Value = "1" Then Call Makro151
    If target.Value = "2" Then Call Makro152
    If target.Value = "3" Then Call Makro153
    If target.Value = "4" Then Call Makro154
    If target.Value = "5" Then Call Makro155
    If target.Value = "6" Then Call Makro156
    If target.Value = "7" Then Call Makro157
    If target.Value = "8" Then Call Makro158
    If target.Value = "9" Then Call Makro159
    If target.Value = "10" Then Call Makro160
    If target.Value = "11" Then Call Makro161
    If target.Value = "12" Then Call Makro162
    If target.Value = "13" Then Call Makro163
    If target.Value = "14" Then Call Makro164
    If target.Value = "15" Then Call Makro165
    If target.Value = "16" Then Call Makro166
    If target.Value = "17" Then Call Makro167
    If target.Value = "18" Then Call Makro168
    If target.Value = "19" Then Call Makro169
    If target.Value = "20" Then Call Makro170
    If target.Value = "21" Then Call Makro171
    If target.Value = "22" Then Call Makro172
    If target.Value = "23" Then Call Makro173
    If target.Value = "24" Then Call Makro174
    If target.Value = "25" Then Call Makro175
    If target.Value = "26" Then Call Makro176
    If target.Value = "27" Then Call Makro177
    If target.Value = "28" Then Call Makro178
    If target.Value = "29" Then Call Makro179
    If target.Value = "30" Then Call Makro180
    
    End Sub
    Private Sub Worksheet_Change(ByVal target As Range)
    
    If target.Address <> "$B$153" Then Exit Sub
    If target.Value = "1" Then Call Makro191
    If target.Value = "2" Then Call Makro192
    If target.Value = "3" Then Call Makro193
    If target.Value = "4" Then Call Makro194
    If target.Value = "5" Then Call Makro195
    If target.Value = "6" Then Call Makro196
    If target.Value = "7" Then Call Makro197
    If target.Value = "8" Then Call Makro198
    If target.Value = "9" Then Call Makro199
    If target.Value = "10" Then Call Makro200
    If target.Value = "11" Then Call Makro201
    If target.Value = "12" Then Call Makro202
    If target.Value = "13" Then Call Makro203
    If target.Value = "14" Then Call Makro204
    If target.Value = "15" Then Call Makro205
    If target.Value = "16" Then Call Makro206
    If target.Value = "17" Then Call Makro207
    If target.Value = "18" Then Call Makro208
    If target.Value = "19" Then Call Makro209
    If target.Value = "20" Then Call Makro210
    If target.Value = "21" Then Call Makro211
    If target.Value = "22" Then Call Makro212
    If target.Value = "23" Then Call Makro213
    If target.Value = "24" Then Call Makro214
    If target.Value = "25" Then Call Makro215
    If target.Value = "26" Then Call Makro216
    If target.Value = "27" Then Call Makro217
    If target.Value = "28" Then Call Makro218
    If target.Value = "29" Then Call Makro219
    If target.Value = "30" Then Call Makro220
    
    End Sub

  •   

    Betrifft: AW: Private Sub Worksheet_Change(ByVal target As Range von: Nepumuk
    Geschrieben am: 04.04.2018 13:49:57

    Hallo,

    teste mal:

    Option Explicit

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$B$22" Then
            Select Case Target.Value
                Case 1 To 30: Application.Run "Makro" & Target.Value
            End Select
        ElseIf Target.Address = "$B$55" Then
            Select Case Target.Value
                Case 1 To 30: Application.Run "Makro" & Target.Value + 30
            End Select
        ElseIf Target.Address = "$B$87" Then
            Select Case Target.Value
                Case 1 To 30: Application.Run "Makro" & Target.Value + 60
            End Select
        ElseIf Target.Address = "$B$120" Then
            Select Case Target.Value
                Case 1 To 30: Application.Run "Makro" & Target.Value + 90
            End Select
        ElseIf Target.Address = "$B$153" Then
            Select Case Target.Value
                Case 1 To 30: Application.Run "Makro" & Target.Value + 120
            End Select
        ElseIf Target.Address = "$B$186" Then
            Select Case Target.Value
                Case 1 To 30: Application.Run "Makro" & Target.Value + 150
            End Select
        ElseIf Target.Address = "$B$153" Then
            Select Case Target.Value
                Case 1 To 30: Application.Run "Makro" & Target.Value + 190
            End Select
        End If
    End Sub

    Gruß
    Nepumuk


      

    Betrifft: AW: Private Sub Worksheet_Change(ByVal target As Range von: Gergö
    Geschrieben am: 04.04.2018 15:27:40

    Hallo Nepumuk,


    funktioniert noch nicht so ganz .
    Hier findest du die Datei in dem ich es gerade bearbeite. https://www.herber.de/bbs/user/120849.xlsm
    Die Tabelle2 funktioniert genau wie ich es brauche.
    Ich möchte die Zeilen je nach bedarf einblenden können.


      

    Betrifft: 220 Makros? von: Peter(silie)
    Geschrieben am: 04.04.2018 13:57:29

    Hallo,

    wozu brauchst du denn 220 Makros?

    Steht da überall das gleiche drinnen oder sind das komplett unterschiedliche Codes?

    Zeig uns doch bitte mal zwei oder drei davon.


      

    Betrifft: AW: 220 Makros? von: Gergö
    Geschrieben am: 04.04.2018 15:30:05

    Hallo Peter

    Je es sind zum teil unterschiedliche Makros, mit kleinen unterschieden.

    Hier findest du die Datei die ich zum laufen bringen möchte
    https://www.herber.de/bbs/user/120849.xlsm
    Tabelle2 funktioniert genau wie ich es brauche, nur die Restlichen noch nicht


      

    Betrifft: AW: 220 Makros? von: Peter(silie)
    Geschrieben am: 04.04.2018 16:19:10

    Hallo,

    dann doch einfach so:

    Private Sub Worksheet_Change(ByVal target As Range)
    
        If target.Address = "$B$22" Then
            'alternativ um ober und untergrenze festzulegen
            'If target.Value < 1 Or target.Value > 30 Then Exit Sub
            FilterListObj Me.ListObjects("Tabelle2"), "<=" & target.Value
        End If
    
    End Sub
    
    
    
    Private Sub FilterListObj(ByRef tblTarget As ListObject, _
                              ByVal Criteria2_ As Variant)
        
        tblTarget.Range.AutoFilter Field:=1, Criteria1:= _
            ">=1", Operator:=xlAnd, Criteria2:=Criteria2_
        
    End Sub
    
    Du musst lediglich die Daten im Worksheet_Change Event anpassen.


      

    Betrifft: AW: 220 Makros? von: Gergö
    Geschrieben am: 05.04.2018 07:51:35

    Hallo Peter,


    vielen Dank für deine Hilfe bis jetzt. Ich versteh leider kaum was in diesen "Sub's" steht, ich hab mal deinen Vorschlag in meine Mappe kopiert, jedoch kann ich nur die Tabelle2 ändern, wie schaffe ich es nun, dass ich bei den restlichen Tabellen auch die Filtereinstellungen verstellen kann?

    Ich bitte dich auch um eine detaillierte Beschreibung für Anfänger





      

    Betrifft: AW: 220 Makros? von: Gergö
    Geschrieben am: 05.04.2018 07:55:57

    Hallo Peter,


    Danke dir mal vorerst, ich hab mal deinen Text in meine Mappe kopiert, zurzeit kann ich nur die Tabelle2 damit verändern.
    Wie schaffe ich es, auch die Restlichen Tabellen zu ändern (Filtereinstellungen)
    Leider versteh ich von dem ganzen VBA kaum etwas, könntest du mir bitte eine detaillierte Beschreibung geben.


      

    Betrifft: AW: 220 Makros? von: Peter(silie)
    Geschrieben am: 05.04.2018 08:34:08

    Hallo,

    hier deine Mappe mit dem Code: https://www.herber.de/bbs/user/120861.xlsm

    Den Code habe ich mit Kommentaren versehen.
    Ich hoffe diese helfen dir ein wenig.

    Hier nur Code:

    Option Explicit
    
    Private Sub Worksheet_Change(ByVal target As Range)
        
        'Wenn die Aktive Spalte B ist
        If target.Column = 2 Then
        
            'Gucke ob einer der unteren Fälle zutrifft
            Select Case target.Row '<-- Wir gucken uns nun die Zeile an
                
                'Wir Befinden uns in $B$22
                Case 22
                    'Rufe den Sub 'FilterListObj' auf
                    'Wir übergeben dabei das Tabellen Objekt
                    'bzw. das ListObject an diese Funktion
                    'Als Kriterum übergeben wir eine Kombination
                    'aus <= und der Nutzereingabe
                    'Dies gilt für alle weiteren Cases in diesem Sub
                    FilterListObj Me.ListObjects("Tabelle2"), _
                        "<=" & target.Value
                
                'Wir Befinden uns in $B$55
                Case 55
                    FilterListObj Me.ListObjects("Tabelle3"), _
                        "<=" & target.Value
                
                'Wir Befinden uns in $B$87
                Case 87
                    FilterListObj Me.ListObjects("Tabelle27"), _
                        "<=" & target.Value
                
                'Wir Befinden uns in $B$120
                Case 120
                    FilterListObj Me.ListObjects("Tabelle28"), _
                        "<=" & target.Value
                
                'Wir Befinden uns in $B$153
                Case 153
                    FilterListObj Me.ListObjects("Tabelle289"), _
                        "<=" & target.Value
                
                'Wir Befinden uns in $B$186
                Case 186
                    FilterListObj Me.ListObjects("Tabelle2810"), _
                        "<=" & target.Value
                
                'Wir Befinden uns in $B$219
                Case 219
                    FilterListObj Me.ListObjects("Tabelle2811"), _
                        "<=" & target.Value
                        
            End Select
        
        End If
    
    
    End Sub
    
    'Benötigt ein ListObject welches übergeben wird.
    'Benötigt das zweite Kriterum zum Filtern in Form eines Strings
    'Das Kriterium kann z.B. so aussehen "<=5"
    Private Sub FilterListObj(ByRef tblTarget As ListObject, _
                              ByVal Criteria2_ As Variant)
        
        tblTarget.Range.AutoFilter Field:=1, Criteria1:= _
            ">=1", Operator:=xlAnd, Criteria2:=Criteria2_
        
    End Sub



      

    Betrifft: AW: 220 Makros? von: Gergö
    Geschrieben am: 05.04.2018 08:56:52

    Hallo Peter,

    WOW, Funktioniert wunderbar, vielen vielen Dank für deine Hilfe.