Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Blink Blink im Bereich

Forumthread: Blink Blink im Bereich

Blink Blink im Bereich
27.05.2024 14:55:18
Swissair
hallo zusammen

ich möchte folgenden code nur in einem Bereich nutzen (B10:D30)
kann mir da jemand helfen? ;-)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim raZelle As Range
Dim arrFarben()
Dim loZaehler As Long
On Error Resume Next
If IsError(Target.Dependents) Then Exit Sub
On Error GoTo 0
ReDim arrFarben(0 To 1, 0 To Target.DirectDependents.Cells.Count - 1)
For Each raZelle In Target.DirectDependents
arrFarben(0, loZaehler) = raZelle.Address
arrFarben(1, loZaehler) = raZelle.Interior.Color
loZaehler = loZaehler + 1
Next raZelle
Target.DirectDependents.Interior.Color = 65535
Application.Wait Now + TimeValue("00:00:02")
loZaehler = 0
For Each raZelle In Target.DirectDependents
If arrFarben(1, loZaehler) = 16777215 Then
Range(arrFarben(0, loZaehler)).Interior.Pattern = xlNone
Else
Range(arrFarben(0, loZaehler)).Interior.Color = arrFarben(1, loZaehler)
End If
loZaehler = loZaehler + 1
Next raZelle
End Sub

Beste Grüsse
Bernd
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blink Blink im Bereich
27.05.2024 15:08:24
daniel
Hi

im Prinzip so, du erweiterst die Abbruchprüfung noch dahingehend, dass die geänderten Zellen auch im gewünschten Bereich liegen, sowie eine Formel enthalten und einen korrekten Wert ausgeben (SpecialCells).

Private Sub Worksheet_Change(ByVal Target As Range)

dim rngBereich as Range
On Error Resume Next
Set rngBereich = Intersect(Target, Range("B10:D30")).SpecialCells(xlcelltypeformulas, 1 + 2 + 4)
On Error Goto 0

if rngBereich is nothing then Exit sub

For Each raZelle In rngBereich.DirectDependents
... und hier dann weiter


Gruß Daniel
Anzeige
AW: Blink Blink im Bereich
27.05.2024 15:27:57
Swissair
Hallo Daniel

Besten Dank für dein Bemühen.
Leider klappt es (noch) nicht wunschgemäss:
Jetzt so:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngBereich As Range
On Error Resume Next
Set rngBereich = Intersect(Target, Range("D15:F32")).SpecialCells(xlCellTypeFormulas, 1 + 2 + 4)
On Error GoTo 0
If rngBereich Is Nothing Then Exit Sub
For Each raZelle In rngBereich.DirectDependents
arrFarben(0, loZaehler) = raZelle.Address
arrFarben(1, loZaehler) = raZelle.Interior.Color
loZaehler = loZaehler + 1
Next raZelle
Target.DirectDependents.Interior.Color = 65535
Application.Wait Now + TimeValue("00:00:01")
loZaehler = 0
For Each raZelle In Target.DirectDependents
If arrFarben(1, loZaehler) = 16777215 Then
Range(arrFarben(0, loZaehler)).Interior.Pattern = xlNone
Else
Range(arrFarben(0, loZaehler)).Interior.Color = arrFarben(1, loZaehler)
End If
loZaehler = loZaehler + 1
Next raZelle
End Sub
Anzeige
AW: Blink Blink im Bereich
27.05.2024 15:38:22
daniel
hi
leider kann ich aus deiner Fehlerbeschreibung "klappt nicht wunschgemäß" noch nicht genügend Informationen ableiten, um eine mögliche Fehlerursache herauszufinden.
klappt denn das sonstige Makro wie gewünscht (abgesehen vom Gülitigkeitsbereich)?
Was soll das Makro denn machen und was passiert tatsächlich?

Hilfreich ist auch immer, wenn du nicht nur den Code zeigst, sondern auch die Datei mit hochlädst, denn es müssen Code und Tabellenblattinhalte zusammenpassen.
Dann solltest du noch sagen, was du dir erhoffst und was die realität ist.

Gruß Daniel
Anzeige
AW: Blink Blink im Bereich
27.05.2024 15:49:27
daniel
äm sorry.
ich hab Dependens und Precedents verwechselt, daher kann das so nicht funktionieren.
aber ich hätte da noch weitere Fragen:
1. was meinst du konkret mit: "ich möchte folgenden code nur in einem Bereich nutzen (B10:D30)"
soll das Makro nur ausgeführt werden, wenn du in diesem Bereich Werte änderst oder sollen nur in diesem Bereich die Umfärbungen stattfinden?
2. du hattest ja gefragt "B10:D30". Warum hast du das im Code auf "D15:F32" abgeändert?
es kann immer zu komplikationen führen, wenn du solche Zellbereiche in der Frage anders darstellst, als du sie im Code tatsächlich hast.
Das verwirrt den Helfer spätestens dann, wenn du die Beispieldatei hochlädst, weil dieser dann u.U. nicht mehr weiß, was wie zuzuordnen ist. Daher solltset du im Thread möglichst immer die selben Adressen verwenden.

Gruß Daniel

Anzeige
AW: Blink Blink im Bereich
27.05.2024 15:52:33
Swissair
sorry für die Umstände
AW: Blink Blink im Bereich
27.05.2024 15:51:01
Swissair
Hier mein Muster:
https://www.herber.de/bbs/user/169738.xlsm

Die Idee ist, dass beim Wechsel einer Zahl im gewünschten Bereich, dieser kurz "aufleuchtet" um optisch eine Änderung ersichtlich zu machen.

ich hoffe du verstehst was ich meine ;-)

beste grüsse
Bernd
Anzeige
AW: Blink Blink im Bereich
27.05.2024 16:19:57
daniel
naja ob ichs verstanden habe, weiß ich nicht.

wenn ja, sollte folgende Prüfung zu beginn ausreichen, um das auf bestimmte Zellen zu begrenzen:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim raZelle As Range
Dim arrFarben()
Dim loZaehler As Long
If Intersect(Target, Range("D15:F32")) Is Nothing Then Exit Sub
On Error Resume Next
If IsError(Target.Dependents) Then Exit Sub
On Error GoTo 0
ReDim arrFarben(0 To 1, 0 To Target.DirectDependents.Cells.Count - 1)
... und dann weiter wie gehabt.


noch eine Bitte für die Zukunft: wenn du Code hier einstellst, dann formatiere ihn bitte auch immer als Code.
damit wird er leichter lesbar, weil
- deine Einrückungen "Tab" erhalten bleiben
- die Schriftart Courier verwendet wird und so das Bild strukurierter ist
- Funktionale Farben für mehr Übersicht sorgen.

Gruß Daniel

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige