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

Sprungmarke setzen

Sprungmarke setzen
28.11.2017 05:54:54
ANdy
Hallo,
wie kann man in einem Tabellenblatt folgenden erreichen.
1. Ich habe einen Kalender, der für das ganze Jahr fortlaufend tag für tag eine spalte hat. Ich würde gerne die 1. Spalte und die 1. Zeile einfrieren und in der ersten Spalte ein Dropdownfeld einrichten, wo ich direkt den Monat auswählen kann. Dadurch soll automatisch im nicht-fixierten Bereich nach dem Tag (also für Mai zb. der 1.5) gesucht werden und direkt dorthin gesprungen/ gescrollt werden.
2. Würde ich gerne, dass beim Öffnen der Arbeitsmappe automatisch das Tabellenblatt "Kalender" geöffnet wird und zum aktuellen Datum gesprungen wird.

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sprungmarke setzen
28.11.2017 08:00:58
fcs
Hallo Andy,
1. Ich habe einen Kalender, der für das ganze Jahr fortlaufend tag für tag eine spalte hat.
Ich würde gerne die 1. Spalte und die 1. Zeile einfrieren
Selektiere Zelle B2 und via Menü "Ansicht" kannst du dein Tabellenblatt entsprechend einfrieren.
und in der ersten Spalte ein Dropdownfeld einrichten,
Füge hier in Zelle A1 via Menü "Entwicklertools" eine Combobox aus den Active-X-Steuerelemente ein.
Stelle folgende Eigenschaften ein.
ColumnCount: 2
BoundColumn: 1
Columnwidths: 15Pt;75Pt
TextColumn: 2
Falls der Name der Combobox nicht "ComboBox1" ist, dann musst du in den Makros entsprechende Anpassungen machen.
wo ich direkt den Monat auswählen kann. Dadurch soll automatisch im nicht-fixierten Bereich nach dem Tag (also für Mai zb. der 1.5) gesucht werden und direkt dorthin gesprungen/ gescrollt werden.
2. Würde ich gerne, dass beim Öffnen der Arbeitsmappe automatisch das Tabellenblatt "Kalender" geöffnet wird und zum aktuellen Datum gesprungen wird.

Hierfür benötigst du folgende Makros:
Gruß
Franz
'Makro unter DieseArbeitsmappe
Private Sub Workbook_Open()
Me.Worksheets("Kalender").Activate
Call prcFill_Combobox
Call prcGotoDatum(Date)
End Sub
'Makro unter Tabellenblatt-Modul des Tabellenblatts "Kalender"
Private Sub ComboBox1_Change()
With Me.ComboBox1
If .ListIndex >= 0 Then
Call prcGotoDatum(datDatum:=DateSerial(Year(Me.Cells(1, 2).Value), Val(.Value), 1))
End If
End With
End Sub
'Makros in einem allgemeinen Modul der Datei
Option Explicit
Public Sub prcGotoDatum(datDatum As Date)
Dim wks As Worksheet
Dim Spalte As Long
Set wks = ThisWorkbook.Worksheets("Kalender")
With wks
For Spalte = 2 To .Cells(1, .Columns.Count).End(xlToLeft).Column
If .Cells(1, Spalte).Value = datDatum Then
.Activate
.Cells(1, Spalte).Select
ActiveWindow.ScrollColumn = Spalte
Exit For
End If
Next
End With
End Sub
Sub prcFill_Combobox()
'2-spaltige Combobox mit Nr und Name des Monats füllen
Dim objCombobox As OLEObject
Dim intJ As Integer
Set objCombobox = ThisWorkbook.Worksheets("Kalender").OLEObjects("Combobox1")
With objCombobox
.Object.Clear
For intJ = 1 To 12
With .Object
.AddItem intJ
.List(.ListCount - 1, 1) = Format(DateSerial(Year:=Year(Date), _
Month:=intJ, Day:=1), "MMMM")
End With
Next
.Object.ListIndex = Month(Date) - 1
End With
End Sub

Anzeige
AW: Sprungmarke setzen
28.11.2017 08:32:35
ANdy
es kommt jetzt die Meldung: Typen unverträglich. Bei Debug:
Call prcGotoDatum(datDatum:=DateSerial(Year(Me.Cells(1, 2).Value), Val(.Value), 1))
Im 2ten Parameter fehlt die Klassifizierung! (owT)
28.11.2017 08:38:42
EtoPHG

AW: Im 2ten Parameter fehlt die Klassifizierung! (owT)
28.11.2017 08:49:49
ANdy
Habe es hinbekommen .. Super Danke. Nur noch eine Frage: Kann man nur die Monatsnamen in der Liste füllen? also nicht 1 Januar sondern nur Januar
Columnwidths: 0;75Pt in Combobox einstellen (owT)
28.11.2017 09:19:30
EtoPHG

Columnwidths: 0;75Pt in Combobox einstellen (owT)
28.11.2017 09:19:59
EtoPHG

AW: Columnwidths: 0;75Pt in Combobox einstellen (owT)
28.11.2017 09:57:30
ANdy
Es wird zwar die Zahl in der Liste ausgeblendet. Als ausgewähltes Element steht aber weiterhin die Zahl 1-12 dabei (ohne Monat)
BoundColumn: 2 (owT)
28.11.2017 11:05:40
EtoPHG

AW: BoundColumn: 2 (owT)
28.11.2017 11:51:51
Herby
mit boundcolumn 2 funktioniert der Sprung nicht mehr!
AW: Columnwidths: 0;75Pt in Combobox einstellen (owT)
29.11.2017 05:42:28
fcs
Hallo Andy,
für die Ermittlung des 1. Tages des Monats wird für die verwenete Funktion ja die Nummer des Monats benötigt.
Diese kann man hier auch aus der Index-Nummer des gewählten Eintrags ermitteln, da die Monate in der korreten Reihenfolge in der Liste stehen.
Wenn du die Combobox als 1-spaltige Box einrichtest dann kannst du mit folgenden Makro-Anpassungen arbeiten.

'Makro unter Tabellenblatt-Modul des Tabellenblatts "Kalender"
Private Sub ComboBox1_Change()
With Me.ComboBox1
If .ListIndex >= 0 Then
Call prcGotoDatum(datDatum:=DateSerial(Year(Me.Cells(1, 2).Value), _
.ListIndex + 1, 1))
End If
End With
End Sub
'Makro im allgemeinen Modul
Sub prcFill_Combobox()
'1-spaltige Combobox mit Namen der Monate füllen
Dim objCombobox As OLEObject
Dim intJ As Integer
Set objCombobox = ThisWorkbook.Worksheets("Kalender").OLEObjects("Combobox1")
With objCombobox
.Object.Clear
For intJ = 1 To 12
With .Object
.AddItem Format(DateSerial(Year:=Year(Date), _
Month:=intJ, Day:=1), "MMMM")
End With
Next
.Object.ListIndex = Month(Date) - 1
End With
End Sub
Gruß
Franz
Anzeige
Statt der Schleife …
28.11.2017 10:02:05
RPP63
Moin!
… geht natürlich auch das schnellere
objCombobox.List = Application.GetCustomListContents(8)
Aber dies nur ergänzend.
Gruß Ralf
Mal ein Beispiel
28.11.2017 12:31:00
RPP63
Formularsteuerelement sowie Hyperlinks in der Tabelle.
Der gesamte Code lautet:
Sub Dropdown1_BeiÄnderung()
Select Case [A1]
Case 1
ActiveWindow.ScrollColumn = _
DateSerial([A9], Month(Date), Day(Date)) - DateSerial([A9], 1, 0) + 1
Case Else
ActiveWindow.ScrollColumn = _
WorksheetFunction.Match(Format(DateSerial([A9], [A1] - 1, 1), "MMM"), Rows(1), 0)
End Select
ActiveSheet.Columns.AutoFit
End Sub
Schaue Dir mal die Datei an:
https://www.herber.de/bbs/user/117962.xlsm
Gruß Ralf
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige