Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: If Target.Address vereinfachen

If Target.Address vereinfachen
12.04.2016 16:53:52
Martin
Hi zusammen,
wie kann ich diese 4 Zeilen auf zwei reduzieren?
Ich hab in meinem Beispiel nämlich viel mehr Zellen die überprüft werden sollen und das gleiche _ machen sollen bzw soll eine Änderung in der gleichen Zelle mehrere Dinge machen.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$18" Then Range("D22") = ""
If Target.Address = "$D$19" Then Range("D22") = ""
If Target.Address = "$D$37" Then Range("D48") = ""
If Target.Address = "$D$37" Then Range("D50") = ""
End Sub

Danke und lg
Martin

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If Target.Address vereinfachen
12.04.2016 17:01:07
Daniel
Hi
Select Case Target.Address(0, 0)
Case "D18", "D19"
Range("D22").ClearContents
Case "D37"
Range("D48,D50").Clearcontents
case Else
End Select

Gruß Daniel

Perfekt! Danke dir!
12.04.2016 17:21:51
Martin
Sehr genial!
Danke dir Daniel!
lg
Martin
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

If Target.Address vereinfachen in Excel VBA


Schritt-für-Schritt-Anleitung

Um die Überprüfung mehrerer Zellen mit Target.Address in Excel VBA zu vereinfachen, kannst Du die Select Case-Anweisung verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor in Excel (drücke ALT + F11).

  2. Finde das Arbeitsblatt, für das Du den Code anpassen möchtest.

  3. Ersetze den bestehenden Code durch den folgenden:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Select Case Target.Address(0, 0)
           Case "$D$18", "$D$19"
               Range("D22").ClearContents
           Case "$D$37"
               Range("D48,D50").ClearContents
           Case Else
       End Select
    End Sub
  4. Schließe den VBA-Editor und teste die Änderungen in Excel.

Mit dieser Methode hast Du die Anzahl der Zeilen reduziert, was Deinen Code einfacher und übersichtlicher macht.


Häufige Fehler und Lösungen

  • Fehler: "Fehler beim Ausführen der Methode 'ClearContents'"

    • Lösung: Überprüfe, ob die Zellen, auf die Du zugreifst, tatsächlich existieren und nicht geschützt sind.
  • Fehler: "Das Ziel ist nicht in der angegebenen Range"

    • Lösung: Stelle sicher, dass Du die richtigen Adressen in Select Case verwendest. Überprüfe auch, ob Target tatsächlich eine Zelle ist.

Alternative Methoden

Eine alternative Methode, um mehrere Adressen in einer Zeile zu überprüfen, ist die Verwendung von If-Anweisungen mit Or. Hier ein Beispiel:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$18" Or Target.Address = "$D$19" Then
        Range("D22").ClearContents
    ElseIf Target.Address = "$D$37" Then
        Range("D48,D50").ClearContents
    End If
End Sub

Diese Methode ist jedoch weniger übersichtlich als die Select Case-Anweisung.


Praktische Beispiele

Hier sind einige weitere Beispiele, wie Du If Target.Address in verschiedenen Szenarien verwenden kannst:

  1. Wenn Du mehrere Zellen überprüfen möchtest:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Me.Range("D18:D19")) Is Nothing Then
           Range("D22").ClearContents
       End If
       If Not Intersect(Target, Me.Range("D37")) Is Nothing Then
           Range("D48,D50").ClearContents
       End If
    End Sub
  2. Wenn Du einen bestimmten Wert in einer Zelle überprüfen möchtest:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Address = "$D$18" And Target.Value = "Reset" Then
           Range("D22").ClearContents
       End If
    End Sub

Tipps für Profis

  • Verwende Option Explicit am Anfang Deiner Module, um sicherzustellen, dass alle Variablen deklariert sind.

  • Nutze With-Anweisungen, um Deine Codes noch übersichtlicher zu gestalten.

    Beispiel:

    With Range("D48,D50")
      .ClearContents
    End With
  • Verwende benannte Bereiche, um die Lesbarkeit Deines Codes zu erhöhen.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Target.Address und Target.Range?
Target.Address gibt die Adresse der Zelle als String zurück, während Target.Range ein Range-Objekt darstellt.

2. Kann ich Target.Address in einer Schleife verwenden?
Ja, Du kannst Target.Address in einer Schleife verwenden, um mehrere Zellen zu überprüfen, aber es ist effizienter, Select Case oder If-Anweisungen zu verwenden, um die Lesbarkeit zu erhöhen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige