Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1316to1320
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

Application.Goto .Cells(1, 1) - Zelle anzeigen

Application.Goto .Cells(1, 1) - Zelle anzeigen
20.06.2013 12:41:17
Peter
Guten Tag
Mit nachstehendem Code blende ich in einem Worksheet die Spalten A:E aus und gruppiere die Spalte F:M.
Das klappt solange, als im aktiven Worksheet nicht Spalten weiter rechts angezeigt werden.
Ist beispielsweise die Spalte "FA" & ff sichtbar, erscheinen die Spalten "FA:FG" eingefriert.
Alle Spalten vor FG sind dann nicht mehr sichtbar.
Damit das nicht passiert, habe ich
With ActiveSheet
Application.Goto .Cells(1, 14)
..
End With
eingefügt. Doch die Zelle wird zwar angewählt, jedoch nicht angezeigt.
Ich nehme an, dass sich das Problem mit der falschen Fixierung der Spalten nur Lösen lässt, wenn am Bildschirm die Zelle N vor Ablauf des Codes sichtbar ist (nach Ablauf des Codes sollen die Spalten A:E ausgeblendet und die Spalte "F:M" gruppiert).
Was muss anstelle von Application.Goto .Cells(1, 14) stehen, resp. momit muss diese Anweisung ergänzt werden?
Gruss, Peter
Sub FfixTabelle()
Dim StrGruppieren As String
With ActiveWindow
.FreezePanes = False
.SplitColumn = False
.SplitRow = False
End With
With ActiveSheet
Application.Goto .Cells(1, 14)
With .Columns("A:E")
.Columns.Hidden = True
StrGruppieren = "F:M"
' Alle Gruppierungen aufheben
If IsDetail(ActiveSheet.Name, StrGruppieren) = True Then
ActiveSheet.Cells.ClearOutline
.Columns(StrGruppieren).Columns.Group
''zur Syntax nachstehenden ExecuteExcel4Marcos
'': die 1 steht für eine Zeilengruppierung (2 dann für eine  _
Spaltengruppierung) und
''die 3 steht für die Zeilennr. (oder Spaltennr.) wo die  _
Gruppierung anfängt und
''False dann natürlich noch die Visible-Eigenschaft
ExecuteExcel4Macro "SHOW.DETAIL(2,6,False)"
End If
End With
With ActiveWindow
.SplitColumn = Range("spClass").Column - Range("spEffDate").Column + 1
.SplitRow = 1
.FreezePanes = True
.Zoom = 80
End With
End With
End Sub

Function IsDetail(strWks As String, varRowCol As String) As Boolean
If IsNumeric(VBA.Left(varRowCol, 1)) Then
IsDetail = Not Worksheets(strWks).Rows(varRowCol).Hidden
Else
IsDetail = Not Worksheets(strWks).Columns(varRowCol).Hidden
End If
End Function

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Versuch's mal mit einem Scroll-Befehl! Gruß owT
20.06.2013 13:05:48
Luc:-?
:-?

Application.Goto .Cells(1, 1), True -> Anzeige
20.06.2013 17:49:33
Erich
Hi Peter,
probier mal, ob es reicht,
Application.Goto .Cells(1, 14), True
statt
Application.Goto .Cells(1, 14)
zu schreiben.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

noch ein Vorschlag
20.06.2013 18:12:38
Erich
Hi Peter,
vielleicht gefällt dir diese Variante deines Codes - geändert hat sich manches,
was mit "With" zu tun hat:

Sub FfixTabelle()
Dim StrGruppieren As String, lngCols As Long
With ActiveWindow
.FreezePanes = False
.SplitColumn = False
.SplitRow = False
End With
With ActiveSheet
Application.Goto .Cells(1, 14), True
StrGruppieren = "F:M"
' Alle Gruppierungen aufheben
If IsDetail(.Name, StrGruppieren) Then
.Columns("A:E").Hidden = True
.Cells.ClearOutline
.Columns(StrGruppieren).Group
''zur Syntax nachstehenden ExecuteExcel4Marcos:
''die 1. steht für eine Zeilengruppierung,
''die 2. für eine Spaltengruppierung und
''die 3. steht für die Zeilennr. (oder Spaltennr.)
''        wo die Gruppierung anfängt und
''False dann natürlich noch die Visible-Eigenschaft
ExecuteExcel4Macro "SHOW.DETAIL(2,6,False)"
End If
lngCols = .Range("spClass").Column - .Range("spEffDate").Column + 1
End With
With ActiveWindow
.SplitColumn = lngCols
.SplitRow = 1
.FreezePanes = True
.Zoom = 80
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: noch ein Vorschlag
20.06.2013 21:59:46
Peter
Hallo Erich
Ja, das gefällt mir. Vielen Dank.
Bei dieser umfangreichen Arbeitsmappe habe ich viele Tabellen, die in der Struktur identisch sind.
Die Rangenamen, die mit "sp" anfangen beziehen sich auf die Tabelle "0000", anhand der die jeweiligen Spalten identifiziert werden.
Ich dachte, dass es sich um globale Namen haben, die in der ganzen Arbeitsmappe nur einmal vorkommen und habe deshalb verzichtet, bei deren Verwendung noch "Sheets." vor Range("xxx") zu schreiben.
Spricht da etwas dagegen?
Gruss, Peter
Range("spClass").Column - Range("spEffDate").Column

Anzeige
kleiner Rückschlag vom Vorschlag
21.06.2013 00:45:36
Erich
Hi Peter,
ja, da hast du völlig recht.
With ActiveSheet
.Range("spClass").Column 'ergibt einen Fehler, wenn der Bereich "spClass" nicht auf diesem Blatt liegt.
End With
Ohne die Punkte gibt es keinen Ärger - die Namen sind ja in der Mappe eindeutig.
Also brauchst du lngCols gar nicht - sorry für meinen Übereifer!
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

AW:Danke
21.06.2013 08:02:17
Peter
habe ich nicht als Übereifer angesehen - dieser Sachverhalt konntest du ja nicht wissen ..
Vielen Dank und Gruss, Peter

213 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige