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

Target.Column VBA Frage

Forumthread: Target.Column VBA Frage

Target.Column VBA Frage
07.12.2003 02:01:43
Klaus
Guten Morgen,

ich hab da in einer VBA Formel u.a. folgende Zeile stehen:

If Target.Column <> 1 Then Exit Sub

Heißt also, soll nur in Spalte A aktiv sein.
Wie muss ich den die Formel umstellen, wenn ich noch mehr oder gar unterschiedliche Spalten auswählen möchte?

Vielen Dank im Voraus

Klaus
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Target.Column VBA Frage
07.12.2003 02:17:51
Klaus
Hallo!

Hab´s gefunden - sorry!

einfach nur:

If Target.Column = 1 and Target.Column = 2 (etc.) Then Exit Sub

Also, sorry nochmal

Klaus
Trotzdem noch ein kleiner Hinweis
07.12.2003 08:03:58
Ramses
Hallo

um die UND-Prozedur etwas einzugrenzen wenn du mehrere Spalten prüfen willst, kannst du folgendes machen

Option Explicit


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Column
Case 1, 3, 5, 7, 9
MsgBox "Korrekt"
Case 2, 4, 6, 8, 10
MsgBox "Nicht korrekt"
End Select
End Sub


Gruss Rainer
Anzeige
AW: ODER statt UND?
07.12.2003 11:51:26
Lupus
Hallo Rainer,

aufgrund Deiner vielen Hilfen hier im Forum, weiss ich, das Du Dich sehr gut mit Excel auskennst, aber entspricht die Anweisung

Case 1, 3, 5, 7, 9

nicht eher einer ODER-Verknüpfung?

Gruß Lupus
AW: ODER statt UND?
07.12.2003 12:27:10
Ramses
Hallo

das ist richtig.
Aber die Anweisung die Klaus geschrieben hat funktioniert so nicht :-)

Wenn du mit Selection_Change die Target.Column abfrägst erhältst du nur die die Column der ersten markierten Zelle und keine zweite.
Ich vermute daher dass er eher abfragen will ob bestimmte Zellen in bestimmten spalten markiert werden.

Anyway:
Das sollte nur als Ansatz bzw. zusätzliche Info dienen und nicht als Problemlösung.

Gruss Rainer
Anzeige
AW: Alles klar
07.12.2003 18:18:01
Lupus
.
;
Anzeige

Infobox / Tutorial

Verwendung von Target.Column in VBA für Excel


Schritt-für-Schritt-Anleitung

Um die Target.Column-Eigenschaft in Deinem Excel VBA-Projekt effektiv zu nutzen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle das entsprechende Arbeitsblatt: Im Projekt-Explorer wähle das Arbeitsblatt aus, in dem Du die Target.Column-Überprüfung durchführen möchtest.

  3. Füge den folgenden Code ein:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Target.Column = 1 Then
           MsgBox "Du hast Spalte A ausgewählt."
       ElseIf Target.Column = 2 Then
           MsgBox "Du hast Spalte B ausgewählt."
       End If
    End Sub
  4. Erweitere die Bedingungen: Wenn Du mehrere Spalten prüfen möchtest, kannst Du die Bedingungen anpassen. Zum Beispiel:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       Select Case Target.Column
           Case 1, 2, 3
               MsgBox "Korrekte Auswahl."
           Case Else
               MsgBox "Nicht zulässig."
       End Select
    End Sub

Häufige Fehler und Lösungen

  • Fehler: "Typenübereinstimmung Fehler"

    • Lösung: Stelle sicher, dass Target tatsächlich ein Zellbereich ist und dass Du nicht versuchst, die Column-Eigenschaft auf einen nicht definierten Bereich anzuwenden.
  • Fehler: "Die Anweisung funktioniert nicht wie erwartet"

    • Lösung: Überprüfe, ob die If-Bedingungen korrekt formuliert sind. Beispielsweise kann If Target.Column = 1 And Target.Column = 2 Then nicht funktionieren, da eine Zelle nicht gleichzeitig in zwei Spalten sein kann. Verwende stattdessen If Target.Column = 1 Or Target.Column = 2 Then.

Alternative Methoden

Eine alternative Methode zur Überprüfung von Target.Column ist die Verwendung von Application.Intersect, um zu überprüfen, ob der ausgewählte Bereich in bestimmten Spalten liegt:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Me.Columns("A:B")) Is Nothing Then
        MsgBox "Du hast eine Zelle in Spalte A oder B ausgewählt."
    End If
End Sub

Diese Methode ist besonders nützlich, wenn Du mit mehreren Spalten arbeiten möchtest, da sie die Lesbarkeit des Codes verbessert.


Praktische Beispiele

Hier sind einige Beispiele, wie Du die target.column-Überprüfung in verschiedenen Szenarien verwenden kannst:

  1. Überprüfung auf mehrere Spalten:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       Select Case Target.Column
           Case 1, 3, 5
               MsgBox "Du hast eine gültige Spalte ausgewählt."
           Case Else
               MsgBox "Ungültige Auswahl."
       End Select
    End Sub
  2. Spezifische Aktionen für bestimmte Spalten:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Target.Column = 1 Then
           ' Aktion für Spalte A
       ElseIf Target.Column = 2 Then
           ' Aktion für Spalte B
       End If
    End Sub

Tipps für Profis

  • Nutze Select Case-Anweisungen, um Deinen Code übersichtlicher zu gestalten, wenn Du viele Spalten prüfen musst.
  • Achte darauf, dass Du die Option Explicit-Anweisung verwendest, um Variablen zu deklarieren. Dies reduziert Fehler und verbessert die Lesbarkeit.
  • Berücksichtige die Verwendung von benannten Bereichen oder Konstanten für die Spaltennummern, um den Code wartungsfreundlicher zu gestalten.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Target.Column und ActiveCell.Column? Target.Column bezieht sich auf die Spalte, die durch eine Auswahländerung ausgelöst wurde, während ActiveCell.Column die Spalte der aktuell aktiven Zelle angibt.

2. Kann ich mehrere Spalten gleichzeitig überprüfen? Ja, Du kannst Select Case oder If-Anweisungen verwenden, um mehrere Spalten in einer einzigen Bedingung zu überprüfen, wobei Du die entsprechenden Spaltennummern angibst.

3. Wie kann ich überprüfen, ob eine Zelle in einem bestimmten Bereich liegt? Verwende die Application.Intersect-Methode, um zu überprüfen, ob der Target-Bereich mit einem bestimmten Bereich überlappt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige