Microsoft Excel

Herbers Excel/VBA-Archiv

Per Combobox zum richtigen Datum scrollen.


Betrifft: Per Combobox zum richtigen Datum scrollen.
von: Markus
Geschrieben am: 30.11.2018 06:52:35

Hallo an alle

Ich hab schon wider ein VBA Problem und hoffe Ihr könnt mir weiterhelfen. In meiner Tabelle habe ich in Zeile 6 AB Spalte I Datumsangaben vom 1.1 des laufenden Jahres bis 31.1. des folge Jahres. Es sind immer die Tage eines Monats dann ein paar Berechnungsspalten und dann geht es mit dem 1. des nächsten Monats weiter.

Ich möchte über eine Combobox die ich mit den Monaten befühl (Jänner, Februar, usw) EINE Auswahl treffen und die Tabelle soll bis zum ersten dieses Monats vor Scrollen. Das Problem besteht darin das links die Spalten A bis H (über Ansicht->Fenster einfrieren) eingefroren sind weil dort Bezeichnungen stehen.

Wie bekomme ich es hin das der 1. Eines ausgewählten Monats immer als erste sichtbare spalte neben dem eingefrorenen Bereich ist.

Bis jetzt:

Private Sub ComboBox1_Change()
  Dim intZeile As Integer
  'intZeile = Selection.Row
  
    If ComboBox1.Value = "Jänner" Then
             Range("AZ5").Select
    ElseIf ComboBox1.Value = "Februar" Then
       Range("CL6").Select
    ElseIf ComboBox1.Value = "März" Then
       Range("EC6").Select
    ElseIf ComboBox1.Value = "April" Then
       Range("FW5").Select
    ElseIf ComboBox1.Value = "Mai" Then
       Range("HJ5").Select
    ElseIf ComboBox1.Value = "Juni" Then
       Range("IS5").Select
    ElseIf ComboBox1.Value = "Juli" Then
       Range("KM5").Select
    ElseIf ComboBox1.Value = "August" Then
       Range("LZ5").Select
    ElseIf ComboBox1.Value = "September" Then
       Range("NU5").Select
    ElseIf ComboBox1.Value = "Oktober" Then
       Range("PC5").Select
    ElseIf ComboBox1.Value = "November" Then
       Range("QT5").Select
    ElseIf ComboBox1.Value = "Dezember" Then
       Range("SH5").Select
           ElseIf ComboBox1.Value = "Nächster Jänner" Then
       Range("TW6").Select
    End If
End Sub


Der Sinn des ganzen ist das man nicht so viel scrollen muss. Im Moment Spring ich bei der Auswahl immer zu einer Zelle die sich ungefähr in dem Bereich befindet aber je nachdem wie viel Zoom auf dem Tabellenblatt eingestellt ist Sicht man mal mehr und mal weniger.

Grüße
Markus

  

Betrifft: AW: Per Combobox zum richtigen Datum scrollen.
von: ede
Geschrieben am: 30.11.2018 07:33:46

Guten Morgen Markus,
schau Dir mal Application.Goto an, damit sollte es funktionieren:

If ComboBox1.Value = "Jänner" Then
 Application.Goto Reference:=Worksheets("Dein Tabellenname").Range("AZ5"), scroll:=True

Viel Erfolg
ede


  

Betrifft: AW: Per Combobox zum richtigen Datum scrollen.
von: Herbert Grom
Geschrieben am: 30.11.2018 10:30:41

Hallo Markus,

hast du mal eine Beispielmappe?

Servus


  

Betrifft: AW: Per Combobox zum richtigen Datum scrollen.
von: Herbert Grom
Geschrieben am: 30.11.2018 17:10:43

Hallo Markus,

ich hätte jetzt so einen schönen Lösungsansatz! Aber wenn du keine BM hochlädst, kann ich dir nicht helfen!

Servus


  

Betrifft: AW: Per Combobox zum richtigen Datum scrollen.
von: Markus
Geschrieben am: 02.12.2018 15:20:12

Hallo
Meine Antwort kommt jetzt etwas spät es hat etwas Zeit gedauert, um zu überlegen wie ich das am besten mache. Um die richtige Frage zu stellen.

„Application.Goto Reference:=Worksheets("Dein Tabellenname").Range("AZ5"), scroll:=True“
Hat mir schon sehr weiter geholfen, danke @ede für den guten Tipp

Ich habe jetzt jeden Abschnitt der Tabelle einen Bereichsnamen gegeben. (zbsp Jänner_2019). Dieser Bereich würde ich dann später gerne weiter verwenden im Code und auch in den Formeln. Um das ganze flexibel zu gestalten. Der noch nicht ganz ideale Code Schaut jetzt so aus:
Private Sub cboMonatWeahlen_Change()
Dim Auswahl As String
Dim lngZielZeile As Long

lngZielZeile = Selection.Row
Auswahl = cboMonatWeahlen.Value

Select Case Auswahl
Case "Jänner_19"
            Application.Goto Reference:=Worksheets("Aktuelles Jahr") _
            .Range(Cells(lngZielZeile, Range(Auswahl).Column).Address), Scroll:=True
Case "Februar_19"
            Application.Goto Reference:=Worksheets("Aktuelles Jahr") _
            .Range(Cells(lngZielZeile, Range(Auswahl).Column).Address), Scroll:=True
Case "März_19"
            Application.Goto Reference:=Worksheets("Aktuelles Jahr") _
            .Range(Cells(lngZielZeile, Range(Auswahl).Column).Address), Scroll:=True
Case "April_19"
            Application.Goto Reference:=Worksheets("Aktuelles Jahr") _
            .Range(Cells(lngZielZeile, Range(Auswahl).Column).Address), Scroll:=True
Case "Mai_19"
            Application.Goto Reference:=Worksheets("Aktuelles Jahr") _
            .Range(Cells(lngZielZeile, Range(Auswahl).Column).Address), Scroll:=True
Case "Juni_19"
            Application.Goto Reference:=Worksheets("Aktuelles Jahr") _
            .Range(Cells(Range(Auswahl), Range(Auswahl).Column).Address), Scroll:=True
Case "Juli_19"
            Application.Goto Reference:=Worksheets("Aktuelles Jahr") _
            .Range(Cells(lngZielZeile, Range(Auswahl).Column).Address), Scroll:=True
Case "August_19"
            Application.Goto Reference:=Worksheets("Aktuelles Jahr") _
            .Range(Cells(lngZielZeile, Range(Auswahl).Column).Address), Scroll:=True
Case "September_19"
            Application.Goto Reference:=Worksheets("Aktuelles Jahr") _
            .Range(Cells(lngZielZeile, Range(Auswahl).Column).Address), Scroll:=True
Case "Oktober_19"
            Application.Goto Reference:=Worksheets("Aktuelles Jahr") _
            .Range(Cells(lngZielZeile, Range(Auswahl).Column).Address), Scroll:=True
Case "November_19"
            Application.Goto Reference:=Worksheets("Aktuelles Jahr") _
            .Range(Cells(lngZielZeile, Range(Auswahl).Column).Address), Scroll:=True
Case "Dezember_19"
            Application.Goto Reference:=Worksheets("Aktuelles Jahr") _
            .Range(Cells(lngZielZeile, Range(Auswahl).Column).Address), Scroll:=True
Case "Jänner_20"
            Application.Goto Reference:=Worksheets("Aktuelles Jahr") _
            .Range(Cells(lngZielZeile, Range(Auswahl).Column).Address), Scroll:=True
End Select
End Sub


Mein Problem ist jetzt, ich will das in der Combobox der Monat steht, der gerade sichtbar ist das ist ja auch gut so, um anzuzeigen wo man sich gerade befindet. Aber wenn man nach links oder rechts scrollt gelangt man ja zum nächsten Monat bspw. Februar in der Combobox steht dann noch Jänner.

@Herbert Grom: Danke für deine Antwort. Hab eine Datei hochgeladen bin auf den Lösungsansatz sehr gespannt. http://www.herber.de/bbs/user/125822.xlsm

Grüße
Markus


  

Betrifft: AW: Per Combobox zum richtigen Datum scrollen.
von: Herbert Grom
Geschrieben am: 02.12.2018 17:57:24

Hallo Markus,

schau dir meinen Vorschlag an. Der basiert allerdings auf deinem ersten Post!

Wenn du auf die Schaltfläche "Monatsauswahl starten" klickst, dann kommt die UF und du wählst deinen Monat aus. Der Cursor setzt sich dann immer auf die Zelle mit dem Monatsersten in der Zeile 5. Die Spalten links daneben werden bis einschließlich der Spalte "AI" ausgeblendet. A-M bleiben sichtbar.

http://www.herber.de/bbs/user/125835.xlsm

Servus


  

Betrifft: AW: Per Combobox zum richtigen Datum scrollen.
von: Markus
Geschrieben am: 02.12.2018 19:36:00

Hallo

Der Vorschlag ist gut ich Bau teile des Codes mit ein in die Tabelle. Danke sehr.
Hast du vielleicht auch einen Vorschlag wie ich die einzelnen Benannten Bereiche Löschen und neu anlegen kann?

Ich versuch es zu ermöglichen in den Bereichen vor den Datumsangaben das Hinzufügen von Spalten zu ermöglichen. Und vielleicht noch eine Ansicht einzubauen in der die Formeln zwischen den Monaten ausgeblendet werden oder sogar gelöscht und später neu eingefügt.
Dazu will ich die einzelnen Zellbereiche bei jeden Mappen Start löschen und neu erstellen nur ich weis noch nicht so recht wie ich das am besten bewerkstellige.

In jedem Fall, Danke für die Hilfe
Grüße Markus


  

Betrifft: AW: Per Combobox zum richtigen Datum scrollen.
von: Herbert Grom
Geschrieben am: 02.12.2018 19:47:59

Hallo Markus‘,

das schaue ich mir morgen mal an!

Servus


  

Betrifft: AW: Per Combobox zum richtigen Datum scrollen.
von: Herbert Grom
Geschrieben am: 03.12.2018 10:15:32

Hallo Markus,

müssen die Bereichsnamen "Einsatzgebiet_19 und Personal_19" unbedingt die Jahreszahl haben?

Du hast ja in der Zelle "M5" das Bearbeitungsjahr stehen. Kann ich das so machen, dass, wenn diese Zelle geändert wird, automatisch die Bereichsnamen an das neue Jahr angepasst werden?

Servus


  

Betrifft: AW: Per Combobox zum richtigen Datum scrollen.
von: Herbert Grom
Geschrieben am: 03.12.2018 11:16:09

Hallo Markus,

wozu müssen die Bereichsnamen überhaupt eine Jahreszahl haben? Ohne ginge es doch auch und man müsste sie nicht ändern!

Servus


  

Betrifft: AW: Per Combobox zum richtigen Datum scrollen.
von: Markus
Geschrieben am: 03.12.2018 17:14:48

Hallo

Naja eine gute frage; ich bin da leider nicht sehr bewandert. Meinst du nur die zwei Bereiche "Einsatzgebiet_19 und Personal_19" oder alle Bereiche? Ich versuch mal einen Überblick zu geben was ich vorhabe oder mir gedacht hab umzusetzen und versuch es zu begründen. Vielleicht ist es dann für dich einfacher es abzuschätzen.

Bereiche mit Jahreszahl.
Die Grundidee bei den Bereichs Namen mit Jahreszahl wäre das ich in der Mappe zwei Jahre drinnen hab auf zwei Tabellenblättern Aktuelles Jahr und Vorjahr. Das Problem ist das die Bereichs Namen für die ganze Mappe gelten und nicht pro Tabellenblatt sind. Mit Jahreszahl kann ich sie dann besser ansprechen. Zumindest ist das mein Glaube als Laie. Natürlich wenn du sagst das es ohne besser geht. Ich bin für jeden Input Dankbar.

Der Rest meines Vorhabens

Löschen und wider aufbauen der Bereiche:
Das Löschen und neu erstellen der Bereiche wäre in erster Linie für Änderungen der Spaltenanzahl bei den Personaldaten gedacht. Wenn sich jemand noch ne Notizspalte einfügen will oder etwas in der Richtung, will ich verhindern das die Bereiche Verrutschen. Da ich mir vorgenommen hab alles auf diesen Bereichen Aufzubauen, denn Code wie auch die Formeln.

Formeln Zentral verwalten:
Auf einem Tabellenblatt Einstellungen würden Musterformeln stehen die statt des Tatsächlichen Bereiches nur das Wort „Bereich“ enthalten. Diese sollen dann über VBA auseinandergenommen werden und durch die Bezeichnung des jeweiligen Bereiches ersetzt. Es soll so ne Art Formel Generator werden der das anpassen der Formeln Zentral ermöglicht. Im Moment hat die Mustertabelle ja immer 31 Spalten und dann die Berechnungsspalten dadurch lässt sich die Formel einfach immer weiter kopieren die ungenutzte Spalte 31 in manchen Monaten soll aber dann weg. Der Formelgenerator soll die Musterformeln anpassen dann einfügen und bis zur letzten benutzen Spalte runter ziehen.

Übersichtstabelenblatt:
Ich wollt auf einem dritten Tabellenblatt eine Art Übersicht erstellen mit zwei Combobox zur Personen Auswahl, durch welche die einzelnen Monate/Bereiche einer bestimmte Zeile/Person untereinander ausgegeben bekommt. Dazu noch eine Checkbox durch die Mann bestimmen kann ob nur die Person aus einem Jahr oder aus beiden Jahren angezeigt wird. Oder zwei verschiedene Personen. Um diese miteinander zu vergleichen. Dann noch eine Gehe zu Schaltfläche die einen bei anklicken eines Tages und drücken an die stelle im Haupttabellenblatt bringt um dort etwas zu ändern.

Der Sinn ist das die Leute sich wegen den beliebten Urlaubszeiträumen August usw. oft in den Haaren haben. Und eine schnelle Übersicht wie die Person letztes Jahr auf Urlaub war schnelle Argumente Liefert warum im laufenden Jahr die Person A und nicht die Person B zbsp im August gehen kann.

Vielen Dank für die Hilfe und Grüße
Markus


  

Betrifft: AW: Per Combobox zum richtigen Datum scrollen.
von: Markus
Geschrieben am: 03.12.2018 17:23:50

Hallo

Wobei ich zugeben muss das eine mit Daten voll gefüllte Arbeitsmappe mit 250 Test Datenzeilen in der sich nur ein Jahr befindet. Bereits eine beachtliche Dateigröße ausmacht als xlsm 1600 KB und als xlsb sind es immer noch 1000 KB. Das kommt von den vielen Formatierungen. Musste schon auf die bedingte Formatierung der Feiertage und Wochenende aus dem Grund verzichten da die Datei Träge geworden ist. Und die bedingten Formatierungen hängen bleiben.

Ist es Möglich aus einer anderen Datei im selben Verzeichnis die Informationen eines Jahres zu holen betreffend einer Person. 8Eine Tabellen Zeile. Wenn die Bereichs Namen dort gleich sind wie in der ersten Ausgangsdatei also eine Datei 2018 und eine 2019? Oder würde es durch die Bereichsnamen Gleichheit zu Problemen führen.

Grüße Markus


  

Betrifft: AW: Per Combobox zum richtigen Datum scrollen.
von: Herbert Grom
Geschrieben am: 03.12.2018 17:39:59

Hallo Markus,

wir sind jetzt, jedenfalls für mich, an einem Punkt angekommen, der meine Gratis-Hilfsbereitschaft übersteigt, denn das was du willst ist zwar alles machbar, aber mit einem Zeitaufwand, der die kostenlose Hilfe bei weitem übersteigt. Ich habe ja jetzt schon etliche Stunden investiert, doch wenn ich deine Beschreibungen lese, kämen mindestens noch einmal so viele Stunden dazu und das ist mir einfach zu viel, für Gratis!

Vielleicht kannst du deinen Chef ja dazu bewegen, mir dafür einen Programmierauftrag zu erteilen. Du kannst mir das ja auch über meine eMail-Adr. (hag@excelhelper.de) mitteilen.

Servus


  

Betrifft: AW: Per Combobox zum richtigen Datum scrollen.
von: Markus
Geschrieben am: 03.12.2018 18:59:57

Hallo

Ich hatte jetzt nicht gemeint das du das alles Umsetzen sollst, es ging mit der ganzen Beschreibung mehr darum heraus zu bekommen ob es sinnvoll ist den Bereichen ein Jahr anzuhängen. Aber in jedem fall danke für deine Hilfe dein Code hat mir sehr weitergeholfen.

Grüße
Markus


  

Betrifft: AW: Per Combobox zum richtigen Datum scrollen.
von: Herbert Grom
Geschrieben am: 04.12.2018 10:46:24

Hallo Markus,

ich würde in deinem Falle grundsätzlich jedes Jahr in eine eigene AM packen, schon wg der vielen Bereichsnamen. Selbstverständlich kann man Daten aus einer geschlossenen AM auslesen, auch ohne sie öffnen zu müssen.

Da kannst du ja auch mal "googlen".

Servus