Anzeige
Archiv - Navigation
920to924
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
920to924
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Spinbutton / Scrollarea

Spinbutton / Scrollarea
01.11.2007 05:06:45
Roger
Hallo Zusammen,
ich habe ein kleines Problemchen ;O)
Bei der angefügten Datei funktioniert eigentlich schon ziemlich viel!!
Ausser zwei Dinge stören mich noch:

Die Datei https://www.herber.de/bbs/user/47305.xls wurde aus Datenschutzgründen gelöscht


Ziel ist es die Scrollarea via UserForm einfach einzuschränken. Den Bereich kann ich mit Spinbutton1 verkleinern oder vergrössern.
Das es bei einer grösseren Tabelle etwas schneller, geht kann ich die Schrittweite von Spinbutton1 mit dem Spinbutton2 verändern.
Mit der gelben Farbe markiere ich den aktuell gesperrten Bereich.
Nun gibt es aber noch zwei Details die mich stören:
Ich möchte gerne das UF1 schliessen können und bei einem erneutem Aufruf sollte gleich die aktuelle Scrollarea angezeigt werden.
Da ich aber nicht weiss wie ich die aktuelle Scrollarea in Variabeln einlesen kann um den Zeilenwert mit dem Spin1 zu verändern, scheitert mein Vorhaben.
Zudem ist mir aufgefallen das die jeweils neue Schrittweite erst beim zweiten Kopfdruck übernommen wird.
Würde mich freuen wenn mir jemand etwas helfen könnte.
Gruss Roger

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
zu Frage 1
01.11.2007 08:53:00
Beverly
Hi Roger,
verwende nicht Unlod Me sondern Me.Hide beim Schließen des UserForms.
________________________________________

Nachtrag
01.11.2007 09:20:59
Josef
Hallo Roger,
und so bleibt die Einstellung auch nach dem Schliessen der Datei erhalten.
https://www.herber.de/bbs/user/47308.xls
Gruß Sepp

Anzeige
*fg* - Schnell reagiert ! Vergiss meinen Einwand
01.11.2007 09:32:01
NoNet
Hallo Sepp,
da war der Krug mal wieder schneller am Brunnen als dass er zerbrechen konnte ;-)
Damit hast Du das von mir angesprochene Problem natürlich schon "erschlagen".
Wünsche Dir einen schönen (Feier- ?)Tag, NoNet

Logischer Fehler in Deinem Code
01.11.2007 09:28:36
NoNet
Hallo Sepp,
in Deinem Code befindet sich ein logischer Fehler in dieser Zeile des SUB USERFORM_INITIALIZE :
SpinButton1 = 8 + Range(ActiveSheet.ScrollArea).Rows.Count
Wenn die Scrollarea aufgehoben wurde (Scrollarea=""), dann produziert diese Zeile einen Fehler (da Range("") nicht existiert !).
Dies ist der Fall, wenn die Datei geschlossen und wieder neu geöffnet wurde, da die Scrollarea unter Excel bekanntlich NICHT mitgespeichert wird (sie muss also im Workbook_Open neu festgelegt werden !), oder aber wenn man per UserForm die Scrollarea wieder löscht.
Gruß, NoNet
PS: Was ist eigentlich mir Rogers Originaldatei "47305.xls" passiert ?

Anzeige
:O) m.T
01.11.2007 12:13:40
Roger
Sali Nonet,
besten Dank für Deine Hilfe. Wie Du vielleicht bemerkt hast habe ich Deine Vorschläge für mein Makro voll integriert. Besten Dank.
Sali Josef,
es ist schon eine weil her, aber Du warst damals derjenige der mir meine erste Frage in diesem Forum beantwortet hat. Nun ein paar hundert Jahre später trifft man sich wieder. Mit dem unterschied das ich schon extrem viel von diesem Forum profitiert und gelernt habe. Aber es reicht halt noch nicht sehr weit.
Schön wenn man dann auf die super Hilfe von Dir zählen darf. Also ein grosses Dankeschön an Dich.
Das Makro selber funktioniert bestens. Verstehe es aber noch nicht ganz, werde das ganze heute Abend einmal intensiver anschauen.
Sali Karin,
wieder etwas dazu gelernt, das kannte ich noch nicht
Herzlichen Dank
Gruss Roger
PS: Meine original Datei hat wohl jemand geklaut ;O) , aber er hätte besser die genommen die einwandfrei funktioniert ;O)

Anzeige
hmm....
01.11.2007 23:28:34
Roger
Hallo Sepp,
eine kleine Frage habe ich noch:
Wenn ich das Makro benutze funktioniert es einwandfrei.
Es startet ja immer mit der letzten Scrollarea - Einstellung.
Wurde aber in einer Tabelle schon zuvor ein Bereich für die Scrollarea definiert, dann startet es trotzdem mit dem letzten Wert.
Kann man das ändern?
Gruss Roger

AW: hmm....
02.11.2007 16:33:32
Dieter
Hi,
versuch zunächst eine bestehenden ScrollAres auszulesen.
mfg Dieter

AW: hmm....
02.11.2007 18:55:57
Roger
Hallo Dieter,
das habe ich mir auch gedacht.....
Als erst muss überprüft werden ob bereits eine Scrollarea vorhanden ist und wenn ja dann den Bereich einlesen und wenn nicht mit dem Standardwert beginnen.
Aber ehrlich gesagt habe ich keine Ahnung wie, jedoch gebe ich nicht auf.
Vielleicht sehe ich aber vor lauter Bäumen den Wald nicht mehr.... oder?
Gruss Roger

Anzeige
AW: hmm....
02.11.2007 22:56:00
Josef
Hallo Roger,
schreib statt

ActiveSheet.ScrollArea = GetCustProp("ScrollArea", "B9:D100")


einfach


If ActiveSheet.ScrollArea = "" Then ActiveSheet.ScrollArea = GetCustProp("ScrollArea", "B9:D100" _
)


Gruß Sepp

AW: hmm....
03.11.2007 07:01:00
Roger
Hallo Sepp,
Private Function GetCustProp(propName As String, Optional propValue As Variant) As Variant
Private Function SetCustProp(propName As String, propValue As Variant)
mit den beiden Makros scheinst Du die im UF1 eingestellte Schrollarea zu speichern, so dass bei einem erneunten Aufruf die aktuellen Einstellung wieder verändert werden kann.
Dass funktioniert wunderbar.
Ich glaube ich habe das ganze etwas schwach umschrieben.
Ich rufe das UF1 aus einer bestehenden Tabelle auf. Die Tabelle hat immer unterschiedliche längen darum scanne ich den Bereich auch von Zeile 9 bis Zeile 100.
Danach generiere ich mit beginn und ende den aktuellen Bereich.
Es kann also sein das meine Tabelle bereits eine Scrollarea hat von B9:D50.
So und nun rufe ich von der Tabelle aus das UF1 auf. Nun sollte es den Bereich B9:D50 auslesen und anzeigen aber das macht es nicht weil es den Wert aus dem letzten Speicher list, oder?
Ich habe beim Spinbutton1 noch folgendes geändert:
bereich = "b9" & ":" & "d" & ende - Spin1
So stimmen auch die Pfeilrichtungen um den Bereich zu ändern. Dann jedoch wird schon beim zweiten öffnen einen falschen Bereich angezeigt.
Das ganze ist für mich schon eine rechte Knacknuss! Werde mich aber dem ganzen heute Abend noch einmal widmen. Melde mich dann noch einmal.
Gruss Roger

Anzeige
AW: hmm....
03.11.2007 10:11:34
Josef
Hallo Roger,
das kommt davon, wenn man ein Problem falsch schildert und selber nicht in der Lage ist, eine angebotene Lösung für seine Bedürfnisse anzupassen.
Beschreibe mal genau was du damit erreichen willst und in welchen Tabellen das ganze laufen soll.
Gruß Sepp

Ich bleibe am Ball
03.11.2007 20:08:00
Roger
Hallo Sepp,
nicht böse sein ;O)
An der Datei die ich ins Forum gestellt habe, konnte ich noch ganz gut nachvollziehen welcher Befehl was bewirkt. Na ja und dann ging es halt los........
Ich erkläre Dir jetzt was ich eigentlich basteln wollte.
Ich habe eine Tabelle die verschiedene Formulare generiert. Jedes Formular fängt bei B9 und
ende dann unterschiedlich aber immer in der Spalte D.
Es kann also sein, dass der Bereich B9:D100 ist.
Jedes Mal wenn ein Formular erstellt wird, ist der Bereich gleich die maximale Scrollarea und wird auch gleich so gesetzt.
Deshalb Prüfe ich dann immer die Zeile 9 bis 100 um zu wissen wie Gross das der aktuelle Bereich ist.
Jetzt kommt das UF1 zum Zuge.
Mit diesem möchte ich nun die bereits bestehende Scrollarea verändern. Beim start des UF1 wird der gesperrte Bereich gelb eingefärbt. Danach sollte die Ansicht zum Ende der Scrollarea springen.
Nun habe ich die Möglichkeit mit dem Spinbutton1 die Scrollarea zu verkleinern oder zu vergrössern.
Wichtig, beim ersten Aufruf des UF1 ist die Scrollarea immer auf den maximalen Bereich eingestellt, da ja das Formular kurz zuvor generiert wurde. Dies ist dann auch der Standardbereich. Der Bereich wird immer von Spalte B bis D gehen aber in der Zeilenanzahl wird er variieren.
Wenn ich nun das UF1 schliesse und wieder öffne brauche ich gar keinen Speicher....
Das UF1 muss nur beim öffnen, den Bereich der aktuellen Scrollarea ausfindig machen und farblich einfärben. Danach kann ich den Bereich der Scrollarea dann wieder verändern.
Alles was ich also brauche ist ein Befehl das ich die Scrollarea auslesen kann..
Also zum Beispiel B9:D90. Dann kann ich mit Spinbutton1 die 90 verändern.
Ist es nun verständlicher? Ich muss doch dass auch selber hinkriegen.
Gruss Roger

Anzeige
Ich bleibe am Ball
04.11.2007 11:51:39
Roger
Hallo Sepp,
klar habe ich Deinen Vorschlag gesehen.
Aber um das ganze zu verstehen brauche ich eben etwas länger.
Nerve mich gerade einwenig weil ich nicht auf diese Idee gekommen bin.
War eigentlich der Meinung dass ich, was VBA angeht, schon ein paar Fortschritte gemacht habe.
Das aktuelle Problem hat mich aber eben wieder auf den Boden der Realität geholt.
Dein Vorschlag funktioniert natürlich wie immer, aber ich muss prüfen ob die Detail für mich auch stimmen.
Na ja wenn ich etwas machen mache dann richtig.
Ich werde mir das ganze heute einmal ansehen.
Grus Roger

Anzeige
Bin wieder da ;O)
04.11.2007 14:45:00
Roger
Hallo Sepp,
geprüft und für gut befunden.........
Ich habe Deinen super Vorschlag eins zu eins übernommen.
Gruss und herzlichen Dank.
P.S: Fange mit einem neuen Projekt an, aber da ich noch nicht soviele Erfahrungen habe, wäre ich froh wenn Du mir vielleicht einen kleinen Tipp für den Start geben kannst. Nicht gleich das ganze Makro, sondern nur einen Tipp :O)
Gruss Roger

AW: Bin wieder da ;O)
04.11.2007 14:48:35
Josef
Hallo Roger,
worum geht's den?
Gruß Sepp

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige