Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
248to252
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
248to252
248to252
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ScrollColumn funktioniert nicht

ScrollColumn funktioniert nicht
27.04.2003 10:11:49
Michael_E
Hi Excel Spezis
Steh mal wieder auf dem Schlauch :-((
Warum funktioniert der Code nicht

Excel soll 3000 rows nach unten und 1 Column nach rechts
diese Celle soll aktiviert werden damit das weitere PRG funktioniert
in diesen bestimmten Fall soll exel von Row 1051, column 19
nach 4051, column 20 springen
die srollarea soll row 4051, col 20:row 4075,colmn 26 sein
zur Zeit bezieht er sich nur auf eine Zeile( warum??)
und Zelle 4052,20 soll aktiviert sein.

Hoffentlich hab ich mich verständlich ausgedrückt

kann mir einer weiterhelfen. hat einer einen Tip

Danke im vorraus

gruß Michael

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

Betreff
Datum
Anwender
Anzeige
Re:
27.04.2003 11:19:22
Ramses

Hallo Michael,

da stimmt einiges nicht.

1.)
Grundsätzlich solltest du dir angewöhnen mit

Option Explicit

in der ersten Zeile deines Codes zu arbeiten.
Dann würde dir auffallen dass "ScrollArea = "" " lediglich als normale Variable angesprochen wird, aber nicht dass die Area aufgehoben wird.

2.
Abhängig davon wo du den Code auslöst ist er nicht lauffähig.
Wenn du den Code in Spalte B auslöst, kommt ein Laufzeitfehler weil bei "ActiveCell.Offset(3000, -3)" die "-3" auf die Spalte 0 verweist die nicht existiert.

3.
Du wählst bereits eine Zelle 3000 Zeilen tiefer aus, und definierst dann eine ScrollArea "..(ActiveCell.Row + 3000.."
Da ist bestimmt nicht nur eine Zeile aktiv ;-)

4.
In Zeile 4 wählst du eine Zelle "Cells(ActiveCell.Offset(3000, -3).Range("A1")).Select" 3000 zeilen tiefer aus, in der viertletzen Zeile "ActiveCell.Offset(3000, 1).Select" nochmals. Du bist jetzt eigentlich 6000 zeilen tiefer.

5.
Warum adressierst du die Zelle nicht direkt sondern über diese riesigen Offset-Umwege.
Du weisst genau, wohin du springen musst "...damit das weitere PRG funktioniert...", dann kannst du die Zeile auch direkt adressieren und es ist wesentich einfacher.

Gruss Rainer

Anzeige
Re:
27.04.2003 12:06:16
Michael_E

Hi Rainer
Zuerst mal: Danke für die ausführliche Antwort
versuche deine Punkte durchzugehen
zu Punkt 1)
Option Explicit ist deklariert
Mit der scrollArea: Hats recht, war ein Fehler von mir
hat ich übersehen.

zu Punkt 2)
Die kleinste Spalte ist 19, das hatte ich berücksichtigt
aber er nimmt trotzdem das select nicht an :-(((
Laufzeitfehler 1004

zu Punkt 3)
hatte so viel rumprobiert da hat ich schon den Überblick verloren. hab jetzt nach unten getan.

zu Punkt 4)
nimmt aber zu Zeit die SrollArea( "U1001:Z4026")an.

zu Punkt 5)
Das Makro soll für ca. 700 verschieden Zellen sein und ich möchte nicht 700 Makros schreiben :-)))
Bei dem Beispiel hatte ich die genauen Zelle angegeben damit man es ein bißchen verstehen kann was ich erreichen wollte.

Die 2 Probleme die bleiben ist mit dem select der Zelle bei 4051
und dem SrollArea.
weiß zur Zeit nicht warum er auf U1001:Z4026 springt?

nochmals den geänderten Code.


würde mich sehr freuen wenn du mir nochein bißchen helfen könntest

Gruß Michael

Anzeige
Re:
27.04.2003 12:47:17
Ramses

Hallo Michael,

ich denke du hast in deinem Makro ein strategischen Denkfehler:
Angenommen deine aktive Zeile = 15
Die Kleinste Spalte = 19

Zelle = Cells(15,19) .... OK ?!

Cells(ActiveCell.Row + 3000, ActiveCell.Column + 1).Value = ActiveCell.Offset(0, -2).Text
Damit schreibst den Wert zwei Zellen links von der aktiven Zelle
in eine Zelle 3000 Zeilen tiefer und ein Spalte rechts davon


ActiveWindow.ScrollColumn = (ActiveCell.Column + 1)
Damit scrollst du eine Spoalte nach rechts


ActiveWindow.ScrollRow = (ActiveCell.Row + 3000)
Damit scrollst du 3000 Zeilen tiefer

ActiveSheet.ScrollArea = Range(Cells(ActiveCell.Row + 3000, ActiveCell.Column + 1), Cells(ActiveCell.Row - 25, ActiveCell.Column + 6)).Address

Hier ist vermutlich dein Fehler:
Die aktive Zelle ist immer noch Cells(15,19) !!!
Davon ausgehend weisst du die Scroll Area zu (ActiveCell.Row + 3000) und zusätzlich (ActiveCell.Row - 25,.
Wenn deine Zelle aber, wie im Beispiel, in Zeile 19 ist hast du ein Problem: 19 - 25 = -5 !!!

Cells(ActiveCell.Offset(3000, -3).Range("A1")).Select
Dürfte nix bringen, weil die Zelle ausserhalb deiner Scrollarea liegt

Sollte ich was nicht verstanden haben .... ;-)

Gruss Rainer

Anzeige
DANKE hab es endlich geschafft
27.04.2003 13:28:27
Michael_E

Hi Rainer!
Danke für deine Ausführungen.
Jetzt hattest du ein paar Gedankenfehler :-)
In dem 1. Tread hatte ich geschrieben das ich auf Zeile 1051 bin
das mit dem 3000 tiefer war so gewollt. Das Makro wird durch ein SelektionChange Ereignis ausgelöst was bei ca. 700 Zellen passiert. Und in dem ScrollArea bereich stehen Daten drin die
zu Verfügung stehen.
Du hast Recht ein Paar Ungereimheiten waren noch drin.
konnte sie erst lösen wie es mit der Selection geklappt hatte.

Nochmal DANKE für die MÜHE und die Zeit die du mir geopfert hast.
Einige Dinge hätte ich sonst nicht bemerk.

Hab es endlich geschafft!!!
Nachfolgender Code funktioniert.


fallst du noch einen Fehler finden solltest lass es mich wissen.

Gruß Michael

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige