Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
244to248
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
244to248
244to248
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Korrektes Change-Ereignis

Korrektes Change-Ereignis
20.04.2003 11:50:51
Björn
Huhu zusammen,

kann mir jemand sagen, wie ich per VBA sauber die Auswahl einer Zelle nach Eingabe in einer anderen auslösen kann.
Ich weiß, daß es etwa so möglich ist:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Row = 48 And Target.Column = 10 Then
ActiveSheet.Cells(48, 18).Select
End If
End Sub

Das scheint mir aber kein ganz sauberer VBA-Code zu sein. Kann mir jemand sagen, weshalb etwa:

Sub Auswählen()
If Target.Address = Range("J48") Then
ActiveSheet.Cells(48, 18).Select
End If
End Sub

nicht funktioniert??? Irgendeine Möglichkeit muß es doch geben, die Celle direkt anzuprechen anstatt über Row = x and Column = y ! - ?

Danke!

Viele Grüße

Björn


4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Korrektes Change-Ereignis
20.04.2003 12:03:15
Ramses

Hallo Björn,

die erste Variante ist der sauberste VBA-Code :-))

Zu deinem Problem:

Die Rückgabe des "Target" - Objectes existiert nur in in den Klassenmodulen der Tabelle oder des Workbooks.
Deshalb kannst du es in einem normalen Makro nicht verwenden.

Dein Vergleich kann darüber hinaus funktionieren, weil die Rückgabe

Target.Address

als Ergebnis, in deinem Beispiel $J$48 zurückliefert. Der Vergleich müsste also lauten

If Target.Address = "$J$48" Then

Ausserdem kannst du eine Zelle direkt ansprechen:

Range("J48").Select

führt zum gleichen Ergebnis.

Gruss Rainer

Anzeige
Re: Korrektes Change-Ereignis
20.04.2003 12:15:20
Björn

Huhu Ramses,

Hallo Björn,
die erste Variante ist der sauberste VBA-Code :-))

ausnahmsweise mal auf Anhieb getroffen scheinbar :-)

Zu deinem Problem:

Die Rückgabe des "Target" - Objectes existiert nur in in den Klassenmodulen der Tabelle oder des Workbooks.
Deshalb kannst du es in einem normalen Makro nicht verwenden.

Ich habe es in einem wks.

Dein Vergleich kann darüber hinaus funktionieren, weil die Rückgabe

Target.Address

als Ergebnis, in deinem Beispiel $J$48 zurückliefert. Der Vergleich müsste also lauten

If Target.Address = "$J$48" Then

Ja, genau genommen sogar wegen verbundener Zellen: "$J$48:$L$48" :-(

(...)

Wie könnte ich denn nun auf rationelle Weise folgende Wirkung erreichen:

Bei Änderung der Zellen in der Spalte 10, aber nur im Bereich der Zeilen 48 bis 69 gehe jeweils zur Spalte 18 in der gleichen Zeile?

Natürlich könnte man jetzt für jedes Change-Ereignis eine eigene Prämisse definieren. Das ist aber nicht gerade besonders rationell. Spätestens wenn jemand ein Paar 100 Zeilen hätte, wäre es ein Problem. Kommt man da mit Intersect weiter? *grübel*

Vielen Dank!

Viele Grüße

Björn


Anzeige
Re: Korrektes Change-Ereignis
20.04.2003 12:47:31
Ramses

Hallo Björn,

mal so geschüttelt, nicht gerührt ( heisst nicht getestet )

If Target.Column = 10 And Target.Row > 47 Or Target.Row < 70 Then
Cells(target.row,18).Select
End If

Gruss Rainer


Re: Korrektes Change-Ereignis
20.04.2003 13:03:11
Björn

Huhu Ramses,

Klasse :-) Dankeschön! Klappt bestens. Lediglich aus dem Or habe ich für meinen Zweck noch ein And gemacht.

Viele Grüße und noch einen wunderschönen Tag!

Björn

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige