Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Beim Öffnen bestimmte Zelle "anspringen"

Beim Öffnen bestimmte Zelle "anspringen"
04.06.2004 11:24:04
Fritz
Hallo VBA-Spezialisten,
brauche nochmal eure Hilfe:
Ich habe in einer Arbeitsmappe u.a.(!!) die folgende Tabellenblätter:
Jan
Febr
März
Apr
Mai
Juni
Juli
Aug
Sept
Okt
Nov
Dez
In diesen Tabellen befindet sich in der Spalte A (ab Zeile 3 jeweils das Datum des jweiligen Monats. Wenn beim Öffnen der Datei in einer dieser Tabellen (im jeweiligen Bereich) das Datum des betreffenden Tages gefunden wird, soll die Tabelle mit diesem Datum geöffnet werden und der Cursor in der jeweiligen Zeile in der Spalte H platziert werden. Sollte das Datum beim Öffnen der Datei nicht gefunden werden, dann sollte die Tabelle "Daten" geöffnet werden und der Cursor dort in der Zelle A1 platziert werden.
Ich würde mich freuen, wenn mir jemand von euch bei der Realisierung meines Vorhabens behilflich sein kann.
Bedanke mich bereits jetzt für jede Form von Hilfe.
Mfg
Fritz
Anzeige

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

Betreff
Datum
Anwender
Anzeige
Nachfragen
Martin
Hallo Fritz,
1. Stehen die Tabellenblätter Jan-Dez unmittelbar nebeneinander, evtl. sogar am Anfang oder Ende aller Tabellen?
2. Was genau steht jeweils in den Spalten A dieser Tabellen (Du schreibst: ab Zeile 3 jeweils das Datum des jweiligen Monats, was ist damit gemeint)?
Im Prinzip läßt sich die Ausgabe mit einer Workbook_Open-Ereignisprozedur lösen. Kennst Du Dich damit aus?
Gruß
Martin Beck
Anzeige
AW: Nachfragen
Fritz
Hallo Martin,
die Tabellen mit den Monatsabkürzungen stehen zwar nebeneinander, aber nicht am Anfang und auch nicht am Ende in der Arbeitsmappe. Die Reihenfolge ist Sept bis Aug.
In diesen Tabellen sind jeweils ab Zeile 3 die einzelnen Tage (Datum) des betreffenden Monats aufgeführt. Also z.B. in Tabelle "Sept" in A3: 01.09.2003, in A4 dann 02.09.2003 usw. (das Jahr kann sich aber ändern und ist ab Jan das folgende Jahr, deshalb auch diese Anordnung in der Mappe!!). In der Tabelle "Okt" steht dann in A3: 01.10.2003 in A4 02.04.2003 usw.,
Von VBA versteh kaum was, ich weiß zwar dass es Ereignis-Makros gibt und was das bedeutet, aber programmieren geht ohne ausführliche Hilfe bei mir nicht. Versuche natürlich, einzelne Codes "zu lesen" um auf diese Weise zu lernen, aber ich bin noch im Anfangsstadium.
Wäre nett, wenn mir jetzt jemand weiterhelfen kann.
Danke bereits an dieser Stelle für euer Verständnis und die Mühe.
Mfg
Fritz
Anzeige
AW: Lösungsvorschlag
Martin
Hallo Fritz,
teste mal, ob folgendes Makro, das Du (noch) manuell starten mußt, funktioniert.

Sub Tabelle_ansteuern()
For i = 3 To 14 'Index der 12 Tabellen, bitte anpassen
If Application.WorksheetFunction.CountIf(Worksheets(i).Range("A2:A32"), Date) Then
Worksheets(i).Activate
For j = 2 To 32
If Cells(j, 1) = Date Then
Cells(j, 8).Select
Exit Sub
End If
Next j
End If
Next i
Worksheets("Daten").Activate
Range("A1").Select
End Sub

Wichtig: Du mußt den Tabellenindex noch anpassen. Zähle dazu aus,das wievielte Blatt "September" ist.
Wenn alles funktioniert, automatisieren wir das Ganze noch.
Gruß
Martin Beck
Anzeige
AW: Beim Öffnen bestimmte Zelle "anspringen"
04.06.2004 11:51:05
ANdreas
Hallo Fritz,
mit der Annahme, dass die Tage immer fortlaufend von 1 bis Monatsende ab Zeile 3 beginnen:

Private Sub Workbook_Open()
Dim ws As Worksheet, t As Date
t = Now
On Error GoTo ErrorHandler
'Bestimmen des Tabellenblattnamen je nach aktuellem Monat
Select Case Month(t)
Case 3: Set ws = Worksheets("März"):    Case 2: Set ws = Worksheets("Febr")
Case 6: Set ws = Worksheets("Juni"):    Case 7: Set ws = Worksheets("Juli")
Case 9: Set ws = Worksheets("Sept")
Case Else: Set ws = Worksheets(Format(t, "MMM"))
End Select
'Stimmt der heutige Tag mit dem in Spalte A überein?
With ws
If CInt(Left(.Cells(2 + Day(t), 1).Text, 2)) = Day(t) Then
.Activate
Cells(2 + Day(t), 8).Select
Else
Worksheets("Daten").Activate
Range("A1").Select
End If
End With
Exit Sub
ErrorHandler:
Worksheets("Daten").Activate
Range("A1").Select
End Sub

Das Makro in "DieseArbeitsmappe" im VBA-Explorerfenster einfügen.
Hoffe das hilft weiter,
Andreas
Anzeige
AW: Beim Öffnen bestimmte Zelle "anspringen"
Fritz
Hallo Andreas,
vielen Dank für deine Hilfe (die Kommentare im Code sind eine zusätzliche Hilfe für mich).
Habe das Makro kurz getestet, obwohl das heutige Datum in der Probedatei in der Tabelle Juni enthalten ist, verzweigt EXCEL beim Start in die Tabelle "Daten" (in Zelle A1).
Das ist in diesem Fall jedoch nicht vorgesehen.
Weitere Erläuterungen bezüglich der Problematik habe ich vorher auf die Fragen von Martin ins Forum gestellt, vielleicht helfen sie dir weiter.
Auf jeden Fall großen Dank für deine Hilfe.
Gruß
Fritz
Anzeige
AW: Beim Öffnen bestimmte Zelle "anspringen"
04.06.2004 12:18:18
ANdreas
Hallo Fritz,
da sehe ich 2 Möglichkeiten:
1. Das Tabellenblatt heisst nicht genau "Juni" sondern vielleicht "Jun". Das müßtest Du im Code dann einfach anpassen.
2. Ändere mal den zweiten Teil wie folgt:
'Stimmt der heutige Tag mit dem in Spalte A überein?
With ws
If Day(.Cells(2 + Day(t), 1).Value) = Day(t) Then
.Activate
Cells(2 + Day(t), 8).Select
Else
Worksheets("Daten").Activate
Range("A1").Select
End If
End With
Ich war nicht ganz sicher, ob Du nur den Tag oder das ganze Datum in Spalte A stehen hast.
Gruß
Andreas
Anzeige
AW: Beim Öffnen bestimmte Zelle "anspringen"
Fritz
Hallo Andreas,
die "2. Möglichkeit" hat mir weiter geholfen.
Die Tests haben jetzt gezeigt, dass er in die Tabelle mit dem heutigen Datum verzweigt und auch bei verändertem Datum grundsätzlich "korrekt" reagiert. Dies gilt jedoch nicht, wenn ich das Jahr verändere. Das Jahr bleibt schlicht unbeachtet.
Nochmals vielen Dank!
Gruß
Fritz
Anzeige
AW: Beim Öffnen bestimmte Zelle "anspringen"
04.06.2004 14:18:15
ANdreas
Hallo Kurt,
ach jetzt - dachte es geht nur um Übereinstimmung des Tages.
'Stimmt das heutige Datum mit dem in Spalte A überein?
With ws
If DateDiff("d", .Cells(2 + Day(t), 1).Value, t) = 0 Then
.Activate
Cells(2 + Day(t), 8).Select
Else
Worksheets("Daten").Activate
Range("A1").Select
End If
End With
Viel Spaß,
Andreas
Anzeige
AW: Beim Öffnen bestimmte Zelle "anspringen"
Fritz
Hallo Andreas,
jetzt klappt`s wie gewünscht.
Nochmals vielen Dank!
Gruß
Fritz
Anzeige
Anzeige

Infobox / Tutorial

Beim Öffnen in eine bestimmte Zelle springen


Schritt-für-Schritt-Anleitung

Um in Excel beim Öffnen einer Datei in eine bestimmte Zelle zu springen, kannst du ein VBA-Makro verwenden. Hier sind die Schritte, die du befolgen solltest:

  1. Öffne die Excel-Datei, in der du das Makro einfügen möchtest.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Suche im Projekt-Explorer auf der linken Seite nach „DieseArbeitsmappe“.
  4. Doppelklicke auf „DieseArbeitsmappe“ und füge den folgenden Code ein:
Private Sub Workbook_Open()
    Dim ws As Worksheet, t As Date
    t = Now
    On Error GoTo ErrorHandler

    ' Bestimmen des Tabellenblattnamens je nach aktuellem Monat
    Select Case Month(t)
        Case 1: Set ws = Worksheets("Jan")
        Case 2: Set ws = Worksheets("Febr")
        Case 3: Set ws = Worksheets("März")
        Case 4: Set ws = Worksheets("Apr")
        Case 5: Set ws = Worksheets("Mai")
        Case 6: Set ws = Worksheets("Juni")
        Case 7: Set ws = Worksheets("Juli")
        Case 8: Set ws = Worksheets("Aug")
        Case 9: Set ws = Worksheets("Sept")
        Case 10: Set ws = Worksheets("Okt")
        Case 11: Set ws = Worksheets("Nov")
        Case 12: Set ws = Worksheets("Dez")
    End Select

    ' Stimmen die Daten überein?
    With ws
        If CInt(Left(.Cells(Day(t) + 2, 1).Text, 2)) = Day(t) Then
            .Activate
            Cells(Day(t) + 2, 8).Select
        Else
            Worksheets("Daten").Activate
            Range("A1").Select
        End If
    End With

    Exit Sub
ErrorHandler:
    Worksheets("Daten").Activate
    Range("A1").Select
End Sub
  1. Schließe den VBA-Editor und speichere die Datei als „Excel-Arbeitsmappe mit Makros“ (.xlsm).
  2. Schließe die Datei und öffne sie erneut, um das Makro zu testen.

Häufige Fehler und Lösungen

  • Fehler: Das richtige Blatt wird nicht aktiviert
    Lösung: Überprüfe, ob die Tabellennamen exakt mit den im Code verwendeten Namen übereinstimmen (z.B. „Juni“ vs. „Jun“). Achte auch darauf, dass die Daten ab Zeile 3 beginnen.

  • Fehler: Das Datum wird nicht erkannt
    Lösung: Stelle sicher, dass die Datumsangaben im richtigen Format vorliegen. Es könnte auch hilfreich sein, den Code so anzupassen, dass sowohl Tag als auch Jahr berücksichtigt werden.


Alternative Methoden

Eine alternative Methode zur Navigation zu einer bestimmten Zelle beim Öffnen der Datei ist die Verwendung von „Worksheet_Activate“-Ereignissen. Diese Methode kann spezifischer für jede Tabelle sein, wenn du unterschiedliche Aktionen für verschiedene Monate haben möchtest.

Private Sub Worksheet_Activate()
    If Cells(3, 1).Value = Date Then
        Cells(3, 8).Select
    End If
End Sub

Diese Methode muss in jedes Tabellenblatt eingefügt werden, was jedoch mehr Aufwand bedeutet.


Praktische Beispiele

Hier ein einfaches Beispiel, um zu veranschaulichen, wie der Code funktioniert:

  1. Erstelle eine neue Excel-Datei mit Blättern für jeden Monat.
  2. Füge in die Spalte A (ab Zeile 3) die entsprechenden Daten für jeden Monat ein.
  3. Implementiere das oben genannte VBA-Makro und teste das Öffnen der Datei an einem Datum, das in der Liste vorhanden ist.

Tipps für Profis

  • Verwende Kommentare: Kommentiere deinen Code, um später schneller zu verstehen, was jeder Teil des Codes macht.
  • Optimiere die Fehlermeldungen: Statt einfach zu einem Standardblatt zu wechseln, kannst du spezifische Fehlermeldungen implementieren, die dem Benutzer deutlich machen, was falsch gelaufen ist.
  • Regelmäßige Backups: Erstelle Sicherungskopien deiner Arbeitsmappe, insbesondere wenn du mit VBA arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich das Makro automatisch beim Öffnen der Datei ausführen?
Das Makro muss im „DieseArbeitsmappe“-Modul platziert werden, damit es beim Öffnen der Datei automatisch ausgeführt wird.

2. Was mache ich, wenn ich die Monatsabkürzungen ändern möchte?
Du kannst die Tabellenblattnamen im Code einfach anpassen, um die entsprechenden Monatsabkürzungen zu verwenden.

3. Funktioniert dieser Code auch in älteren Excel-Versionen?
Ja, der Code sollte in den meisten Excel-Versionen ab 2007 funktionieren, solange die VBA-Umgebung verfügbar ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige