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

Target.Row Excel VBA

Forumthread: Target.Row Excel VBA

Target.Row Excel VBA
04.12.2017 11:48:23
lio
Hallo liebes Team,
ganz dumme Frage:
ich würde mit Target.Row auch gerne die zweite Zeile ansprechen, aber irgendwie wird es nicht erkannt.
Target.Row = 1 funktioniert , aber sobald ich Target.Row = 2 nutze funktioniert es nicht (bekomme auch keinen Fehler).
Danke.
Anzeige

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Target.Row Excel VBA
04.12.2017 12:39:41
ChrisL
Hi
Dim lngZeile As Long
lngZeile = Target.Row + 1
cu
Chris
AW: Target.Row Excel VBA
04.12.2017 13:09:17
lio
Hallo Chris, danke für deine Antwort.
Habe aber eben bemerkt das mit row =1 jede Zelle in der Zeile 1 gemeint ist, ich möchte aber nur eine spezifische sprich die Spalte A und die Zeilen A1,A2,A3....
Dies ist mein Code

If Target.Row = 1 Then
ThisRow = Target.Row
cb = Target.Value
Application.Workbooks("Mappe1").Worksheets(1).Name = cb
If Target.Row + 1 Then
ThisRow = Target.Row
cb = Target.Value
Application.Workbooks("Mappe1").Worksheets(2).Name = cb

es funktioniert leider nicht
danke.
Anzeige
Beispielmappe bitte
04.12.2017 13:14:25
Werner
Hallo,
du zeigst hier nur ein paar Codeschnipsel, so kann doch kein Mensch etwas sinnvolles dazu sagen. Zeig mal den kompletten Code in dem das drin steht. Am besten eine Beispielmappe hier hochladen. Eine Beschreibung, was du eigentlich vor hast gibt es auch noch nicht.
Gruß Werner
AW: Target.Row Excel VBA
04.12.2017 13:19:09
ChrisL
Hi
If Target.Row + 1 Then
... ist keine Bedingung, daher falsch.
Beispiel:
Wenn 1+1 dann... (falsch)
Wenn 1+1 = 2 dann... (richtig)
Mehr kann ich nicht helfen, weil ich keine Ahnung habe, was du eigentlich willst.
cu
Chris
Anzeige
AW: Target.Row Excel VBA
04.12.2017 13:25:34
lio
Lieber Werner,
danke für deine Antwort, du hast recht, entschuldige.
Ich habe nur drei Leere Tabellen und in der vierten Tabelle sollen in einer bestimmten Spalte (A1-A3) die Namen der drei Tabellen(Registername) gepflegt werden. Immer wenn ich in der Zeile A1:Registername(Tabelle1),A2:Registername(Tabelle2), oder A3.. einen Namen eingeben soll sich das jeweilige Register ändern.
zb:
Ich schreibe in die Zelle A1: "test1", dann bekommt die Tabelle1 den Registernamen test.
Ich schreibe in die Zelle A2: "test11", dann bekommt die Tabelle2 den Registernamen test11.
Ich hoffe es war verständlich. Danke.
Anzeige
AW: Target.Row Excel VBA
04.12.2017 13:29:27
ChrisL
Hi
Ohne Fehlerhandling:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then Worksheets(Target.Row).Name = Target
End Sub
cu
Chris
AW: Target.Row Excel VBA
04.12.2017 13:20:16
yummi
hallo lio,

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cb As String
If Target.Column = 1 Then
cb = Target.Value
If Application.Workbooks("Mappe1").Worksheets.Count >= Target.Row Then
Application.Workbooks("Mappe1").Worksheets(Target.Row).Name = cb
End If
End If
End Sub
Meinst Du so etwas? dann wird in dein x. Tabellenblatt der Wert aus Zeile x Spalte A der Wert übernommen.
Gruß
yummi
Anzeige
AW: Target.Row Excel VBA
04.12.2017 13:32:07
lio
Hi Yummi !! Danke es funktioniert !!
Eine Frage, nur aus Interesse, kann ich mit Target.Column oder Target.Row immer nur eine ganze Zeile/Spalte ansprechen?
AW: Target.Row Excel VBA
04.12.2017 13:34:40
yummi
Hallo lio
ja mit row immer die ganze zeile und mit column immer die ganze Spalte, aber mit
target.row = 4 and target.column = 3
kannst du die Zelle C4 ansprechen.
Gruß
yummi
Anzeige
AW: Target.Row Excel VBA
04.12.2017 13:35:39
lio
ich bekomme eben an der Stelle

cb=Target.Value
den Fehler "Typen unverträglich"
AW: Target.Row Excel VBA
04.12.2017 13:38:39
lio
Der Fehler kam, als ich versuchte die Namen zu löschen.
gruß
lio
AW: Target.Row Excel VBA
04.12.2017 13:43:33
Daniel
HI
wenn du mehrere Zellen gleichzeitig änderst, dann ergibt Target.Value keinen Einzelwert, sondern ein Array! (was das ist, sollte bei VBA-gut bekannt sein)
Ein Array kannst du nicht einer Einzelwertvariable (Typ Long, Double oder String) zuweisen, sondern cb müsste in diesem Fall als Variant deklariert sein.
Gruß Daniel
Anzeige
AW: Target.Row Excel VBA
04.12.2017 13:48:29
Daniel
HI
wenn du mehrere Zellen gleichzeitig änderst, dann ergibt Target.Value keinen Einzelwert, sondern ein Array! (was das ist, sollte bei VBA-gut bekannt sein)
Ein Array kannst du nicht einer Einzelwertvariable (Typ Long, Double oder String) zuweisen, sondern cb müsste in diesem Fall als Variant deklariert sein.
Gruß Daniel
Anzeige
AW: Target.Row Excel VBA
04.12.2017 13:40:31
lio
Der Fehler kam, als ich versuchte die Namen zu löschen.
gruß
lio
AW: Target.Row Excel VBA
04.12.2017 13:43:39
yummi

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cb As String
If Target.Column = 1 and Target.Value  "" Then
cb = Target.Value
If Application.Workbooks("Mappe1").Worksheets.Count >= Target.Row Then
Application.Workbooks("Mappe1").Worksheets(Target.Row).Name = cb
End If
End If
End Sub
mit fehlerabfrage ob was drin steht
Gruß
yummi
Anzeige
AW: Target.Row Excel VBA
04.12.2017 13:40:55
yummi
ich weiß ja nciht was du in deienr Zelle drin stehen hast, aber es scheinen nicht nur Zeichenketten zub sein
cb = CStr(Target.value)
vor dem Schreiben deines neuen Tabellenblattnamens evtl noch

if len(cb) >0 then
dein code
end if
Gruß
yummi
Anzeige
AW: Target.Row Excel VBA
04.12.2017 13:51:07
lio
In der Zelle steht immer der letzte String der für das Register zuletzt eingegeben wurde.
Der Fehler(Typen unverträglich) kommt auch nur wenn ich versuche alle Strings raus zu löschen

If Target.Column = 1 Then
cb = Target.Value
If Len(cb) > 0 Then
If Application.Workbooks("Mappe1.xlsm").Worksheets.Count >= Target.Row Then
Application.Workbooks("Mappe1.xlsm").Worksheets(Target.Row).Name = cb
End If
End If
End If
End Sub
Habe ich es falsch eingebaut? bekomme den Fehler immer noch.
Tut mir total leid, für die ganzen Fragen.
Anzeige
AW: Target.Row Excel VBA
04.12.2017 13:57:35
yummi
siehe posting von 13:43
AW: Target.Row Excel VBA
04.12.2017 13:24:03
Daniel
Hi
wie schon geschrieben, nur ein Codeschnipsel ist als Information recht wenig.
das gezeigte würde ich so schreiben:
If Target.column = 1 Then
cb = Target.Value
ThisRow = Target.Row
If ThisRow 
Gruß Daniel
;
Anzeige

Infobox / Tutorial

Target.Row in Excel VBA nutzen


Schritt-für-Schritt-Anleitung

Um die Target.Row-Eigenschaft in Excel VBA zu verwenden, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Erstelle ein neues Modul:

    • Rechtsklicke auf dein Projekt im Projektfenster.
    • Wähle „Einfügen“ > „Modul“.
  3. Füge den folgenden Code ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Column = 1 Then
           Dim cb As String
           cb = Target.Value
           If Application.Workbooks("Mappe1").Worksheets.Count >= Target.Row Then
               Application.Workbooks("Mappe1").Worksheets(Target.Row).Name = cb
           End If
       End If
    End Sub
  4. Speichere dein Projekt und schließe den Editor.

  5. Teste die Funktion: Ändere einen Wert in der ersten Spalte (A1, A2, A3) deiner Tabelle, um zu sehen, ob sich der Tabellenname entsprechend ändert.


Häufige Fehler und Lösungen

  • Fehler: "Typen unverträglich"

    • Ursache: Dieser Fehler tritt auf, wenn Target.Value mehrere Zellen umfasst, was ein Array zurückgibt.
    • Lösung: Deklariere cb als Variant und nicht als String.
    Dim cb As Variant
  • Fehler: Die Zeile wird nicht geändert

    • Ursache: Möglicherweise wird die Bedingung If Target.Row = 1 Then nicht erfüllt.
    • Lösung: Überprüfe, ob die Bedingung korrekt definiert ist und ob sich der Cursor in der richtigen Zeile befindet.

Alternative Methoden

Eine alternative Methode besteht darin, den Worksheet_SelectionChange-Ereignis zu verwenden, wenn du nur die Auswahl einer Zelle verfolgen möchtest:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Row > 1 Then
        MsgBox "Du hast Zeile " & Target.Row & " gewählt."
    End If
End Sub

Diese Methode gibt eine Nachricht aus, wenn eine Zeile unterhalb der ersten Zeile ausgewählt wird.


Praktische Beispiele

  1. Umbenennung von Arbeitsblättern:

    • Wenn du in Zelle A1 "Test1" eingibst, wird das erste Arbeitsblatt in "Test1" umbenannt.
  2. Ändern des Arbeitsblattnamens basierend auf Eingaben:

    • Wenn du in A2 "NeuerName" eingibst, wird das zweite Arbeitsblatt entsprechend umbenannt.

Hier ist ein Beispielcode, der dies demonstriert:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then
        Dim cb As Variant
        cb = Target.Value
        If Len(cb) > 0 Then
            If Application.Workbooks("Mappe1").Worksheets.Count >= Target.Row Then
                Application.Workbooks("Mappe1").Worksheets(Target.Row).Name = cb
            End If
        End If
    End If
End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung: Implementiere On Error Resume Next, um den Code robuster zu gestalten und unerwartete Fehler zu vermeiden.

  • Nutze Target.Cells: Wenn du mit mehreren Zellen arbeitest, kannst du gezielt auf bestimmte Zellen zugreifen, z.B. Target.Cells(1, 1) für die erste Zelle im Zielbereich.

  • Verwende If Target.Count = 1: Dies stellt sicher, dass nur eine Zelle bearbeitet wird, bevor du Operationen daran durchführst.


FAQ: Häufige Fragen

1. Frage
Wie kann ich überprüfen, in welcher Spalte ich mich befinde?
Antwort: Du kannst die Target.Column-Eigenschaft verwenden, um die aktuelle Spalte zu bestimmen.

2. Frage
Kann ich Target.Row in einer Schleife verwenden?
Antwort: Ja, du kannst For Each verwenden, um durch alle Zellen im Target-Bereich zu iterieren und ihre Zeilen zu überprüfen.

3. Frage
Wie kann ich sicherstellen, dass mein Arbeitsblatt existiert, bevor ich den Namen ändere?
Antwort: Verwende die If Worksheets.Count-Bedingung, um zu überprüfen, ob das Arbeitsblatt existiert, bevor du versuchst, seinen Namen zu ändern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige