Discussion:
Excel VBA - zu bestimmter Zelle springen
(zu alt für eine Antwort)
Xaver Thum
2006-11-07 15:39:37 UTC
Permalink
Hallo,

ich habe folgendes Problem: Auf meinem Tabellenblatt befindet sich ein
Button,
der beim Anklicken aus irgendwelchen Daten eine Zeilennummer i und eine
Spaltennummer j im selben Blatt berechnet.
Ich markiere dann die zugehoerige Zelle mit Cells(i,j).Select
Damit ist die Zeile zwar markiert, wandert aber nicht in den sichtbaren
Bereich.
Wenn ich so z.B. die Zelle (Zeile 1000, Spalte 10) markiere, muss ich per
Scrollbalken
dahin scrollen. Gibt es eine Moeglichkeit per Makro die markierte Zeile in
den
sichtbaren Blattbereich zu kriegen ?

Vielen Dank fuer Euere Hilfe,

Xaver Thum
Robert Gelbmann
2006-11-07 16:19:22 UTC
Permalink
Hallo Xaver!
Post by Xaver Thum
Ich markiere dann die zugehoerige Zelle mit Cells(i,j).Select
Damit ist die Zeile zwar markiert, wandert aber nicht in den
sichtbaren Bereich.
Wenn ich so z.B. die Zelle (Zeile 1000, Spalte 10) markiere, muss ich
per Scrollbalken
dahin scrollen. Gibt es eine Moeglichkeit per Makro die markierte
Zeile in den
sichtbaren Blattbereich zu kriegen ?
'---snip---
ActiveWindow.ScrollRow = i
ActiveWindow.ScrollColumn = j
'---snip---

Die beiden Anweisungen steuern die linke, obere Zelle des
Scrollbereiches.
Evtl. möchtest du daher von den beiden Variablen noch eine bestimmte
Anzahl von Zeilen/Spalten abziehen, damit diese etwas zentrierter am
Bildschirm zu sehen sind.
--
In der Hoffnung geholfen zu haben, verbleibe ich mit einem leisen


Servus aus Wien,
-Robert Gelbmann-
---
LS: "The world is quiet here."
Herbert Taferner
2006-11-07 16:23:56 UTC
Permalink
Hallo Xaver,

als Beispiel,
wenn die markierte Zelle nicht im sichtbaren Bereich des Fensters ist,
wir das Fenster so gescrollt bis diese Zelle die erste Zelle links oben ist
dies kannst du eventuell noch anpassen

'----------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim a As Long, b As Long
Dim c As Long, d As Long
Dim Bereich As String

Application.ScreenUpdating = False
With ActiveWindow
a = .ScrollRow
b = .ScrollColumn
.LargeScroll down:=1
.LargeScroll toRight:=1
c = .ScrollRow
d = .ScrollColumn
.LargeScroll up:=1
.LargeScroll toLeft:=1
Bereich = Range(Cells(a, b), _
Cells(c - 1, d - 1)).Address
If Intersect(Range(Bereich), _
Target) Is Nothing Then
.ScrollRow = ActiveCell.Row
.ScrollColumn = ActiveCell.Column
End If
End With
Application.ScreenUpdating = True
End Sub
'-------------------

mfg Herbert
Thomas Ramel
2006-11-07 16:50:34 UTC
Permalink
Grüezi Xaver

Xaver Thum schrieb am 07.11.2006
Auf meinem Tabellenblatt befindet sich ein Button, der beim Anklicken aus
irgendwelchen Daten eine Zeilennummer i und eine Spaltennummer j im
selben Blatt berechnet.
Ich markiere dann die zugehoerige Zelle mit Cells(i,j).Select
Damit ist die Zeile zwar markiert, wandert aber nicht
in den sichtbaren Bereich. Wenn ich so z.B. die Zelle (Zeile 1000,
Spalte 10) markiere, muss ich per Scrollbalken dahin scrollen. Gibt es
eine Moeglichkeit per Makro die markierte Zeile in den sichtbaren
Blattbereich zu kriegen ?
Hmmm, prinzipiell müsste die Zelle eigentlich hinscrollen . bei mir
jedenfalls tut sie es.

Aber teste doch mal die folgende Zeile; vielleicht kommt das Ergebnis
deinen Wünschen näher:

Application.Goto Cells(i, j), True



Mit freundlichen Grüssen
Thomas Ramel (@work)
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-1]
Microsoft Excel - Die ExpertenTipps tinyurl.com/cmned
Loading...