Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ScrollBar
BildScreenshot zu ScrollBar ScrollBar-Seite mit Beispielarbeitsmappe aufrufen

Scrollen begrenzen ein-/ausschalten | Herbers Excel-Forum


Betrifft: Scrollen begrenzen ein-/ausschalten von: Jörg-HH
Geschrieben am: 14.08.2012 13:34:31

Hallo zusammen

zuum Thema "Scrollen begrenzen" gibt es ja diverse Threads. Überall wird darüber geredet, daß man das beim Öffnen der Datei oder bei SheetActivate einschalten muß.

Mein Problem: Es solll mitten im Code geschehen.

- Es wird zu Eingabezwecken ein zweites Fenster geöffnet und geteilt.

- Im rechten Teil sollen Eingaben gemacht werden. In diesem Teil soll der Scrollbereich begrenzt werden. Nach den Eingaben soll die Begrenzung aufgehoben werden. Dann wird das Fenster geschlossen.

- Der gleiche Vorgang wiederholt sich mit anderen Bereichen.

Ich dachte mir das so... aber da kommt die Meldung "unterstützt nicht usw..."

ws.Range("A1").Select
ActiveWindow.Panes(2).ScrollColumn = rngEingabe.Column
ActiveWindow.Panes(2).ScrollRow = rngEingabe.Row

ActiveWindow.Panes(2).ScrollArea = "FW555:FY575"

Wie kann ich das hinkriegen?

Grüße - Jörg

  

Betrifft: AW: Scrollen begrenzen ein-/ausschalten von: {Boris}
Geschrieben am: 14.08.2012 16:26:09

Hi Jörg,

kannst Du mal ne Mappe mit dem Code hochladen, der die Fenster teilt? Dann sag, was wo eingegeben werden soll / muss und woran man erkennt, dass die Eingabe fertig ist, um die Teilung wieder aufzuheben.

VG, Boris


  

Betrifft: AW: Scrollen begrenzen ein-/ausschalten von: {Boris}
Geschrieben am: 14.08.2012 16:26:11

Hi Jörg,

kannst Du mal ne Mappe mit dem Code hochladen, der die Fenster teilt? Dann sag, was wo eingegeben werden soll / muss und woran man erkennt, dass die Eingabe fertig ist, um die Teilung wieder aufzuheben.

VG, Boris


  

Betrifft: AW: Scrollen begrenzen ein-/ausschalten von: Jörg-HH
Geschrieben am: 14.08.2012 16:54:51

Hi Boris

Mappe hochladen geht nicht , aber Code schon...

Der Code wird von einer Klick-Prozedur gerufen und ist nach der MsgBox erstmal fertig. Dann macht der User seine Eingaben. Ist er damit fertig, klickt er OK. Damit wird das Fenster wieder geschlossen, und das wäre auch der Moment, in dem die Scrollbegrenzung wieder aufgehoben werden müßte.

Jörg

Sub a0_EingabebereichRufen(ByRef target As Range, ByRef wsconfig As Worksheet, ByRef ws As  _
Worksheet, _
                      ByRef strSpalte As String, ByRef rngEingabe As Range, ByRef strProdTeil  _
As String)

ActiveWindow.WindowState = xlMinimized
ActiveWindow.NewWindow
ws.Activate

ActiveWindow.Panes(1).ScrollColumn = ws.Range(wsconfig.Range("BL147").Value).Cells(1, 1).Column
ActiveWindow.Panes(1).ScrollRow = ws.Range(wsconfig.Range("BL147").Value).Cells(1, 1).Row

ActiveWindow.WindowState = xlNormal
With ActiveWindow
  .Top = 20
  .Left = 10

  .DisplayHeadings = False
  .DisplayWorkbookTabs = False
  .DisplayVerticalScrollBar = False

  .ZOOM = 100
  .Height = 280
  .SplitColumn = 2
  .Panes(2).Activate

  If Range(wsconfig.Range("BL147").Value).Width + Range(wsconfig.Range(strSpalte & "147").Value) _
.Width < 800 Then
    .Width = Range(wsconfig.Range("BL147").Value).Width + Range(wsconfig.Range(strSpalte & "147" _
).Value).Width + 20
  .DisplayHorizontalScrollBar = False
  Else
    .Width = Application.UsableWidth - 40 
  .DisplayHorizontalScrollBar = True
  End If
  
  .Left = (Application.Width - ActiveWindow.Width) / 2
End With

ws.Range("A1").Select
ActiveWindow.Panes(2).ScrollColumn = rngEingabe.Column
ActiveWindow.Panes(2).ScrollRow = rngEingabe.Row

ActiveWindow.Panes(2).ScrollArea = "FW555:FY575"

'Hinweis, daß jetzt der Eingabebereich für den gerade bearbeiteten Produktteil gerufen wird
MsgBox (Worksheets("Formular").Range(wsconfig.Range("BL4").Value) & strProdTeil & ".   " & vbLf  _
& _
        Worksheets("Formular").Range(wsconfig.Range("BL5").Value)), , ""

End Sub



  

Betrifft: AW: Scrollen begrenzen ein-/ausschalten von: fcs
Geschrieben am: 15.08.2012 09:42:42

Hallo Jörg,

die ScrollArea ist eine Eigenschaft des Tabellenblatts - nicht der Windowpanes. Du musst also das entsprechende Tabellenblatt als Objekt angegeben.
Ob dan dein Makro noch so funktioniert, wie du dir das vorstellst: ??????

Leider hat Microsoft es geschafft, die ScrollArea als Eigenschaft des Worksheet-Objekts festzulegen.
Im Gegensatz zu alen anderen Eigenschaften rund um das Scrollen (FensterFixieren, Scrollen,Fenster-Teilen).
Ist wahrscheinlich ein Relikt aus der Vor-Multifenster-Periode von Excel oder der DOS-Periode.

Ein 2. potentieller Problempunkt sind die Range (blau markiert) ohne vorangestelltes Worksheet-Objekt.
Im Moment wird hier auf das Worksheet zugegriffen, das im Moment der Ausführung das aktive Blatt ist.

Gruß
Franz



  

Betrifft: AW: Scrollen begrenzen ein-/ausschalten von: Jörg-HH
Geschrieben am: 15.08.2012 09:53:38

Hi Franz
dann müßte ich bei blau wohl noch einen Punkt setzen...? Ist bisher nicht aufgefallen, weil unmittelbar davor das 2. Fenster geöffnet wurde und insofern "noch" das aktive war.

Wenn ich dich richtig verstanden habe, müßte ich statt ActiveWindow.Panes(2).ScrollArea = "FW555:FY575"
schreiben ws.ScrollArea = "FW555:FY575", oder ?

ws wird ja durchgereicht, und daß in dem Moment die scrollarea für das ganze Blatt gilt, stört in dem Moment nicht. Werd's heut Nachmittag mal probieren... muß jetzt erstmal wech...

Grüße - Jörg


  

Betrifft: AW: Scrollen begrenzen ein-/ausschalten von: fcs
Geschrieben am: 15.08.2012 11:38:44

Hallo Jörg,

wenn ScrollArea für ein Tabellenblatt gesetzt wird, dann können per TAB, ENTER und/oder Pfeiltasten auch nur noch Zellen in diesem Bereich angesteuert werden, bei geschütztem Blatt nur die ncht gesperrten Zellen innerhalb der ScrollArea.


dann müßte ich bei blau wohl noch einen Punkt setzen...?
Wenn das aktive Tabellenblatt immer das richtige ist, dann brauchst du nichts zu ändern.
Wenn wie in deinem Code mehrere Tabellenblätter involviert sind, dann sollte bei den Range-/Cells-Objekten möglichst immer mit der vollständigen Objekt-Kennzeichnung gearbeitet werden. Der Code liest sich dann einfacher.
Füge hier also ggf. "ws." vor "Range" ein. Nur Punkt ist hier falsch, da das zugehörige With-Objekt "ActiveWindow" ist und kein Worksheet-Objekt.

Gruß
Franz


  

Betrifft: ok, Franz - danke! oT von: Jörg-hh
Geschrieben am: 15.08.2012 11:42:51




  

Betrifft: Scrollen begrenzen Zusatzproblem von: Jörg-HH
Geschrieben am: 15.08.2012 09:44:04

...und dann fiel mir zufällig noch was auf, woran ich gar nicht gedacht hatte:

In dem ganzen (geschützten) Blatt gibt es überwiegend gesperrte Zellen, nur die Eingabezellen sind nicht gesperrt. Einige von denen befinden sich aber hinter dem Rand des zweiten Fensters.

Es soll also nicht nur das scrollen in diesem zweiten Fenster (rechtes Pane) verhindert sein, sondern auch das Hüpfen von einer ungeschützten Zelle zur nächsten, sofern sie sich außerhalb des Fensters befindet.

:-(


Beiträge aus den Excel-Beispielen zum Thema "Scrollen begrenzen ein-/ausschalten"