Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1860to1864
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 Intersect Bereiche mit Vaiable

Mehrere Intersect Bereiche mit Vaiable
30.12.2021 09:17:21
Pemito
Servus,
Ich bin neu hier bei Euch und könnte Eure Hilfe gebrauchen.
Ich habe mehrere untereinander separate Intersect Bereiche.
Mit dem Selection Change Ereignis kann ich die Zellen mit einer vordefinierten Hintergrundfarbe verändern.
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Intersect(Target, Range("D6:L10")) Is Nothing Then
'?
Else
If Target.Row 10 Then Exit Sub
If Target.Column If Target.Column > 55 Then Exit Sub
Target.Interior.ColorIndex = Range("B5").Font.ColorIndex
End If
If Intersect(Target, Range("D12:L16")) Is Nothing Then
'?
Else
If Target.Row 16 Then Exit Sub
If Target.Column If Target.Column > 55 Then Exit Sub
Target.Interior.ColorIndex = Range("B11").Font.ColorIndex
End If
Dieser Code tut was er soll alles ok.
Jetzt habe ich aber unterhalb der Zeile 10 noch eine Zeile gebraucht
und schon passt der ganze Code nicht mehr.
z.B. diese Zeile muss jetzt auf L11 erweitert werden.
If Intersect(Target, Range("D6:L10")) Is Nothing Then
z.B. diese Zeile muss jetzt auf D13:L17 erweitert werden.
If Intersect(Target, Range("D12:L16")) Is Nothing Then
Hier im Forum habe ich schon gefunden das ich für die Zeilen Nummer eine Variable nehmen kann.
Dim zeilen_nr As Long
If Intersect(Target, Range("D6:" & "L" & zeilen_nr)) Is Nothing Then
Aber ich weiß nicht wie die Variable die Info bekommen soll das eine neue Zeile eingefügt wurde.
Wer von Euch könnte mir bitte helfen dieses Problem zu lösen?
Grüße Pemito

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Intersect Bereiche mit Vaiable
30.12.2021 09:43:56
Oberschlumpf
Hi,
ich würde den umgekehrten Weg versuchen - nicht reagieren, wenn eine falsche Zelle ausgewählt wurde, sondern nur dann reagieren, wenn jeweils die richtige Zelle ausgewählt wurde.
Versuch mal so:

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("D6:L11")) Is Nothing Then 'nur, wenn im Bereich D6:L11 eine Zelle gewählt wurde, erhält diese die Hintergrundfarbe von B5
Target.Interior.ColorIndex = Range("B5").Font.ColorIndex
End If
If Not Intersect(Target, Range("D13:L17")) Is Nothing Then 'nur, wenn im Bereich D13:L17 eine Zelle gewählt wurde, erhält diese die Hintergrundfarbe von B11
Target.Interior.ColorIndex = Range("B11").Font.ColorIndex
End If
End Sub
Hilfts?
Ciao
Thorsten
Anzeige
AW: Mehrere Intersect Bereiche mit Vaiable
30.12.2021 10:05:48
Pemito
Hallo Oberschlumpf,
Vielen Dank für deine Antwort.
Ich denke ich habe es nicht gut genug erklärt.
Range("D6:L10") und Range("D12:L16") sind jeweils 5 Zeile untereinander und ist meine Ausgangsposition.

If Not Intersect(Target, Range("D6:L11")) Is Nothing Then 'nur, wenn im Bereich D6:L11 eine Zelle gewählt wurde,
Wenn ich dann unter der Zeile 11 eine Zeile hinzufüge dann passt L11 nicht mehr und muss zu L12 werden.
Die Zeilennummer muss dynamisch sein also die Idee mit der Variable falls das überhaupt möglich ist.
Ich hoffe es ist verständlicher was ich meine.
Grüße Pemito
Anzeige
AW: Mehrere Intersect Bereiche mit Vaiable
30.12.2021 10:18:31
ralf_b
dann recherchiere "die letzte benutzte Zelle ermitteln" dazu muß man nicht das Forum bemühen.
Einspruch :-)
30.12.2021 10:34:54
Oberschlumpf
Hi Ralf,
bei - fast ahnungslos - in Excel + VBA find ich das selbstständige Suchen, noch mehr auch noch das Finden vom Code für "letzte, benutzte Zeile" nich ganz sooo einfach ;-)
Daher ist die Frage im Forum "Was soll ich machen?" durchaus legitim.
@Pemito
letzte, benutzte Zeile als Code=

Cells(Rows.Count, 1).End(xlUp).Row 'die 1 steht für Spalte 1; entsprechend anpassen, wenn du die letzte Zeile einer anderen Spalte ermitteln willst
Ciao
Thorsten
Anzeige
von mir aus ...
30.12.2021 11:03:00
mir
naja das kann man so oder so sehen.
er hat bereits im Forum mitgelesen und programmiert selbst. Das ist per 'se schon eine eigenständige Recherche. Somit weis er wie es geht und die letzte benutzte Zeile ist ein sehr häufig auftretendes Element. Das kann er nicht übersehen haben. Ich habe zunehmend den Eindruck das hier lieber gefragt als gesucht wird.
Egal ob man dann den vielen Lesern und den letztendlich wenigen Antwortenden damit ihre Lebenszeit stiehlt.
Es stellt sich die Frage worin die Zeile eingefügt wird. Gibt es vielleicht ne intelligente Tabelle?
Auch die Idee eines Bereichsnamens wäre hier noch zu erwägen.
Wir wissen ja nicht ob es mehrere Tabellenbereiche untereinander gibt. Hier würde Cells(rows.count,1) ..... nur "unten" anschlagen.
beste Grüße
rb
Anzeige
AW: von mir aus ...
30.12.2021 13:07:47
mir
Hallo ralf_b,
Vielen Dank für deine Antworten und Hilfe.
Warum gehst du davon aus das ich hier nur fragen will? Das ist heute schon der dritte Tag wo ich Google und gewisse Foren durchsuche.
Den VBA Code den ich hier reingestellt habe ist auch nur aus dem Internet.
Also meine Fehler ist das ich nicht richtig beschrieben habe was ich möchte. Ich dachte so wie ich es beschreibe reicht es aus.
Also in Zukunft immer eine Beispieldatei und wir haben weniger Missverständnisse.
Also versuche ich es jetzt besser zu beschreiben + die Datei.
Warum ich eine Zeile einfügen möchte ist wenn in Spalte B von B6 - B10 keine Zelle mehr frei ist. In B11 steht eine neue Überschrift vom nächsten Bereich.
Von D6 - L10 kann man die Zellen durch reinklicken die Hintergrundfarbe ändern.
Wenn ich jetzt unter der Zeile 10 manuell eine Zeile einfüge dann ändert sich der Bereich von D6 - L10 auf D6 - L11
Deswegen meine Idee mit der Variable.
If Intersect(Target, Range("D6:" & "L" & zeilen_nr)) Is Nothing Then

Wir wissen ja nicht ob es mehrere Tabellenbereiche untereinander gibt. Hier würde Cells(rows.count,1) ..... nur "unten" anschlagen.
Als wenn du Gedanken lesen könntest.
Es gibt in der Spalte B mehrere Teilbereiche (zur Zeit 3) wo es mehre Zellen gibt die leer sein können.
Mit End(xlUp) wär mir nicht geholfen laut I-Net gibt es auch xlDown von oben nach unten aber wie setzt man das auf Teilbereiche ein?

Auch die Idee eines Bereichsnamens wäre hier noch zu erwägen.
Von Bereichsnamen habe ich noch nichts gehört das schaue ich mir mal an.
@ Oberschlumpf
Vielen Dank auch für deine Unterstützung und Beispielcode.
Dann bitte ich noch um Entschuldigung falls ich hier nicht die Forenregeln eingehalten habe.
Ich möchte hier niemanden die Zeit rauben. Und dann wünsche ich allen ein frohes und vor allem gesundes neues Jahr.
https://www.herber.de/bbs/user/150070.xlsm
Grüße Pemito
Anzeige
update ...
30.12.2021 14:39:31
ralf_b
da ist mit noch was aufgefallen. Zeilen oder Spalten einfügen würde die ganze Zeile oder spalte färben.

'wenn ganze Zeile oder ganze Spalte ausgewählt wurde
If Selection.Address = Target.EntireRow.Address Or Selection.Address = Target.EntireColumn.Address Then Exit sub
'bereich von überschrift 1 bis 5 zeilen unterhalb anfangbereich3 und 10 Spalten nach rechts
If Not Intersect(Target, Range(Range("anfangbereich1").Offset(, 1), Range("anfangbereich3").Offset(5, 10))) Is Nothing Then

Anzeige
AW: Schönheitsfehler
30.12.2021 14:58:34
Pemito
Hallo ralf_b,
Vielen Dank für die Datei und deine Mühe.
Ich habe ein bisschen ausprobiert und dabei festgestellt das wenn man auf eine der Zeilen Nummern klickt außer die mit der "Überschrift"
um z.B. eine Zeile zu löschen oder zu formatieren dann wird die ganze Zeile farbig hinterlegt.
Userbild
Grüße Pemito
erledigt.. oder? owt
30.12.2021 15:14:15
ralf_b
Optimierung
30.12.2021 16:52:43
Pemito
Hallo ralf_b,
Sorry du warst schneller.
Ein Frage zu dieser Zeile:
Range("anfangbereich3").Row + 6 Then
Könnte man an statt der +6 auch sagen das Excel bis zur nächsten Überschrift schauen soll. Man weiß ja nicht im voraus wie viele Zeilen eingefügt werden.
Vielen Dank noch mal für deine Unterstützung
Grüße Pemito
Anzeige
AW: Optimierung
30.12.2021 19:17:06
ralf_b
das es kein Ende des 3. Bereiches gab ,habe ich das quasi simuliert. Mach was draus
AW: Mehrere Intersect Bereiche mit Vaiable
30.12.2021 10:42:53
Oberschlumpf
Hi
Range("D6:L10") und Range("D12:L16") sind jeweils 5 Zeile untereinander = FALSCH!
Mit D6:L10 sprichst du einen ganzen Zellbereich an, beginnt bei D6, hört auf bei L10 - und nicht jeweils untereinander
Bei D12:L16 ist es genau so.
Und was das Hinzufügen von weiteren Zeilen betrifft, die dann nicht mehr in den definierten Bereich passen, so zeig bittte per Upload eine Bsp-Datei mit Bsp-Daten.
Denn L10 ist ja - nicht - die letzte, benutzte Zeile, da ja ab D12 noch weitere Zeilen genutzt werden - bevor - du unter D10 eine Zeile hinzufügst.
Ciao
Thorsten
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige