Excel 2010 VBA-Laie braucht Hilfe

Hallo liebe Forenprofis. Bin absoluter VBA-Nuller und brauch bitte daher eure Hilfe.
Habe für Excel 2010 einen VBA Code gefunden, der dafür sorgt, das beim Öffnen einer Arbeitsmappe automatisch in eine bestimmte Zelle gesprungen wird.
Hier bei wird aber die Spalte „D“ durchsucht und in das „heutige“ Datum gesprungen.
Diesen Code habe ich ausprobiert und es funktioniert.
Leider steht das Datum in meiner Datei in den Zellen A1 bis AG1, also nur in der ersten Zeile. Zusätzlich habe ich das benutzerdefinierte Format „TT“ gewählt.
Wie muss der Code lauten, damit die Zeile 1 meiner Arbeitsmappe durchsucht wird.
Der Code den ich benutzt habe lautet:

Private Sub Workbook_Open()
Dim lngZ As Long
With Worksheets(„Tabelle1“)
For lngZ = A1 To DS1
If .Cells(lngZ, 4).Value = Date Then
.Activate
.Cells(lngZ, 4).Select
Exit For
End If
Next
End With
End Sub

Bitte helft einem Laien. Danke schon einmal

Hallo Schadre,

Diesen Code habe ich ausprobiert und es funktioniert.

? Ist das der Code den du zeigst? M.E. funktioniert der nicht.
Dachte ich sofort aber sicherheitshalber probierte ich den Code und mein Debugger bemängelt A1 als unbekannte Variable…

Zusätzlich habe ich das benutzerdefinierte Format „TT“ gewählt.

Spielt an sich keine Rolle bei Suche nach Datümern. Die Suche checkt das was in der Zelle steht und nicht in welcher Darstellung es angezeigt wird.
Was in der Zelle steht bei Datümern ist sowas: 44321,2736638

Wie muss der Code lauten, damit die Zeile 1 meiner
Arbeitsmappe durchsucht wird

Ich könnte dir den Code direkt hinschreiben, logo mit allen Fehlermöglichkeiten wenn man zu großmäulig ist *weiß* aber mir ist da manches noch zu vage.
Lade bitte mit file-upload, s. FAQ:2606 , eine Beispielmappe hoch.

Gruß
Reinhard

.

Hallo Schadre,

mit folgenden ANpasungen sollte es funktionieren

Private Sub Workbook\_Open()
 Dim lngZ As Long
 With Worksheets("Tabelle1")
 'Spalte A (1) bis zu letzten Spalte mit daten in Zeile 1 durchsuchen
 For lngZ = 1 To .Cells(1, Columns.Count).End(xlToLeft).Column
 If .Cells(1, lngZ).Value = Date Then
 .Activate
 .Cells(1, lngZ).Select
 Exit For
 End If
 Next
 End With
End Sub

Gruß
Franz

Hallo Reinhard.
Zuerst einmal möchte ich hier mal für deine/ eure supi Hilfsbereitschaft bedanken. Ihr seit echt Klasse.

Den Code, den ich dargestellt hatte, war dafür gemacht die Spalte D zu durchsuchen.
Hier liegt ja mein Problem. Bei mir stehen die Daten in der Zeile 1 und ich weiss nicht wie man den Code hier für ändert. Ich hab eine Beispiel angehängtBeim Öffnen der Datei sollte, wenn möglich, gleich i…

Upps zu schnell gewesen.
Einen Wunsch/ eine Bitte hätte ich noch. Das Beispiel bezieht sich auf den Monat September. Im Oktober möchte ich dann ein nächstes Tabellenblatt einfügen.
Dazu würde ich die Bezeichnung „Tabelle 1“ auf „September 2013“ und für das nächste Tabellenblatt natürlich "Oktober 2013 " ändern. Was muss ich denn dabei beachten ???

Danke

Hallo Schadre,

nachfolgend mein Makro mit den Anpassungen, um zuerst nach dem Monat des aktuellen Datums und dann nach dem Tag zu suchen.
Falls du die Monate gekürzt schreiben willst, dann musst du 12 Case-Zeilen entsprechend anpassen. Fehlt das Monatsblatt noch wird eine entsprechende Meldung angezeigt.

Gruß
Franz

'Code unter "DieseArbeitsmappe" der Datei
Option Explicit
Private Sub Workbook\_Open()
 Dim lngZ As Long, wks As Worksheet
 Dim strName As String
 'Blattname für Monat fest vorgeben \_
 - so unabhängig von Spracheinstellung/-version von Betriebssystem/Excel
 Select Case VBA.Month(Date)
 Case 1: strName = "Januar"
 Case 2: strName = "Februar"
 Case 3: strName = "März"
 Case 4: strName = "April"
 Case 5: strName = "Mai"
 Case 6: strName = "Juni"
 Case 7: strName = "Juli"
 Case 8: strName = "August"
 Case 9: strName = "September"
 Case 10: strName = "Oktober"
 Case 11: strName = "November"
 Case 12: strName = "Dezember"
 End Select
 ' Jahr an Monat anhängen
 strName = strName & " " & Format(Date, "YYYY")
 'Prüfen, ob Blatt für Monat schonvorhanden
 For Each wks In Me.Worksheets
 If LCase(wks.Name) = LCase(strName) Then
 Exit For
 End If
 Next

 If wks Is Nothing Then
 MsgBox "Das Tabellenblatt """ & strName & """ für Monat """ & Format(Date, "MMMM YYYY") \_
 & """ ist noch nicht angelegt!", \_
 vbInformation + vbOKOnly, \_
 "Suche nach aktuellem Datum in 1. Zeile"
 Else
 With wks
 'Zeile 1 bis zu letzten Spalte mit Daten durchsuchen
 .Activate
 For lngZ = 1 To .Cells(1, Columns.Count).End(xlToLeft).Column
 If .Cells(1, lngZ).Value = Date Then
 With .Cells(1, lngZ)
 .Select
 ActiveWindow.ScrollColumn = Application.WorksheetFunction.Max(1, .Column - 2)
 End With
 Exit For
 End If
 Next
 End With
 End If
End Sub

Hallo Schadre,

Einen Wunsch/ eine Bitte hätte ich noch. Das Beispiel bezieht
sich auf den Monat September. Im Oktober möchte ich dann ein
nächstes Tabellenblatt einfügen.

per Makro geht das natürlich. Ob es sinnvoll ist die Monatsblätter bei Bedarf per Code einzufügen kann ich nicht sehen.

Ich fange mal so an wie man immer anfangen sollte. Geht übrigens locker mit Blättern Karopapier und Kuli/Bleistift. Hinschmieren erlaubt, Nur du mußt ja dein Geschreibsel deuten können :smile: PC ist nicht nötig.

Sich erstmal Gedanken über die Struktur eines Blattes machen. Welche Titel/Überschriften. Die Tage waagrecht oder senkrecht. Welche Namen sollen die Blätter haben. Ist in deinem Fall die 2013 im Blattnamen überhaupt notwendig. Langt nicht auch Sep anstatt September.

Wieviele Jahre sollen in die Mappe, mehrere oder nur eines. Im zweiten Fall ist die 2013 im Blattnamen entbehrlich. Langt ja wenn die im Mappennamen steht

Und wenn du möchtest daß da nur 12 Monate eines Jahres als Blätter drin sind so rege ich an du erstellst eine Mustermappe, mit gleichem Aufbau für alle Jahre.
Für ein neues Jahr nimmste die Mustermappe, speicherst sie als Bezeivhnung2013.
Dann trägst du z.B. im Blatt für Januar das Jahr ein. Per Formeln passen sich dann alle 12 Blätter dem an.

Das geht vollautomatisch ohne daß du dir Gedanken machen mußt ob Schaltjahr vorliegt oder nicht u.s.w. Natürlich stehen dann Titelzellen Formeln die automatisch pro Monat 30 oder 31 Tage anzeigen, Februar wird auch richtig angezeigt.
Insofern verstehst du jetzt warum ich anfangs daß Einfügen eines Monatsblattes in Frage stellte.

Je nachdem was geplant ist gibt es noch zig Dinger über die du dir vorher Gedanken machen solltest. Gut möglich daß du als Vba-Laie denkst der Code wäre das aufwendigste, schwierigste. Evtl. bei Excelformeln auch und verschwendest auf die gedankliche Vorplanung der Mappenstruktur keine Zeit/Aufwand.

Ich behaupte, im Regelfall ist das schon mal ein Fehler. Höre bitte auf mich. Der Winter naht, dann kannste das leider nicht machen, aber wenn bei dir noch „raussetzWetter“ ist, dann schnapp Papier, was zu schreiben, auf geht’s in Park, Straßencafe, o.ä.

Erst dann gehst du an den PC und fängst an die Mappe zu „basteln“.
Wenn es um den Automatismus geht daß pro Monat und Jahr immer nur die richtigen Tage angezeigt werden schau wie das andere machen, Hier z.B.
http://users.quick-line.ch/ramel/Files/ARBEITS-RAPPO…

Wenn die Mappe solide aufgebaut ist und die genauen Blattnamen bekannt sind erspart sich Franz und logo andere auch im Code die Existenz von Blatt und Tag zu prüfen.
Dann wird das ein 3 Zeiler o.ä.

Wenn du im deutschen Sprachraum agierst und keine Mappen aus dem Ausland bearbeitest ist manches vom Code von Franz nicht nötig.
Bist du International tätig, oha, da muß man vieles bedenken/einplanen sodaß deine Mappe weltweit mit allen Konstellationen problemlos funktioniert.

Da ich mich ja, wie hier klassisch zu sehen, immer kurz fasse *gg*. habe ich kaum was erwähnt. Denk bitte drüber nach und lasse uns wissen was du nun auch aufgrund meines Artikels genau planst.

Wenn du das was Th. Ramel in seinen Mappen zeigt nicht umsetzen kannst so macht das nix. Probiere es und lad dann die Mappe mit deinem Versuch hoch. Dann kann man schauen wo’s hängt…

Gruß
Reinhard

Mit dem heutigen Sprachgebrauch würde man glaube ich sagen: Das ist FETT.
Nein mal ehrlich. Ich habe es gerade ausprobiert. Der Code klappt supi supi supi.
Danke.

Danke Reinhard.
Du hast Recht damit, daß man sich die Sache einfacher machen kann, wenn man sich den Aufbau vorher genau überlegt.
Hatte mir gar keine Gedanken über Dinge wie die Benennung der Tabellenblätter gemacht. Habe jetzt schon einmal viel gelernt.
Habe gerade den Code von Franz ausprobiert und festgestellt, das er funktioniert. In so weit bin ich sehr happy.
Danke für deine Denkanstösse und Hilfe und hoffe ich darf beim nächsten mal wieder auf Unterstützung hoffen