Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1372to1376
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
Inhaltsverzeichnis

Makro zum ein- und entfrieren

Makro zum ein- und entfrieren
06.08.2014 09:42:37
Thms
Hallo Forum,
ich habe ein sehr "breites" Tabellenblatt und es wäre aufgrund des Inhalts sehr praktisch, wenn beim Öffnen von diesem Blatt, ab Zeile und Spalte F10 "eingefroren" wird, so dass deren Inhalte beim scrolen sichtbar bleiben. Sobald aber nach "rechts" über die Spalte "AP" hinaus gescrolt wird, hätte ich gerne, dass die "Einfrierung" aufgehoben wird. Kann man hierfür ein Makro ohne großen Aufwand machen? Ich habe leider keine Kenntnisse in VBA.
LG
Thomas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Edit: Makro zum ein- und entfrieren
06.08.2014 10:29:09
Thms
Wenn möglich, sollte im Anschluss dann ab Spalte CT und Zeile 11 fixiert werden

AW: Edit: Makro zum ein- und entfrieren
06.08.2014 11:03:51
Rudi
Hallo,
reines Scrollen löst kein Ereignis aus.
Gruß
Rudi

AW: Edit: Makro zum ein- und entfrieren
06.08.2014 11:12:47
Thms
Hi Rudi,
verstehe. Eine Möglichkeit wäre ja dann, dass man eine Zelle "klickt/aktiviert" die das Makro dann ausführt?
LG

AW: Edit: Makro zum ein- und entfrieren
06.08.2014 11:24:05
Robert
Hallo,
in den Code des Tabellenblatts:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Zelle As Range
If Target.Column > 43 Then
ActiveWindow.FreezePanes = False
Target.Select
Else
Set Zelle = Target
ActiveSheet.Cells(10, 6).Select
ActiveWindow.FreezePanes = True
Zelle.Select
End If
End Sub

Anzeige
AW: Edit: Makro zum ein- und entfrieren
06.08.2014 11:41:42
Rudi
Hallo Robert,
die Select rufen aber wieder Worksheet_SelectionChange auf!!!
Gruß
Rudi

AW: Edit: Makro zum ein- und entfrieren
06.08.2014 11:42:28
Thms
Hi Robert,
danke für Deine Mühe! Wenn ich das tue, stürzt mein Excel aber leider ab, sobald ich in eine Zelle klicke. Woran könnte das liegen? (Habe einige Spalten auch ausgeblendet, hängt es damit evtl. zusammen?)

AW: Edit: Makro zum ein- und entfrieren
06.08.2014 11:49:33
Robert
Danke Für den Hinweis Rudi, die endlosschleife hab ich übersehen.
Fixed:

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
Dim Zelle As Range
If Target.Column > 43 Then
ActiveWindow.FreezePanes = False
Target.Select
Else
Set Zelle = Target
ActiveSheet.Cells(10, 6).Select
ActiveWindow.FreezePanes = True
Zelle.Select
End If
Application.EnableEvents = True
End Sub
Viele Grüße
Robert

Anzeige
AW: Edit: Makro zum ein- und entfrieren
06.08.2014 11:55:29
fcs
Hallo Thomas,
hier eine etwas kompliziertere Lösung, deren Code unter DieseArbeitsmappe eingefügt werden muss. Die Fixierung wird nicht bei jeder Zellselektion geändert, sonder nur wenn die aktive Zelle in einen anderen Spaltenbereich wandert.
Bei Roberts Lösung müssen im Makro vorübergehend die Ereignismakros deaktiviert werden, dann sollte Excel auch nicht mehr in eine Endlosschleife geraten und abstürzen.
Gruß
Franz
'Code im VBA-Editor unter "DieseArbeitsmappe" der Datei
Option Explicit
Private intStatusFrozen As Integer 'Merker für Fensterfixierung
Private Const strSheet As String = "Tabelle1" 'Name des Blatts mit spezieller Fensterfixierung
Private Sub prcMerkenStatus(ByVal objSh As Object)
intStatusFrozen = 0
Select Case objSh.Name
Case strSheet
If Application.ActiveWindow.FreezePanes = False Then
intStatusFrozen = 2
Else
Select Case ActiveCell.Column
Case Is = Range("CT1").Column
intStatusFrozen = 3
End Select
End If
Case Else
'do nothing
End Select
End Sub
Private Sub prcFreezePaneYes(strZelle As String, objRange As Range)
Dim objAktiv As Range
Set objAktiv = ActiveCell
Application.ActiveWindow.FreezePanes = False
Range("A1").Select
Range(strZelle).Select
Application.ActiveWindow.FreezePanes = True
objRange.Select
objAktiv.Activate
End Sub
Private Sub prcFreezePaneNo(objRange As Range)
Dim objAktiv As Range
Set objAktiv = ActiveCell
Application.ActiveWindow.FreezePanes = False
objRange.Select
objAktiv.Activate
End Sub
Private Sub Workbook_Open()
'Frozen-Status merken beim Öffnen der Datei
Call prcMerkenStatus(objSh:=ActiveSheet)
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'Frozen-Status merken wenn Blatt aktiviert/selektiert wird
Call prcMerkenStatus(objSh:=Sh)
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Select Case Sh.Name
Case strSheet
'Fensterfixierung wechseln, wenn die aktive Zelle um bestimmte Spalten pendelt
Application.EnableEvents = False
Select Case ActiveCell.Column
Case Is  1 Then
Call prcFreezePaneYes(strZelle:="G11", objRange:=Target)
intStatusFrozen = 1
End If
Case Is  2 Then
Call prcFreezePaneNo(objRange:=Target)
intStatusFrozen = 2
End If
Case Is >= Range("CT1").Column
If intStatusFrozen  3 Then
Call prcFreezePaneYes(strZelle:="A11", objRange:=Target)
intStatusFrozen = 3
End If
End Select
Application.EnableEvents = True
Case Else
'do nothing
End Select
End Sub
Roberts Lösung angepasst:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Zelle As Range
Application.EnableEvents = False
Select Case Target.Column
Case Is = Range("CT1").Column
Set Zelle = Target
ActiveWindow.FreezePanes = False
Range("A11").Select
ActiveWindow.FreezePanes = True
Zelle.Select
End Select
Application.EnableEvents = True
End Sub

Anzeige
AW: Edit: Makro zum ein- und entfrieren
06.08.2014 12:21:35
Thms
Hallo Franz,
super! Herzlichen Dank für die Codes!!!
Beides funktioniert für meine Zwecke einwandfrei! Hoffentlich bin ich nicht der einzige der davon profitieren kann/wird!
Beste Grüße
Thomas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige