Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1104to1108
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

Bei Zellinhalt und Rand gleichzeitig löschen

Bei Zellinhalt und Rand gleichzeitig löschen
Lena
Hallo...
in meiner Beispieldatei ist die aktive Zelle C5. Wenn ich den Zellinhalt lösche, möchte ich, dass sich der Rahmen "Selection.Borders(xlEdgeTop).LineStyle = xlNone" löscht - auch in den zwei Zellen weiter links.
Es soll dann so aussehen, wie in Tabelle2 meiner Beispieldatei. Die betreffenden Löschzellen sind aber nur in den Spalten C, F, I, L und O, und in den Spalten 3, 5, 7 ....21. Alle anderen Zellen sollen von diesem Befehl unberührt bleiben.
In der Hoffnung, das so etwas überhaupt geht bedanke ich mich schon im Voraus für eure Hilfe.
MfG
Lena
welche Beispieldatei? owT
01.10.2009 22:35:11
Uduuh
AW: Bei Zellinhalt und Rand gleichzeitig löschen
02.10.2009 08:51:23
Tino
Hallo,
versuche es mal mit diesem Code.
Kommt als Code in die entsprechende Tabelle.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range

Set Bereich = Intersect(Range("C3,C5,C7"), Target)

If Not Bereich Is Nothing Then
 For Each Bereich In Bereich
  If Bereich = "" Then
   Range(Bereich, Bereich.Offset(0, -2)).Borders(xlEdgeTop).LineStyle = xlNone
  Else
   Range(Bereich, Bereich.Offset(0, -2)).Borders(xlEdgeTop).LineStyle = xlContinuous
  End If
 Next Bereich
End If

End Sub
Gruß Tino
Anzeige
AW: Bei Zellinhalt und Rand gleichzeitig löschen
02.10.2009 09:52:30
Lena
Hallo Tino,
besten Dank.
Da ich es aber für mehrere Spalten brauche, habe ich es jetzt so gemacht:
Dim Montag As Range
Set Montag = Intersect(Range("C3,C5,C7,c9,c11,c13,c15,c17,c19,c21,c23,c25"), Target)
If Not Montag Is Nothing Then
For Each Montag In Montag
If Montag = "" Then
Range(Montag, Montag.Offset(0, -2)).Borders(xlEdgeTop).LineStyle = xlNone
Else
Range(Montag, Montag.Offset(0, -2)).Borders(xlEdgeTop).LineStyle = xlContinuous
End If
Next Montag
End If
Dim Dienstag As Range
Set Dienstag = Intersect(Range("f3,f5,f7,f9,f11,f13,f15,f17,f19,f21,f23,f25"), Target)
If Not Dienstag Is Nothing Then
For Each Dienstag In Dienstag
If Dienstag = "" Then
Range(Dienstag, Dienstag.Offset(0, -2)).Borders(xlEdgeTop).LineStyle = xlNone
Else
Range(Dienstag, Dienstag.Offset(0, -2)).Borders(xlEdgeTop).LineStyle = xlContinuous
End If
Next Dienstag
End If
Dim Mittwoch As Range
Set Mittwoch = Intersect(Range("h3,h5,h7,h9,h11,h13,h15,h17,h19,h21,h23,h25"), Target)
If Not Mittwoch Is Nothing Then
For Each Mittwoch In Mittwoch
If Mittwoch = "" Then
Range(Mittwoch, Mittwoch.Offset(0, -2)).Borders(xlEdgeTop).LineStyle = xlNone
Else
Range(Mittwoch, Mittwoch.Offset(0, -2)).Borders(xlEdgeTop).LineStyle = xlContinuous
End If
Next Mittwoch
End If
Läßt sich das nun nicht noch kürzer schreiben?
MfG
Lena
Anzeige
AW: Bei Zellinhalt und Rand gleichzeitig löschen
02.10.2009 10:35:59
Tino
Hallo,
versuche es mal so.
kommt als Code in Tabelle
Option Explicit 
 
Private Sub Worksheet_Change(ByVal Target As Range) 
Dim Bereich As Range 
Dim strZellen As String 
 
'Deine Zellen 
strZellen = "C3,C5,C7,c9,c11,c13,c15,c17,c19,c21,c23,c25," & _
            "f3,f5,f7,f9,f11,f13,f15,f17,f19,f21,f23,f25," & _
            "h3,h5,h7,h9,h11,h13,h15,h17,h19,h21,h23,h25" 
 
 
 
Set Bereich = Intersect(Range(strZellen), Target) 
 
If Not Bereich Is Nothing Then 
 For Each Bereich In Bereich 
  If Bereich = "" Then 
   Range(Bereich, Bereich.Offset(0, -2)).Borders(xlEdgeTop).LineStyle = xlNone 
  Else 
   Range(Bereich, Bereich.Offset(0, -2)).Borders(xlEdgeTop).LineStyle = xlContinuous 
  End If 
 Next Bereich 
End If 
 
End Sub 
 

Gruß Tino
Anzeige
AW: Bei Zellinhalt und Rand gleichzeitig löschen
02.10.2009 11:07:32
Lena
Hallo Tino,
nochmal danke, es funktioniert.
Gruß
Lena
oder auch so...
02.10.2009 11:17:54
Tino
Hallo,
wenn die Bereiche immer den gleichen Abstand haben, gehts auch mit einer Schleife.
Hier mal mit 7 Stück.
kommt als Code in Tabelle
Option Explicit 
 
Private Sub Worksheet_Change(ByVal Target As Range) 
Dim Bereich As Range 
Dim rZellen As Range 
Dim i As Integer 
 
'Dein erster Zellbereich 
Set rZellen = Range("C3,C5,C7,c9,c11,c13,c15,c17,c19,c21,c23,c25") 
 
For i = 3 To 18 Step 3 'für 6 weitere Bereiche (18/3 = 6) 
 Set rZellen = Union(rZellen, rZellen.Offset(0, i)) 
Next i 
 
Set Bereich = Intersect(rZellen, Target) 
 
If Not Bereich Is Nothing Then 
 For Each Bereich In Bereich 
  If Bereich = "" Then 
   Range(Bereich, Bereich.Offset(0, -2)).Borders(xlEdgeTop).LineStyle = xlNone 
  Else 
   Range(Bereich, Bereich.Offset(0, -2)).Borders(xlEdgeTop).LineStyle = xlContinuous 
  End If 
 Next Bereich 
End If 
 
End Sub 
 

Gruß Tino
Anzeige
AW: oder auch so...
02.10.2009 11:53:42
Lena
Hallo Tino,
danke für die zweite Möglichkeit.
MfG
Lena

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige