Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Nachbarzellen leeren nach Formatänderung

Betrifft: Nachbarzellen leeren nach Formatänderung von: Mario Kuhlmey
Geschrieben am: 14.05.2008 11:21:05

Hallo liebe Excel-Freunde,

ich habe folgendes Problem mit einem Makro zu lösen:

Private Sub CommandButton2_Click()
ActiveSheet.Unprotect
Range("C10:FU64").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Range("C10").Select
ActiveSheet.Protect
End Sub



Soweit alles ok, aber gleichfalls soll das Makro auch alle Nachbarzellen leeren, deren Format gelöscht wurde.
Mit ActiveCell.Offset(0, 1) = "" passiert gar nichts.

Kann jemand helfen ?

Vielen Dank und Grüsse an alle

Mario

  

Betrifft: AW: Nachbarzellen leeren nach Formatänderung von: Renee
Geschrieben am: 14.05.2008 11:32:35

Hi Mario,

Meinst du so?

Private Sub CommandButton2_Click()
    ActiveSheet.Unprotect
    Range("C10:FU64").Borders(xlDiagonalDown).LineStyle = xlNone
    Range("C10:FU64").Borders(xlDiagonalUp).LineStyle = xlNone
    Range("D10:FV64").Value = ""
    ActiveSheet.Protect
End Sub



GreetZ Renée


  

Betrifft: AW: Nachbarzellen leeren nach Formatänderung von: Mario Kuhlmey
Geschrieben am: 14.05.2008 13:20:39

Hallo Renée,
nein, leider falsch, da dann im angegebenen Bereich die Inhalte aller Zellen geleert werden, also auch die Inhalte der Zellen, die vorher das Kreuz hatten. Es soll aber immer nur die Zelle daneben geleert werden.
Der Bereich hat 14 Spalten und 14 Zeilen, also soll immer nur jede zweite Spalte geleert werden.

Ich hoffe Du hast verstanden.

Gruss Mario


  

Betrifft: AW: Nachbarzellen leeren nach Formatänderung von: Renee
Geschrieben am: 14.05.2008 13:29:23

Hi Mario,

Nein ich hab nicht verstanden. Denn dein Code löscht einfach im ganzen Bereich die Diagonal-Rahmen.
Ob da was vorher war oder nicht. Also Frage:
Muss festgestellt werden, ob ein 'Kreuz' in der Zelle ist und dann und nur dann die Zelle rechts davon geleert werden ? Dann sähe der Code natürlich anders aus. Es wäre vielleicht nicht schlecht, wenn die Anforderungen, was man machen will, jeweils schon in der Anfrage klar formuliert sind.

GreetZ Renée


  

Betrifft: AW: Nachbarzellen leeren nach Formatänderung von: Mario Kuhlmey
Geschrieben am: 14.05.2008 14:27:16

Hallo Renée,
richtig, dann und nur dann soll die Zelle geleert werden.
Ich war in guter Hoffnung, das so ausgedrückt zu haben. Tut mir leid, dass es dann doch unverständlich war.

Noch mal zum Verständnis: Ich habe ein Arbeitsblatt, in dem Zellen mehrerer Bereiche durch Doppelklick angekreuzt werden und gleichfalls die jeweils benachbarte Zelle das Wort "ja" erhält. Damit frage ich die Werte der angekreuzten Zellen weiter unten im Arbeitsblatt ab. Durch erneuten Doppelklick auf eine angekreuzte Zelle lösche ich das Kreuz und den Wert "ja" in der jeweiligen Nachbarzelle wieder.
Da ich in meinem Arbeitsblatt insgesamt 588 Kreuze machen kann, will ich ein Makro erstellen, das mir die Möglichkeit gibt alle Kreuze auf einmal zu löschen, sowie deren zugehörige Nachbarzelle zu leeren, quasi ein globales zurück setzen des gesamten Bereiches. Die Werte, die in den angekreuzten Zellen stehen, dürfen jedoch nicht verloren gehen.

Gruss Mario


  

Betrifft: AW: Nachbarzellen leeren nach Formatänderung von: Renee
Geschrieben am: 14.05.2008 15:08:17

Hi Mario,

Dann ist es nun klar und dein Makro müsste so aussehen:

Private Sub CommandButton2_Click()
    Dim rC As Range
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect
    For Each rC In Range("C10:FU64")
        If rC.Borders(xlDiagonalDown).LineStyle <> xlNone And _
           rC.Borders(xlDiagonalUp).LineStyle <> xlNone Then
            rC.Borders(xlDiagonalDown).LineStyle = xlNone
            rC.Borders(xlDiagonalUp).LineStyle = xlNone
            rC.Offset(0, 1).Value = ""
        End If
    Next
    ActiveSheet.Protect
    Application.ScreenUpdating = True
End Sub


GreetZ Renée


  

Betrifft: AW: Nachbarzellen leeren nach Formatänderung von: Mario Kuhlmey
Geschrieben am: 14.05.2008 15:45:32

Hallo Renée,

ich danke Dir 1000fach. Klappt wunderbar. Arbeitet auch viel schneller, als mein Makro. Bei mir habe ich jede zweite Spalte löschen lassen und da konnte man zuschauen, wie das Makro die Spalten abarbeitet.

Also noch mal vielen Dank.

Gruss Mario


  

Betrifft: AW: mit .ClearContents von: Hoffi
Geschrieben am: 14.05.2008 11:34:23

Hallo,



ActiveCell.Offset(0, 1).ClearContents


Grüße

Hoffi


  

Betrifft: Was hat Activecell mit Selection... von: Renee
Geschrieben am: 14.05.2008 11:37:33

am Hut?

Mit ActiveCell.Offset(0, 1) = "" passiert gar nichts.
ActiveCell.Offset(0, 1).ClearContents passiert auch nicht nix... den beide Befehle löschen gerade mal die Zelle rechts von der ersten Zelle der Selection !!!

GreetZ Renée


  

Betrifft: AW: Was hat Activecell mit Selection... von: Hoffi
Geschrieben am: 14.05.2008 11:56:08

Hallo Renée,

das stimmt schon, und Deine Lösung ist ja auch die richtige.

Ich hab nur seinen Ansatz ActiveCell.Offset(0,1) ="" berichtigt.

Grüße

Hoffi


 

Beiträge aus den Excel-Beispielen zum Thema "Nachbarzellen leeren nach Formatänderung"