Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1536to1540
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 Tabellenblätter gleichzeitig ansprechen

mehrere Tabellenblätter gleichzeitig ansprechen
22.01.2017 17:29:14
Jens
Hallo Gemeinde,
nachdem mein Projekt ganz gut funktioniert, möchte ich etwas Ordnung in meine verwendeten Codezeilen bringen.
Leider tun sich hier neue Baustellen auf ;)
Funktionsweise:
Commandbutton (Aktive X Steuerelement) in Tabellenblatt1 kopiert Daten in
18 weitere Tabellenblätter. Der nachfolgende Code färbt die Werte
gemäß den Vorgaben
Aktueller Zustand:
- Code steht in 18 Tabellenblättern (Tabelle 2 - 19)
- Änderungen sind umständlich, weil in allen Tabellenblättern erforderlich
- Code funktioniert ohne Probleme
Private Sub Worksheet_Change(ByVal Target As Range)
' Inhalt der Zellen wird farblich markiert,
' wenn bestimmte Werte enthalten sind
Dim x As Long, y As Long
Application.Calculation = xlManual
For y = 8 To 140   'Zeilen
For x = 5 To 58    'Spalten
Select Case Cells(y, x).Value
Case "2"
Cells(y, x).Interior.ColorIndex = 4     'Farbe grün
Case "3"
Cells(y, x).Interior.ColorIndex = 27    'Farbe gelb
Case Is >= "4"
Cells(y, x).Interior.ColorIndex = 3     'Farbe rot
Case Else: Cells(y, x).Interior.ColorIndex = xlNone     ' alte Farbe wird gelöscht
End Select
Next
Next
Application.Calculation = xlAutomatic
End Sub
Jetzt das Problem!
der selbe Code in Modul1 geschrieben
Public Sub Färben1
' hier steht der Code
End Sub
Aufruf im Tabellenblatt 2-19
Option Explicit
Option Private Module   'verhindert das Anzeigen als Makro
Private Sub Worksheet_Activate()
Call Färben1
End Sub
Private Sub Worksheet_Change(ByVal Target As Range
Call Färben1
End Sub
Nachteil:
- seeeehr lange Bearbeitungszeit
- Es werden unzählige Zellen in Tabelle1 mit eingefärbt (Rot) obwohl weder eine bedingte Formatierung vorliegt, noch ein VBA Code.
Der "Färbecode" hat aber im Tabellenblatt1 nichts zu verändern!
Wo liegt hier mein Fehler ?
Danke für Eure Hilfe

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere Tabellenblätter gleichzeitig ansprechen
22.01.2017 18:17:21
MatthiasG
Hallo Jens,
ich setze mal voraus, dass du Gründe hast, dies nicht mit bedingter Formatierung zu lösen.
Rufe im Tabellenblatt des Färben-Makro mit Argument auf (dem geänderten Bereich):

Private Sub Worksheet_Change(ByVal Target As Range)
Färben2 Target
End Sub
In der Prozedur Färben beschränkst du dich dann auf die geänderten Bereiche:

Public Sub Färben2(t As Range)
' Inhalt der Zellen wird farblich markiert,
' wenn bestimmte Werte enthalten sind
Dim rng As Range, r0 As Range
Application.Calculation = xlManual
Set rng = t.Worksheet.Range(Cells(8, 5), Cells(58, 149)) 'der Bereich
Set rng = Intersect(rng, t) ' Schnittmenge mit geändertem Bereich
Debug.Print rng.Address
If Not rng Is Nothing Then
For Each r0 In rng
With r0
Select Case .Value
Case "2"
.Interior.ColorIndex = 4     'Farbe grün
Case "3"
.Interior.ColorIndex = 27    'Farbe gelb
Case Is >= "4"
.Interior.ColorIndex = 3     'Farbe rot
Case Else
.Interior.ColorIndex = xlNone     ' alte Farbe wird gelöscht
End Select
End With
Next
End If
Application.Calculation = xlAutomatic
End Sub
Das geht naturlich nicht, wenn sich die Zellenwerte durch eine Formel ändern.
Gruß Matthias
Anzeige
AW: mehrere Tabellenblätter gleichzeitig ansprechen
22.01.2017 21:40:48
Jens
Hallo Matthias,
erstmal Danke für Deine Hilfe.
Leider bringt er mir Laufzeitfehler "1004"
Die Methode "Range" für das Objekt _Worksheet ist fehlgeschlagen
Set rng = t.Worksheet.Range(Cells(8, 5), Cells(58, 149)) 'der Bereich
Was ist das nun schon wieder fürn Mist ...?
Also in der ganzen Kopier und Einfüge Prozedur sind teilweise schon Formeln enthalten.
In diesem "Färbebereich" sind KEINE Formeln drin.
Warum KEINE Bedingte Formatierung:
Die Bedingte Formatierung ist auch mit erheblichen Arbeitsaufwand verbunden, muss bei Änderungen mühselig in jedem Tabellenblatt und Bereich angepasst werden. Hier verliert man schon mal die Übersicht.
Das schlimmste ist allerdings wenn Sie nicht mehr funktioniert und man muss alles wieder mühselig
von neuen Formatieren.
Davon hab ich die Nase gestrichen voll!
VG
Anzeige
AW: mehrere Tabellenblätter gleichzeitig ansprechen
22.01.2017 22:12:59
Gerd
Hallo Jens,
wiederhole die Referenzierung auf das Blatt vor "Cells".
Set rng = t.Worksheet.Range(t.Worksheet.Cells(8, 5), t.Worksheet.Cells(58, 149))   'der Bereich

Gruß Gerd
AW: mehrere Tabellenblätter gleichzeitig ansprechen
23.01.2017 00:58:30
Jens
Hallo Matthias u. Gerd,
vielen Dank für Eure tolle Hilfe.
Es funktioniert prima.
Bisher kommen auch keine verdeckten Fehler (man weiß ja nie)
Eine Frage hätte ich noch.
Was tun bei wenn sich der Bereich durch Formeln ändert.
=ZÄHLENWENN(Woche!K8:AE8;"3")

Die Werte in den "Gänsefüßchen" sind veränderlich.
Matthias hat geschrieben das der Code bei Formeln nicht funktioniert.
Das geht naturlich nicht, wenn sich die Zellenwerte durch eine Formel ändern.

Das stimmt, da macht er wieder "Rotfärbungen..."
Gibts hier noch eine Lösung die ich ins Modul schreiben kann?
Sonst müsste ich den Code erstmal im jeweiligen Tabellenblatt lassen.
(Bisher wäre lediglich nur ein Sheet betroffen, so dass der Aufwand bei Änderungen überschaubar bleibt)
Der Code ist auch gleich, lediglich der Bereich ist anders.
VG, Jens
Anzeige
AW: mehrere Tabellenblätter gleichzeitig ansprechen
23.01.2017 16:28:22
MatthiasG
Hallo Jens,
ehrlich gesagt verstehe ich deine neue Frage nicht. Vielleicht formulierst du die nochmal neu?
Was verändert sich in der Formel, die "3"? Wo steht die Formel?
...
Gruß Matthias

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige