465 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Zusammen,

ich suche nun schon seid Ewigkeiten finde aber nicht den richtigen Excel VBA-Code.

Nun zur Sache: Über einen SVERWEIS habe ich eine Zahl in Zelle (Y3) stehen und ich hätte gerne, dass wenn Y3=0 ist die Zelle P3 mit 2 Diagonalen sozusagen geXt wird, ändert sich Y3 wieder auf <> 0 soll das Xauch wieder verschwinden. Gleiches gilt für Y4, Y5, Y6 bis Y300

Einen Code zum Zellen Xen findet man sehr häufig, aber diese Codes fünktionieren nicht mit dem SVERWEIS, da man immer die Zelle einmal auswählen und dann Enter drücken muss.

Für eure Hilfe wäre ich sehr sehr Dankbar,

LG Simon

4 Antworten

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi Simon,

die Codes die du gefunden hast sind schon die richtigen, du musst sie nur dahingehend umschreiben, dass sie nicht die Zelle mit dem Formelergebnis überwachen sondern die Zellen, welche das Ergebnis des SVERWEIS beeinflussen. Wie das konkret aussieht hängt von deiner SVERWEIS-Formel ab.

Bis später, Karin
0 Punkte
Beantwortet von

Ok aber wie mache ich das, leider bin ich absoluter VBA Anfänger.

Der Code den ich benutze ist:

"Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&
If Target.Column <> 25 Then Exit Sub
With Target
   For i = 5 To 6
      If .Value = 0 Then
         .Offset(0, -9).Borders(i).LineStyle = xlContinuous
      Else
         .Offset(0, -9).Borders(i).LineStyle = xlNone
      End If
   Next
End With
End Sub"

Aber der funktioniert nicht mit dem SVERWEIS, sondern nur wenn man die 0 einträgt :-(

Das Suchkriterium steht in Spalte D und ist eine Artikelnummer der ein Soll-Wert in Spalte Y zugeordnet ist, wenn der Wert 0 ist, ist dieser praktisch nicht vorhanden und dann soll die Zelle P ausgeXt werden, da hier der IST-Wert eingetragen wird.

Für weitere Hilfe wäre ich sehr Dankbar

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Folgender Code reagiert bei Eingabe in Spalte D:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngZelle As Range
    ' Eingabespalte D (4)
    If Target.Cells(1).Column = 4 Then
        ' Schleife über jede Zelle des Eingabebereichs
        For Each rngZelle In Target
            ' Spalte der laufenden Zelle ist D (4)
            If rngZelle.Column = 4 Then
                ' bezogen auf 12 Spalten rechts (Spalte P) von Eingabespalte
                With rngZelle.Offset(0, 12)
                    ' Zellinhalt 21 Spalte rechts (Spalte Y) von Eingabespalte ist 0
                    ' dann Diagonalen setzen
                    If rngZelle.Offset(0, 21) = 0 Then
                        .Borders(5).LineStyle = xlContinuous
                        .Borders(6).LineStyle = xlContinuous
                    ' Zellinhalt 21 Spalte rechts (Spalte Y) von Eingabespalte ist nicht 0
                    ' dann Diagonalen löschen
                    Else
                        .Borders(5).LineStyle = xlNone
                        .Borders(6).LineStyle = xlNone
                    End If
                End With
            End If
        Next rngZelle
    End If
End Sub


Bis später, Karin

0 Punkte
Beantwortet von
ausgewählt von halfstone
 
Beste Antwort
Funktioniert TOP :-)

Vielen Dank
...