Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1860to1864
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

per vba bestimmte Spalte anzeigen

per vba bestimmte Spalte anzeigen
06.12.2021 14:45:03
Edi
Hallo, liebe Exculatoren
Ich melde mich mal wieder mit einer Frage.
Wahrscheinlich ist die Antwort ziemlich banal, aber ich weiß die Lösung nicht.
Ich habe in einer Exceldatei einen Kalender für ein halbes Jahr.
Das Datum steht in Zeile 5, nach rechts fortlaufend. Nächste Spalte = nächster Tag.
Jetzt hätte ich gerne folgendes:
Wenn der aktuelle Kalender aufgerufen wird, soll die Spalte mit dem heutigen Datum zentriert am Monitor dargestellt werden.
Wird ein älterer Kalender aufgerufen, der das heutige Datum nicht mehr enthält, soll ganz nach rechts gescrollt werden, also der letzte Tag erscheinen.
Wird ein zukünftiger Kalender aufgerufen, soll der erste Tag angezeigt werden, also ganz nach links gescrollt werden.
Bestimmt gibt es dafür eine Lösung.
Danke schonmal für Eure Antworten.
Viele Grüße
Edi

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: per vba bestimmte Spalte anzeigen
06.12.2021 15:32:28
UweD
Hallo
versuch mal
- Makro muss in den Codebereich von "DieseArbeitsmappe"
- den Offset musst du ausprobieren um die Zentrische Ausrichtung hinzubekommen

Option Explicit
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim Zeile As Integer, MMax As Date, MMin As Date, SP As Integer
Dim Off As Integer, Pos As Integer
Zeile = 5
Off = 10 'Offset zum zentrieren
MMin = WorksheetFunction.Min(Rows(Zeile))
MMax = WorksheetFunction.Max(Rows(Zeile))
If Date > MMax Then 'Alter Kalender
SP = WorksheetFunction.Match(CDbl(MMax), Rows(Zeile), 0)
Pos = SP - Off
ElseIf Date 
LG UweD
Anzeige
AW: per vba bestimmte Spalte anzeigen
06.12.2021 16:20:25
Edi
Hallo Uwe
Danke erstmal für Deine Antwort.
Leider funktioniert das so noch nicht so recht.
MMin und MMax werden nicht korrekt erkannt, was wahrscheinlich daran liegt, dass vor und nach dem Kalender auch in Zeile 5 noch Einträge existieren.
Das Datum des Kalenders beginnt immer bei F5 und endet bei FQ5. Danach kommen rechts noch Auswertungen und Statistik und so Zeugs.
Heißt, die Suche müsste sich auf den Bereich F bis FQ beschränken.
Aber das Application.Goto bringt mich schon weiter. Das ist der Sprungbefehl, den ich gesucht habe.
Ich würde jetzt eher den Ansatz versuchen, das erste und das letzte Datum mit heute zu vergleichen und wenn heute dazwischen liegt, die Spalte mit dem aktuellen Datum zu ermitteln.
Dann habe ich die Spalte und kann die mit dem jetzt bekannten Sprungbefehl und mit entsprechendem Offset in die Mitte bringen.
Du hast mir da auf jeden Fall schon geholfen.
Danke Dir
Anzeige
AW: per vba bestimmte Spalte anzeigen
06.12.2021 16:34:55
UweD
Hallo nochmal
dann so?

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim rng As Range, Zeile As Integer, MMax As Date, MMin As Date, SP As Integer
Dim Off As Integer, Pos As Integer
Set rng = Range("F5:FQ5")
Zeile = rng.Row
Off = 10 'Offset zum zentrieren
MMin = WorksheetFunction.Min(rng)
MMax = WorksheetFunction.Max(rng)
If Date > MMax Then 'Alter Kalender
SP = WorksheetFunction.Match(CDbl(MMax), rng, 0)
Pos = WorksheetFunction.Max(1, SP - Off)
ElseIf Date 
LG UweD
AW: per vba bestimmte Spalte anzeigen
06.12.2021 17:16:45
Edi
Hallo Uwe
Herzlichen Dank für Deine Mühe.
Ich bin jetzt schon zu Hause und kann das nicht mehr testen.
Aber morgen setze ich mich gleich dran und probiere das aus.
Dann gebe ich Dir nochmals Bescheid.
LG
Edi
Anzeige
AW: per vba bestimmte Spalte anzeigen
07.12.2021 13:38:33
Edi
Moin Uwe
Jetzt konnte ich Dein Script testen.
Leider funktioniert es nicht.
Die Variablen MMin und MMax werden zuverlässig mit falschen Werten gefüllt.
Und die Zeile SP = WorksheetFunction.Match(CDbl(Date), rng, 0) bringt auch eine Fehlermeldung.
Wobei ich sagen muss, dass ich diese Funktion nicht kenne und nicht recht weiß, was die macht.
Ich habe für mich dank Deiner Hilfe aber nun folgende Lösung gefunden:

Sub Test()
Dim s As Integer, MMax As Date, MMin As Date, Off As Integer
Off = 12 'Offset zum zentrieren
MMin = Range("F5")
MMax = Range("FQ5")
If MMin = 0 Then
MsgBox "Kein Datum gefunden"
Exit Sub
End If
If Date > MMax Then s = 173 - Off 'Alter Kalender
If Date = MMin Then   ' aktueller Kalender
For s = 6 To 173
If Date = Cells(5, s) Then
If s > Off Then s = s - Off
Exit For
End If
Next s
End If
Application.Goto Cells(5, s), True
End Sub
Das funktioniert jetzt.
Ich lade mal trotzdem noch die geleerte Datei hoch, falls Du Dir das selber nochmals ansehen willst.
https://www.herber.de/bbs/user/149639.xlsm
Danke nochmals
LG
Edi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige