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