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

Forumthread: Target (Range) Columns ansprechen

Target (Range) Columns ansprechen
13.01.2005 14:39:07
Kristin
moin moin,
ich bin leider etwas eingerostet, wer von euch kann mir sagen, wie ich aus
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
das Target herauskriege?
Ich will nichts weiter als die Target.Columns selectieren. anscheinen verstehe ich nicht so richtig wie Target 'aussieht'. Kann ich das nicht irgendwie ausgeben?
MsgBox Target.Value ist gar nichts.
Was mache ich falsch.
Danke und viele grüße Kristin
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Target (Range) Columns ansprechen
Dr.
Hi Kristin,
die Target so adressieren:
If Target.Adress = blabla...
AW: Target (Range) Columns ansprechen
13.01.2005 14:52:04
Kristin
mhhh,
ja, ich hab mir das schon ungefähr so gedacht. Aber das hilft mir so nicht weiter.
ich habe z.b. geschrieben:
Columns("A:C").Select
Jetzt brauche ich aber sowas wie:
Columns(Target.AnfangColumn:Target.EndeColumn).Select
- das geht natürlich so nicht! ich müsste also wissen wie Target übergeben wird, damit ich weiß wie ich an die beiden Spalten-Werte heran komme. Hat jemand eine Idee?
Bitte Fragen wenn ich mich unklar ausdrücke.
Dankeschön
Kristin
Anzeige
AW: Target (Range) Columns ansprechen
WernerB.
Hallo Kristin,
wie gefällt Dir das (ungetestet)?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Bereich As String, lo As String, ru As String
Dim sl As Integer, sr As Integer
Bereich = Target.Address(False, False)
lo = Left(Bereich, InStr(Bereich, ":") - 1)             'links oben
ru = Right(Bereich, Len(Bereich) - InStr(Bereich, ":")) 'rechts unten
sl = Range(lo).Column                                   'Spalte links
sr = Range(ru).Column                                   'Spalte rechts
Range(Columns(sl), Columns(sr)).Select
End Sub

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
AW: Target (Range) Columns ansprechen
Martin
Hallo Werner,
das läuft auf einen Fehler, da er z.B. mit Range(H).Column nicht anfangen kann. Gehen würde z.B.
sl = Range(lo & "1").Column 'Spalte links
sr = Range(ru & "1").Column 'Spalte rechts
aber da scheint mir mein Lösungsvorschlag etwas einfacher zu sein. ;-)
Gruß
Martin Beck
Anzeige
AW: Target (Range) Columns ansprechen
WernerB.
Hallo Martin,
vielen Dank für Deinen Hinweis.
Mit Deiner Fehlerursachenvermutung liegst Du allerdings wohl etwas daneben.
Mein Code muss nur um das aus- und wieder einschalten der Ereignissteuerung ergänzt werden, dann läuft er auch reibungslos.
Deine Anmerkung bezüglich der Einfachheit Deines Vorschlages findet hingegen meine volle neidlose Zustimmung.
Dein Vorschlag gibt mir auch Anlass, mich einmal mit dem Thema "EntireColumn/EntireRow" etwas näher zu beschäftigen.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Bereich As String, lo As String, ru As String
Dim sl As Integer, sr As Integer
Bereich = Target.Address(False, False)
lo = Left(Bereich, InStr(Bereich, ":") - 1)             'links oben
ru = Right(Bereich, Len(Bereich) - InStr(Bereich, ":")) 'rechts unten
sl = Range(lo).Column                                   'Spalte links
sr = Range(ru).Column                                   'Spalte rechts
Application.EnableEvents = False                        'Ereignis AUS
Range(Columns(sl), Columns(sr)).Select
Application.EnableEvents = True                         'Ereignis EIN
End Sub

Gruß
WernerB.
Anzeige
AW: Target (Range) Columns ansprechen
Martin
Hallo Kristin,

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
Target.EntireColumn.Select
Application.EnableEvents = True
End Sub

Gruß
Martin Beck
AW: Target (Range) Columns ansprechen
13.01.2005 15:28:56
Kristin
Hallo Martin, hallo Werner,
sowas...so einfach?! danke Martin, genau das richtige.
Werner, dass was du meintest hab ich getestet es ging nicht auf anhieb, aber sowas hatte ich mir vorgestellt. hab es nicht zu ende gebaut/angepasst :( , weil Martins Idee so einfach war, ich hatte mir die Lösung so in etwa aber vorgestellt - das geht bestimmt auch.
vielleicht benutze ich es mal, wenn ich x spalten weiter links markieren möchte. :)
der weg von Martin ist super.
danke euch.
gruß
kristin
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Target (Range) Columns ansprechen


Schritt-für-Schritt-Anleitung

Um die Target-Spalten in einem Excel VBA-Skript anzusprechen, kannst Du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (deine Datei)“ und wähle „Einfügen“ > „Modul“.

  3. Füge den folgenden Code ein:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       Application.EnableEvents = False ' Ereignis ausschalten
       Target.EntireColumn.Select ' Wähle die gesamte Spalte des Targets aus
       Application.EnableEvents = True ' Ereignis wieder einschalten
    End Sub
  4. Teste den Code: Kehre zu Deinem Excel-Arbeitsblatt zurück und wechsle die Auswahl. Die gesamte Spalte des gewählten Bereichs sollte nun markiert werden.


Häufige Fehler und Lösungen

  1. Fehler: "Target.Address ist nicht definiert."

    • Lösung: Sicherstellen, dass der Code innerhalb einer Worksheet_SelectionChange-Prozedur steht.
  2. Fehler: "Der Bereich kann nicht ausgewählt werden."

    • Lösung: Überprüfe, ob die EnableEvents-Einstellung korrekt gesetzt ist.
  3. Problem: Keine Auswahl erfolgt.

    • Lösung: Vergewissere Dich, dass der Code mit Application.EnableEvents = False beginnt und mit Application.EnableEvents = True endet, um Konflikte zu vermeiden.

Alternative Methoden

Falls Du eine andere Methode zur Auswahl von Spalten verwenden möchtest, kannst Du die Target.Columns-Eigenschaft nutzen. Hier ist ein Beispiel:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.EnableEvents = False
    Range(Target.Columns.Address).Select ' Wähle die Spalten des Targets aus
    Application.EnableEvents = True
End Sub

Diese Methode ist nützlich, wenn Du nur die Spalten adressieren möchtest, die innerhalb des Target-Bereichs liegen.


Praktische Beispiele

Hier sind einige praktische Beispiele, um die Verwendung von Target in Excel VBA zu veranschaulichen:

  1. Markiere Spalten A bis C, wenn eine Zelle in diesen Spalten ausgewählt wird:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Not Intersect(Target, Me.Range("A:C")) Is Nothing Then
           Target.Columns.Select
       End If
    End Sub
  2. Markiere die gesamte Spalte, wenn eine Zelle in Spalte D ausgewählt wird:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Target.Column = 4 Then ' Spalte D
           Target.EntireColumn.Select
       End If
    End Sub

Tipps für Profis

  • Verwende target.range: Manchmal möchtest Du nur einen bestimmten Teil des Target-Bereichs ansprechen. Die target.range-Eigenschaft kann hierbei sehr nützlich sein.
  • Fehlerbehandlung einbauen: Um auf unerwartete Fehler zu reagieren, kannst du On Error Resume Next und On Error GoTo 0 verwenden, um sicherzustellen, dass Dein Code auch bei Fehlern fortgesetzt wird.
  • Verwendung von If Target.Address = Range(...): Diese Überprüfung hilft Dir, spezifische Adressen zu identifizieren, die Du ansprechen möchtest.

FAQ: Häufige Fragen

1. Wie kann ich die Spalten des Target-Bereichs in einer Variablen speichern? Du kannst die Spalten wie folgt speichern:

   Dim spalten As Range
   Set spalten = Target.Columns

2. Was ist der Unterschied zwischen Target.Address und Target.Columns? Target.Address gibt die Adresse des gesamten Bereichs zurück, während Target.Columns spezifisch für die Spalten innerhalb dieses Bereichs ist.

3. Wie kann ich den Target-Bereich überprüfen, bevor ich eine Aktion ausführe? Du kannst die If-Bedingung verwenden, um sicherzustellen, dass der Target innerhalb eines bestimmten Bereichs liegt:

   If Not Intersect(Target, Me.Range("A1:C10")) Is Nothing Then
       ' Aktion ausführen
   End If

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige