VBA Target.Cell - Verständnisfrage

Mahlzeit,

bei meinen weiteren Basteleien habe ich heute mit Target.Cells(n,m) bei dem Worksheet_SelectionChange hantiert.
Und da verstehe ich Target.Cells nicht bzw. hoffe das sich das richtig interpretiere.


Also:
Wenn ich in Spalte 5 bin und von dem markierten Feld 1 nach unten ziehe und die Felder auffülle soll der in Target.Cells(Zeile,2).Value = "irgendwas sein.

Spalte = 5, Zeile = 3
Nach unten gezogen auf Spalte =5, Zeile =4 dann wird in Spalte 6 des Tabellenblatts ein Wert eingetragen.

Ist also Target.Cells(1,1) die aktuelle Zelle, also Cells(3,5) und dann Target.Cells(1,2) die Zelle daneben Cells(3,6), ähnlich wie bei der Offset-Funktion.

Das verwirrt mich ein bissel. Stehe ich nämlich in Zelle (3,5) also "Spalte E" und möchte etwas in "Spalte H" einfügen lassen, dann wäre "Cells nicht 3,8", sondern Target.Cells(1,3), also gleiche Zeile 1 und 3 Spalten weiter rechts?

Ist die Denkweise richtig?

Content-Key: 569493

Url: https://administrator.de/contentid/569493

Ausgedruckt am: 24.01.2022 um 17:01 Uhr

Mitglied: emeriks
emeriks 04.05.2020, aktualisiert am 05.05.2020 um 09:46:24 Uhr
Goto Top
Hi,
ich verstehe jetzt Dein Problem nicht. Bei dieser Funktion sind Selection und Target identisch.
Wenn Du von E3 nach E4 "mit dem Kreuz ziehst", dann sind Selection und Target $E$3:$E$4. Target.Row ist dann aber immer noch 3, weil Target ein Bereich ist und in einem ausgewählten Bereich immer eine Zelle den Fokus hat. Target.Column und Target.Row beziehen sich also auf die Zelle mit dem Focus, also jene, welche "mit dem Kreuz gezogen" wurde.

E.
Mitglied: Aximand
Aximand 06.05.2020 um 10:48:32 Uhr
Goto Top
Ich versuch es mal anders zu erklären:


Ich bin in Spalte 5 und Zeile 5, also $E$5 und trage dort "Sascha" ein und ziehe den Bereich nach $E$8 runter. Somit füllt sich jede markeirte Zelle in Spalte B mit "Sascha"
Gleichzeitig greift "Wenn in Spalte 5 dann" schreibe in Zeile 1 bis Anzahl selektierter Zeilen (also hier im Bild 1 to 4) in Target.Cells(Zeile,3) den Wert "Wert" & Zeile. Wobei Zeile 1 dann natürlich die richtige Zeile 5 im Tabellenblatt wäre, weil das die erste markierte Zeile ist.

tabellenauszug

Das Ergebnis daraus ist, dass in Spalte B "Sascha" steht und in Spalte G "Wert1 - Wert4"

Daher die Frage nach dem Target.Cells. Ist Target.Cells(1,1) dann im Tabellenblatt Zeile5, SpalteE, (1,2) Zeile5, SpalteF, (1,3) Zeile5, SpalteG und (2,2) Zeile6, SpalteF? Würde ich Spalte B mit einem Target.Cells(1,-2) ansprechen, weil (1,0) = Spalte D und (1,-1) = Spalte C

So stellt sich mir das nämlich da.

Eigentlich will ich nur erreichen, dass wenn ich in Spalte B herunterziehe und die Werte auffülle in Spalte G in der jeweiligen Zeile etwas passiert.
Zum Beispiel, dass ein Wert aus einem Feld AC dergleichen Zeile die ersten 8 Ziffern abgeschnitten und in G eingetragen werden.
Wie würde ich dann auf den Wert in Spalte AC zugreifen.

Wenn das, was gerade vielleicht komisch läuft, aus einem reinem Zufall heraus funktioniert, dann würde ich mich über einen richtigen Lösungsansatz freuen, auf den ich dann weiter aufbauen kann.


Danke :) face-smile
Mitglied: emeriks
emeriks 06.05.2020 um 11:51:32 Uhr
Goto Top
Zum einen:
Spalte E oder B? "Sascha" steht im Screenshot in E.

Wenn Du eine Zelle innerhalb der Spalte mit dem + ziehst, dann hat "Target" nur eine Range von 1 Spalte. Wenn Du dann aber die Range mit Spalte 3 ansprichst, dann macht er einen Offset, ja, falls Du das meinst. Und weil das 1-basiert ist, ist also innerhalb der Range Spalte 3 zwei Spalten daneben.

Aber Du erreichst damit keine Reaktion auf "Wert mit dem + runterziehen" sondern einfach nur eine Reaktion auf die Auswahl einer Zelle in der Spalte E.
Ich vermute, Du willst eher auf die Änderung eines Zellwerts reagieren. Dabei ist es ja dann egal, ob der Wert manuell oder programmatisch hineingeschrieben oder kopiert wird, z.B. durch "mit + ziehen". Und da frage ich mich, warum Du das dann nicht über das Event abfängst, was Du in einer Deiner letzten Fragen schon benutzt hast:
https://administrator.de/forum/excel-worksheet-change-wert%C3%A4nderung- ...
Worksheet_Change

Übrigens:
Antwortest Du auch mal auf die Kommentare in diesen anderen Fragen und/oder schließt diese auch?
Mitglied: Aximand
Aximand 06.05.2020 um 12:15:50 Uhr
Goto Top
Danke für die fixe Rückmeldung,

ich versuche die Anfragen zu schließen, wenn ich das ausführlich getestet und vor allem auch kapiert habe :) face-smile Das ist leider nicht immer gegeben und der Zeitversatz ist immens. VBA mache ich nicht hauptberuflich (dann wäre ich auch grottenschlecht) und muss immer das lösen, was mir gerade auf den Tisch gelegt wird. Von daher kann mal eine Woche ins Land ziehen bis ich mich wieder dem Thema widme. Trotzdem danke für den Hinweis - da werd ich zukünftig drauf achten.

Zum eigentlichen Thema zurück:

In der anderen Anfrage, die du ansprichst ging es darum, dass ich nur eine einzige Zelle ändere und sich dann was ergibt. Das Target als Range mit nur einer Zelle war da irgendwie 'leichter' zu verstehen und zu händeln.
Mir war bis zu dem Zeitpunkt nicht klar, dass ich dich das "mit + ziehen" auch darin abarbeiten lassen kann. Ich hatte das so verstanden, dass das nur über SelectionChange geht, weil erst dadurch bekannt ist, dass es neue Werte in neuen Zeilen gibt.

Vielleicht denke ich auch einfach zu kompliziert oder eher generell falsch.
Mitglied: Aximand
Aximand 06.05.2020 um 13:07:04 Uhr
Goto Top
Jetzt nochmal bezüglich Worksheet_Change:

Vielleicht stell ich mich dumm an aber darin bekomme ich das nicht abgebildet was mit Worksheet_SelectionChange funktioniert:

tabellenauszug

Ich nehme Spalte AA den Wert 300, der zur Folge hat, dass Spalte BT mit "K" gefüllt wird und ziehe runter - BT füllt sich dann nicht. Einzeln geht das. Dazu der Code aus Worksheet_Change:

hm - ich teste weiter
Mitglied: 143728
Lösung 143728 06.05.2020 aktualisiert um 13:33:59 Uhr
Goto Top
Papperlapapp, hättest du Code (Link s unten) den ich hier gepostet habe genommen wäre das schon damit alles abgefackelt und berücksichtigt, du durchläufst zwar jede Zeile aber in der Foreach Schleife sprichst aber nämlich immer Target falsch an, denn das ist ein Range-Objekt, das eben bei einem Event-Trigger aus mehreren Areas und Zellen bestehen kann, du aber sprichst immer nur die gleiche Zelle mit Target.Value an!: Also z.B. SO
Guck es dir hier ab
https://administrator.de/forum/excel-worksheet-change-wert%C3%A4nderung- ...
Mitglied: emeriks
emeriks 06.05.2020 um 13:29:25 Uhr
Goto Top
Mal am Rande: Schau Dir mal "Select Case" an. Damit kann man solche Abfragen übersichtlicher gestalten, z.B.
Wobei "Target.Value" hier schon ungut gewählt ist. Du meinst sicher "Target.Cells(1,1).Value".
Mitglied: emeriks
emeriks 06.05.2020 aktualisiert um 14:21:05 Uhr
Goto Top
Zitat von @Aximand:
Mir war bis zu dem Zeitpunkt nicht klar, dass ich dich das "mit + ziehen" auch darin abarbeiten lassen kann.
Ich habe das mal getestet. Das Ausfüllen über "+ ziehen" löst tatsächlich kein Worksheet_Change aus.
Aber über das SelectionChange ist auch keine Lösung, weil das ja auch dann schon eintritt, wenn Du nur in die Zelle klickst.
Mitglied: 143728
Lösung 143728 06.05.2020 aktualisiert um 14:16:51 Uhr
Goto Top
Zitat von @emeriks:
Ich habe das mal getestet. Das Ausfüllen über "+ ziehen" löst tatsächlich kein Worksheet_Change aus.
Doch das tut es einwandfrei, hier nochmal mehrfach getestet (Office 2010-2019)!
Damit werden auch alle Zellen entsprechend berücksichtigt:
https://administrator.de/forum/excel-worksheet-change-wert%C3%A4nderung- ...

Screencast / Drag Event
Mitglied: emeriks
Lösung emeriks 06.05.2020 um 14:20:20 Uhr
Goto Top
Zitat von @143728:
Doch das tut es einwandfrei, hier nochmal mehrfach getestet (Office 2010-2019)!
Ja, hast recht. Keine Ahnung, was ich da getestet habe ...
Mitglied: Aximand
Aximand 07.05.2020 um 08:03:08 Uhr
Goto Top
Danke für die produktive und lebhafte Diskussion sowie die Anleitungen und Beispiele. Ich werde das testen und schließe die Frag erst einmal :) face-smile
Mitglied: Aximand
Aximand 07.05.2020 um 08:09:06 Uhr
Goto Top
Ähm ja, stimmt. Tut ganz gut nochmal mit Abstand drüber zu schielen.
Auch target.Offset ist falsch, da das dann (zeile,45) heissen müsste.

Danke!
Heiß diskutierte Beiträge
question
Ist diese Hardware sinnvoll für privaten Haushalt?stonevVor 1 TagFrageRouter & Routing5 Kommentare

Hallo erstmal :) Meine alte Fritzbox 7490 spinnt seit gestern. Ich gehe von Alterschwäche aus, es wird also Ersatz fällig. Zufrieden war ich mit ihr ...

question
LTO-5 Bänder Löschen geht nichtkreuzbergerVor 1 TagFrageBackup23 Kommentare

Hallo ihr Helden, ich hab da ein blödes Problem: Ich habe einen Stapel gebrauchte LTO-5-Bänder bekommen, die soweit völlig i. O. sind. Mit welchem Programm ...

question
Teilenummer für weiße Esprimo Mini-PC?LochkartenstanzerVor 1 TagFrageHardware21 Kommentare

Moin, Ich habe eine eigenwillige Kundin, die einen weißen Fujitsu Esprimo Mini-PC haben will. Und der Kundin ist, wie sollte es anders sein, die Farbe ...

question
Ein Smartphone für privat und geschäftliche NutzungNebellichtVor 1 TagFragePeripheriegeräte5 Kommentare

Hallo, für die Firma werden aktuell Smartphone(s) gesucht, die da eine Dual Sim ermöglichen und zusätzlich trennende Sicherheit, d.h. ein Trennen von privaten Daten und ...

question
Tipp für Firewall mit mehreren DHCP-Instanzen für VLAN gesucht gelöst Holly484Vor 22 StundenFrageFirewall5 Kommentare

Hallo zusammen, hatte in einer Gemeinschaftspraxis bisher tolle Erfahrungen mit Netgear über die letzten vielen Jahre gesammelt. Jetzt ist Netgear aus dem Firewall-Business ausgestiegen. Bisher ...

question
Suche nach "Beschreibung"ThabeusVor 1 TagFrageVmware11 Kommentare

Moin, ich stehe gerade auf dem Schlauch bei der Suche nach einer Anleitung. Vielleicht kann mir jemand helfen die "Begrifflichkeit" zu finden. In meinem Netzwerk ...

question
User verschickt mit kryptischer Outlook.com Adresse aus on-prem Exchange 2016LauneBaerVor 1 TagFrageExchange Server10 Kommentare

Servus in die Runde, ich habe ein für mich nicht nachvollziehbares Problem bei einem User, das heute zum 2ten mal aufgetreten ist. Und zwar verschickte ...

question
Windows Admin Center - Zugriff verweigertsaschakpVor 1 TagFrageWindows Update3 Kommentare

Hallo ich habe das Windows Admin Center Installiert, leider bekomme ich beim öffnen die Meldung: Zugriff verweigert Sie sind leider nicht zum Senden dieser Anforderung ...