Anzeige
Archiv - Navigation
1516to1520
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

mehrere Private Sub Worksheet_Change

mehrere Private Sub Worksheet_Change
05.10.2016 13:15:39
Christof
Hallo zusammen,
wieder einmal stehe ich mir selbst im Weg.
Ich habe folgende Routine im Auge:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
For i = 18 To 77
If Cells(7, i).Value  0 Then Range("G18").Value = Range("D18").Value + 1
Next
End Sub

nun möchte ich in der selben Arbeitsmappe folgenden Bereich betrachten
If Cells(10, i).Value 0 Then Range("J18").Value = Range("I18").Value + 1
wie kann ich dieses Problem lösen?
Gruß
Christof

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere Private Sub Worksheet_Change
05.10.2016 13:45:17
EtoPHG
Hallo Christof,
Nicht du stehst dir im Weg, sondern dein Verständnis für das _Change Ereignis fehlt!
Du legst erst mal fest, in welchem Bereich Änderungen durch die manuelle Änderungen von Zellinhalten deine Manipulationen an anderen Zellinhalten auslösen sollen.
Dann musst du prüfen, ob dieser Bereich von ausgelösten Zelländerungen betroffen ist.
Wenn ja, schaltest du die Ereignissteuerung aus, führst deine Manipulation durch und schaltest sie wieder ein. Das könnte dann z.B. so aussehen:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'   Prüfbereiche festlegen
Dim rC As Range
Dim Bereich1 As Range
Dim Bereich2 As Range
'   Prüfen ob Veränderungen in den Bereichen
Set Bereich1 = Intersect(Target, Range(Cells(7, 18), Cells(7, 77)))
Set Bereich2 = Intersect(Target, Range(Cells(10, 18), Cells(10, 77)))
' Event-Steuerung aus
Application.EnableEvents = False
If Not Bereich1 Is Nothing Then
'       Für alle Zellen im geänderten Bereich1
For Each rC In Bereich1
If rC  0 Then Range("G18").Value = Range("D18").Value + 1
Next rC
End If
If Not Bereich2 Is Nothing Then
'       Für alle Zellen im geänderten Bereich2
For Each rC In Bereich2
If rC  0 Then Range("J18").Value = Range("I18").Value + 1
Next rC
End If
' Event-Steuerung ein
Application.EnableEvents = True
End Sub
Gruess Hansueli
Anzeige
AW: mehrere Private Sub Worksheet_Change
05.10.2016 14:01:54
Christof
Hallo Hansueli,
da hast Du wohl den Nagel auf den Kopf getroffen.
ich habe "gerade" erst angefangen, mich richtig und tiefer in die Weld VBA einzuarbeiten.
Bedingt durch Familie und Arbeit geht es leider meist nur "Problem basiert"..
Vielen Dank für die Hilfe und die gute Erklärung,
ich werde gleich mal tätig und werde mich ausführlich damit beschäftigen.
Werde dann Rückmeldung geben.
Gruß
Christof
AW: mehrere Private Sub Worksheet_Change
05.10.2016 14:38:57
Christof
Hallo Hansueli,
es scheint alles richtig zu sein,
in der ersten Spalte (G) klappt es, Werte werden in Spalte (D)
geschrieben.
Aber in der zweiten Spalte (J) klappt es nicht, hier passiert nichts.
Woran kann es liegen?
Gruß
Christof
Anzeige
AW: was ich zu bezweifeln wage..
05.10.2016 19:49:28
Werner
Hallo Christof,
...deine Vorgabe vom Eingangsbeitrag war so wie ihn dann Hansueli umgesetzt hat.
Die Code-Zeile
If rC  0 Then Range("G18").Value = Range("D18").Value + 1
addiert auf den Wert in D18 1 drauf und schreibt das Ergebnis dann in G18. So wie du jetzt und weiter unten schreibst willst du es aber wohl gerade umgekehrt. Dann musst du die G18 und D18 im Code tauschen.
Gruß Werner
AW: mehrere Private Sub Worksheet_Change
05.10.2016 14:43:48
Bianca
Hallo,
stimmt deine If Frage so?
Cells (Zeile, Spalte)...
was soll das Makro den machen?
lg Bianca
AW: mehrere Private Sub Worksheet_Change
05.10.2016 14:54:39
Christof
Hallo Bianca,
ich möchte den Wert, der in G18 ermittelt wurde, in D19 schreiben,
gleiches gilt für den Wert, der in J18 ermittelt wurde, der dann in I19 geschrieben werden soll.
Das hat den Hintergrund, das der jeweilige Wert (D19 und I19) als Ausgangswert für die nächste Berechnung zur Verfügung gestellt wird.
Das geht sicher auch über die klassische wenn-dann Methode innerhalb der Mappe, wäre aber nach einem löschen der Zellinhalte nicht mehr möglich.
Gruß
Chrstof
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige