Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1620to1624
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Worksheet_Change über eine Range

Worksheet_Change über eine Range
09.05.2018 11:58:01
Callidus
Moin moin
Beispieldatei: https://www.herber.de/bbs/user/121516.xlsm
Über ein Makro im Tabellenblatt wird eine bestimmte Formel ausgeführt. Welche Formel ausgeführt wird, hängt davon ab, in welcher Zelle die Eingabe stattfindet. Im Beispiel habe ich das mal sehr stark vereinfacht dargestellt.
Das ganze funktioniert auch so, wie ich es mir vorgestellt habe. Soweit so gut.
Was nicht funktioniert ist das Erweitern z.b. mit Strg+C Strg+V. Wie meine ich das?
Im Beispiel habe ich in Zelle A5 eine 4 eingetragen (in B5 wurde automatisch eine 0 eingetragen und in C5 eine 4, das stimmt soweit).
Nun habe ich Zelle A5 mit dem Cursor markiert und kopiert. Anschließend habe ich mit dem Curser den Bereich A6 bis A11 ausgewählt und eingefügt.
In Zeile 6 wurde noch automatisch berechnet.
In den nachfolgenden Zeilen aber nicht mehr. Gibt es dafür eine Lösung?

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Change über eine Range
09.05.2018 13:41:19
UweD
Hallo
Private Sub Worksheet_Change(ByVal Zelle As Range)
    On Error GoTo Fehler

    'Dim blSchalter1 As Boolean 'wofür? 
    Dim Z
    
    Application.EnableEvents = False
    
    Select Case True
        Case Zelle(1).Column = 1
            For Each Z In Intersect(Columns(Zelle(1).Column), Zelle) ' A + B = C 
                Cells(Z.Row, 3) = Cells(Z.Row, 1).Value + Cells(Z.Row, 2).Value
            Next
            
        Case Zelle(1).Column = 2
            For Each Z In Intersect(Columns(Zelle(1).Column), Zelle) ' C - B = A 
                Cells(Z.Row, 1) = Cells(Z.Row, 3).Value - Cells(Z.Row, 2).Value
            Next
        
        Case Zelle(1).Column = 3
            For Each Z In Intersect(Columns(Zelle(1).Column), Zelle) ' C - A = B 
                Cells(Z.Row, 2) = Cells(Z.Row, 3).Value - Cells(Z.Row, 1).Value
            Next
   
   End Select
    
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear

End Sub
Zelle(1) verwende ich, falls du mal über mehrere Spalten was einfügst. Dann wird nur die erste Spalte des Bereichs verwendet
LG UweD
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige