Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Spalte per Tagesdatum anwählen
#1
Guten Morgen zusammen,

will folgende Herausforderung lösen:

Habe eine Tabelle, die per Fensterfixierung in einen "statischen" (bis Spalte D), linken Teil und einen "scrollbaren" (ab Spalte E und alle folgenden) rechten Teil aufgeteilt ist.
Im scrollbaren Teil trägt jede Spalte ein zukünftiges Datum.

Jetzt würde ich gern ein Makro einrichten, welches den scrollbaren Bereich beim Aufrufen der Tabelle immer am jeweiligen Tagesdatum an den Fixbereich anstößt.

Ich hoffe, ich habe das verständlich ausgedrückt. Gibt es da einen Makroansatz, der mir helfen könnte? Ich arbeite zur Zeit nur mit dem Recorder und bin noch nicht fit im "selberschreiben".

Besten Dank vorab für jeden Lösungsansatz.

Viele Grüße
Klaus
Antworten Top
#2
Das macht man anders.

Der Fixbereich bis D soll ja bleiben, damit Du weißt, wo Du bist. Dann kannst Du aber nicht auch noch die folgenden Spalten "wegfixen", sondern musst sie einfach ausblenden.

Das Makro liefert gleich bestimmt jmd.
Antworten Top
#3
Ich dachte da an eine Art Sprungbefehl mit "spring zu Datum Xx.XX.XXX"
So, wie wenn ich einen Begriff innerhalb einer Tabelle suchen will.
War ich zu naiv? :19:
Wenn jemand dafür ein Makro hätte, wäre das super.
Nochmals Danke
Klaus
Antworten Top
#4
Hallo

meinst du so?

Code:
Sub test()
   Dim c As Range
   Set c = Rows(1).Find(Date, LookIn:=xlFormulas, lookat:=xlWhole)
   If Not c Is Nothing Then
       Application.Goto Cells(1, c.Column), True
   End If
End Sub

MfG Tom
Antworten Top
#5
Hallo Tom,
soweit ich das beurteilen kann, sieht das gut aus :19:

Wie stelle ich denn jetzt die Zellenbezüge her.
Ich denke, irgendwo in der Tabelle gebe ich mit =HEUTE() das Tagesdatum an, oder?
In der Zeile 6 ab Spalte E steht dann das anzupeilende Datum.
Wie ist das im Makro verklausuliert bzw. was muß ich ändern, um das Makro entsprechend anzupassen?

Es grüßt der Makro-Laie
Klaus
Antworten Top
#6
Hallo

im Code wird nach "Date" gesucht, das ist das heutige Datum
wenn die Datümer (Datums, oder wie auch immer) in Zeile 6 stehen dann so

Code:
Sub test()
   Dim c As Range
   Set c = Rows(1).Find(Date, LookIn:=xlFormulas, lookat:=xlWhole)
   If Not c Is Nothing Then
       Application.Goto Cells(6, c.Column), True
   End If
End Sub
MfG Tom
Antworten Top
#7
Hi CrazyTom, funktionierte erst nach Umwandlung der Datum-Formeln in Werte!
Antworten Top
#8
Hallo Lupo

wenn das Datum durch eine Formel errechnet wird, schon
darüber gab es aber keine Angabe
in meinem Test war in Zeile 1 das Datum ohne Formel
wenn das Datum in der Zeile wirklich in diesem Format 08.05.2017 vorliegt
dann im Code

Code:
LookIn:=xlFormulas
ändern in
Code:
LookIn:=xlValues


MfG Tom
Antworten Top
#9
Hallo Tom & Lupo,

habe den Code jetzt unten in der "Registerlasche" eingefügt.
Ich hoffe, dies war richtig, die Tabelle besteht unten aus mehreren Tabellenblättern.

Leider tut sich nichts, weder wenn ich nur das entsprechende Tabellenblatt aufrufe, noch wenn ich die Tabelle schließe und neu aufrufe.
Was könnte ich falsch gemacht haben?

Die Zeile 6 ist defintiv richtig. Das Datum habe ich in den Zellen in Zeile 6 von Hand eingegeben und dann nach rechts rüber gezogen. Die Zellen sind alle als Datum formatiert.

Dankbar für Rat
Gruß
Klaus
Antworten Top
#10
Hallo

probier das hier mal
das gehört in das Tabellenblatt wo es stattfinden soll

Code:
Private Sub Worksheet_Activate()
   Dim intSpalte As Integer
   intSpalte = Application.Match(CDbl(Date), Rows(6), 0)
   Application.Goto Cells(1, intSpalte), True
End Sub
MfG Tom
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste