Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1172to1176
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

Kennzeichnung von bestimmtem Tagesdatum

Kennzeichnung von bestimmtem Tagesdatum
bestimmtem
Hallo,
ich habe folgendes Problem:
In der Spalte A habe ich die Tage eines Jahres aufgelistet, also vom 01.01.(2010) bis zum 31.12.(2010). Begonnen wird aber bereits mit den letzten Tagen aus dem Vorjahr und geendet mit den ersten Tagen vom folgenden Jahr, da ich diese Auflistung in einer Tabelle verwende, die wochenweise, von Mo -So, strukturiert ist.
In den Zellen D1 und D2 werden jeweils verschiedene Zahlen zwischen 1 und 31 eingegeben (Tagesdaten).
Nun möchte ich selektieren, in welcher Zeile die zuvor bestimmten Tagesdaten stehen, indem in der Spalte B, jeweils daneben, eine "1" steht, wenn der Tag mit dem Wert von D1, eine "2", wenn der Tag mit dem Wert von D2 und eine "0", wenn der Tag mit keinem der beiden Zahlen übereinstimmt.
Beispiel:
D1: 9
D2: 25
A1: 28.12. (2009 = Montag)
A2: 29.12. (2009 = Dienstag)
A3: 30.12. (2009 = Mittwoch)
A4: 31.12. (2009 = Donnerstag)
A5: 01.01. (2010 = Freitag)
A6: 02.01. (2010 = Samstag)
A7: 03.01. (2010 = Sonntag)
A8: 04.01. (2010 = Montag)
A9: 05.01. (2010 = Dienstag)
A10: 06.01. (2010 = Mittwoch)
A11: 07.01. (2010 = Donnerstag)
A12: 08.01. (2010 = Freitag)
A13: 09.01. (2010 = Samstag)
A14: 10.01. (2010 = Sonntag)
|
|
A28: 23.01. (2010 = Samstag)
A29: 24.01. (2010 = Sonntag)
A30: 25.01. (2010 = Montag)
A31: 26.01. (2010 = Dienstag)
A32: 27.01. (2010 = Mittwoch)
|
|
A43: 07.02. (2010 = Sonntag)
A44: 08.02. (2010 = Montag)
A45: 09.02. (2010 = Dienstag)
A46: 10.02. (2010 = Mittwoch)
A47: 11.02. (2010 = Donnerstag)
A48: 12.02. (2010 = Freitag)
A49: 13.02. (2010 = Samstag)
A50: 14.02. (2010 = Sonntag)
|
|
A57: 21.02. (2010 = Sonntag)
A58: 22.02. (2010 = Montag)
A59: 23.02. (2010 = Dienstag)
A60: 24.02. (2010 = Mittwoch)
A61: 25.02. (2010 = Donnerstag)
A62: 26.02. (2010 = Freitag)
|
|
u.s.w.
So sollte in den Zellen B13 und B45 eine "1", in den Zellen B30 und B61 eine "2" und in den restlichen Zellen von B eine "0" erscheinen.
Diese Auflistung will ich jedes Jahr neu nutzen können. Da sich dann aber die zugehörigen Wochentage ändern, will ich nur das Datum in Spalte A (Zeilen 5-390) ändern, damit die Wochentage für das Folgejahr passen. Die Ergebnisse in Spalte B müssen sich dann entsprechend automatisch ändern.
Hat jemand dafür eine Lösung?
Gruss Stein
AW: Kennzeichnung von bestimmtem Tagesdatum
30.08.2010 12:15:02
bestimmtem
Hallo Stein,
=WENN(TAG(A1)=$D$1;1;WENN(TAG(A1)=$D$2;2;0))
Und dann runterkopieren.
Die Wochentage kannst Du übrigens mit =TEXT(A1;"TTTT") auslesen. Dazu muss natürlich das vollständige Datum inkl. Jahreszahl in Spalte A stehen. Die gewünschte Darstellung Tag.Monat bekommst Du ja über das Zellenformat.
Gruß, Jogy
AW: Kennzeichnung von bestimmtem Tagesdatum
30.08.2010 12:57:08
bestimmtem
Hallo Jogy,
danke für die schnelle Antwort.
Hat funktioniert. Ist immer blöd: man weiß, was man will, findet nur nicht die richtige Funktion (TAG) dafür. Aber dafür hat man ja Euch!!! :-))
Ich habe die Wochtagsformel noch ein bisschen verändert, damit nur die ersten beiden Buchstaben angezeigt werden:
=TEIL(TEXT(A1;"TTTT");1;2)
Gruss Stein
Anzeige
wieso nicht einfach =Text(A1;"TTT")? - oT
30.08.2010 13:01:26
JogyB
Ja, warum eigentlich nicht?
30.08.2010 13:18:53
Stein
Ich hatte es mit "TT" ausprobiert, aber da kamen ja dann nur die Zahlen, die ich nicht wollte. Mein Gedankengang war erst: "TT"=die ersten beiden Buchstaben und "TTTT"=Wochentag ganz ausgeschrieben.
Klappte aber nicht. Und darum die "kompliziertere" Variante. Danke für die Korrektur.
Gruss Stein
Zwischen den Werten Zellen verbinden
30.08.2010 13:30:23
Stein
Eine "kleine" Erweiterungsfrage habe ich noch:
Nachdem ich die Indizies von 0, 1 und 2 ermittelt habe, möchte ich gern noch die zwischen den "1"ern rechts daneben liegenden Zellen (in Spalte C) automatisch verbinden lassen. Brauche ich dazu ein Makro?
Eventuell werde ich auch noch eine Spalte einfügen müssen, sodass meine beiden Auswahlzellen von D1 und D2 nach E1 bzw. E2 wechseln werden. Kann ich die Zellenverbindungen dann auch auf die Spalte D ausweiten?
Gruss Stein
Anzeige
AW: Zwischen den Werten Zellen verbinden
30.08.2010 13:57:02
JogyB
Hallo Stein,
ja, dafür brauchst Du ein Makro. Ist an sich kein Problem, nur wann soll das Makro ausgeführt werden und was soll mit den Daten passieren, die in den verbundenen Zellen stehen?
Gruß, Jogy
AW: Zwischen den Werten Zellen verbinden
30.08.2010 15:09:26
Stein
Beim Beispiel, welches ich Dir anfangs gab, ging es mir nur um das Prinzip, wie die Formel zu formulieren ist, um entsprechendes zu erreichen.
Ich habe dann die TAG-Formel in die bedingten Formatierungen integriert, damit unter den Zellen in der H- und I-Spalte am unteren Rand eine Rahmenlinie erscheint, wenn links der Wochentag mit der zuvor genannten Zahl übereinstimmt.
Ich brauche diese Zeiträume für die Berechnung von Arbeitsstunden. Nun sollen in den H- und I-Spalten (in jeder Zeile sind bislang beide Zellen verbunden) die Gesamtstunden innerhalb des gewählten Zeitraumes angegeben und gleichzeitig optisch durch die verbundenen Zellen mit Trennstrich zwischen den Blöcken angezeigt werden.
Da ich diese Tabelle aber über mehrere Jahre verwenden will, möchte ich gern, dass sich die Veränderung (Blockbildung, Trennstrich) mit der Veränderung der zum Datum zugehörigen Wochentage automatisch anpasst.
Hier ein Auszug aus meiner Datei:
 ABCDFGHIJKM
566Mo08.02.KKW Biblis1,25 5,00  2,00 3,00  
57Di09.02.KKW Biblis1,25   
58Mi10.02.KKW Biblis1,25   
59Do11.02.KKW Biblis1,25   
60Fr12.02.KKW Biblis0,00   
61Sa13.02.    
62So14.02.    
637Mo15.02. -8,31 -4,56  2,00 0,00 X
64Di16.02.KKW Biblis1,25   
65Mi17.02.KKW Biblis1,25   
66Do18.02.KKW Biblis1,25   
67Fr19.02.KKW Biblis0,00   
68Sa20.02.    
69So21.02.    
708Mo22.02.KKW Biblis1,25 6,00  2,00 4,00  
71Di23.02.KKW Biblis1,25   
72Mi24.02.KKW Biblis1,25   
73Do25.02.KKW Biblis0,00   
74Fr26.02.KKW Biblis2,25   
75Sa27.02.    
76So28.02.    


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Wenn ich das Anfangsdatum in Zelle C14 ändere, ändern sich automatisch auch die anderen Datumseinträge in der C-Spalte sowie deren Wochentagzugehörigkeit. Im nächsten Jahr wird dann beispielsweise der 23.02. eine Zeile höher rutschen (in Schaltjahren zwei). Somit soll sich dann auch die Rahmenline unter H71/I71 um eine Zeile nach oben verschieben. Was sie ja dank Deiner Formel auch tut. Jetzt sollen nur noch die Zellen zwischen dem 24.1. und dem 23.2. miteinander verbunden werden sowie sich die Summenformel (reine Addition der Zellenwerte in der F-Spalte innerhalb des jeweiligen Zeitraums) anpassen.
Entsprechendes natürlich auch für die anderen Tage des Jahres.
Ich hoffe, ich habe mich verständlich ausgedrückt?
Gruss Stein
Anzeige
AW: Zwischen den Werten Zellen verbinden
30.08.2010 16:22:59
JogyB
Hallo Stein,
mal ein ganz anderer Ansatz: Ich würde das Struktur statisch lassen und das Anfangsdatum der Tabelle so festlegen, dass es zur Struktur passt. Das geht problemlos über eine Formel, Du brauchst dann nur eine Zelle, in der die Jahreszahl steht oder man könnte es auch aus dem Blattnamen auslesen. In Spalte A kommt dann einfach die Kalenderwoche (Vorsicht, da ist in der Excel-Funktion ein Fehler, hier gibt es eine korrekte Berechnung: http://www.excelformeln.de/formeln.html?welcher=7).
Wenn das ok wäre, mit welchem Datum soll es denn anfangen? Ich vermute mal mit dem Montag der Woche, von der zumindest ein Tag im entsprechenden Jahr liegt?
Dann wäre die Fomel (Jahreszahl steht in S1) für den ersten Tag:
=DATUM(S1;1;1)-WOCHENTAG(DATUM(S1;1;1);3)
Für die Folgetage musst Du dann immer einfach einen Tag addieren, wenn obige Formel in C2 steht, dann kommt in C3 einfach =C2+1. Das füllst Du dann einfach so weit aus wie nötig. Für eine vollständige Darstellung brauchst Du nun 53 oder 54 Wochen, d.h. die 54. Woche kann im Folgejahr liegen. Das würde ich dann wieder über eine bedingte Formatierung ausblenden.
Wenn Du es über den Namen des Tabellenblatts machen willst, dann wäre die Formel in der ersten Datumszelle:
=DATUM(TEIL(ZELLE("Dateiname";$A$1);FINDEN("]";ZELLE("Dateiname";$A$1))+1;31);1;1) -WOCHENTAG(DATUM(TEIL(ZELLE("Dateiname";$A$1);FINDEN("]";ZELLE("Dateiname";$A$1))+1;31);1;1);3)
(Achtung: Mappe muss gespeichert sein)
Gruß, Jogy
Anzeige
AW: Zwischen den Werten Zellen verbinden
30.08.2010 17:49:15
Stein
Hallo Jogy,
danke für die Info.
Werde sie morgen erst ausprobieren können. Werde mich dann wieder melden.
Gruss Stein
AW: Zwischen den Werten Zellen verbinden
31.08.2010 07:05:09
Hajo_Zi
Hallo Unbekannte(r),
mal raus aus offen, Da Du es selber testen möchtest laut Deinem Beitrag.

AW: Zwischen den Werten Zellen verbinden
31.08.2010 08:53:21
Stein
Hallo Jogy,
habe es mal ausprobiert: Es funktioniert super! Warum bin ich nicht selber darauf gekommen? Zumindest auf den anderen Ansatz. Wahrscheinlich, weil ich mich mit den verschiedenen Datumsfunktionen noch nicht so gut auskenne.
Das hatte ich auch gemerkt, als ich Deine erste Formel =DATUM(S1;1;1)-WOCHENTAG(DATUM(S1;1;1);3) eingab und erstmal "#ZAHL!" als Ergebnis erhielt. Bis ich darauf kam, dass die Datum-Funktion keine als Datum formatierte Zellen verarbeiten will, sondern nur reine Zahlen (z.B. als "Standard" formatiert) .
Allerdings ist damit das Problem der Zellenverbindungen in den H-/I-Spalten aufgrund der sich jährlich in der Höhe (Zeilen) verschiebenden Datumsgrenzen noch nicht behoben.
Gruss Stein
Anzeige
AW: Zwischen den Werten Zellen verbinden
31.08.2010 10:44:03
JogyB
Hallo Stein,
das Problem ist nicht die Formatierung, sondern dass die DATUM-Funktion an dieser Stelle die Jahreszahl erwartet. Wenn Du nun 01.01.2010 in der Zelle stehen hast, dann entspricht das der Zahl 40179 (ein Datum ist bei Excel immer eine Zahl) und das macht als Jahreszahl nicht wirklich viel Sinn.
Das mit den Zellenverbindungen verstehe ich jetzt aber nicht ganz... so wie es in Deinem Beispiel ausgesehen hat, sind das doch immer die Kalenderwochen und die bleiben mit meinem Ansatz immer an derselben Stelle. Oder ist das jetzt völlig beliebig, welche Zellen verbunden sein sollen?
Gruß, Jogy
Anzeige
AW: Zwischen den Werten Zellen verbinden
31.08.2010 11:48:05
Stein
Hallo Jogy,
Die Zellenverbindungen sollen so erfolgen, dass sich aufgrund von vordefinierten Anfangs- und Enddaten die jeweils dazwischen liegenden Zellen einer Spalte verbinden. Innerhalb eines Jahres also 52-53 mal. Zusätzlich sollen auch die sich darin befindlichen Additionsformeln angepasst werden.
Ich möchte Dir die "Zellenverbindung" noch mal anhand meines Beispiels aus dem ersten Beitrag erläutern:
Beispiel:
D1: 9
D2: 25
A1: 28.12. (2009 = Montag)
A2: 29.12. (2009 = Dienstag)
A3: 30.12. (2009 = Mittwoch)
A4: 31.12. (2009 = Donnerstag)
A5: 01.01. (2010 = Freitag)
A6: 02.01. (2010 = Samstag)
A7: 03.01. (2010 = Sonntag)
A8: 04.01. (2010 = Montag)
A9: 05.01. (2010 = Dienstag)
A10: 06.01. (2010 = Mittwoch)
A11: 07.01. (2010 = Donnerstag)
A12: 08.01. (2010 = Freitag)
A13: 09.01. (2010 = Samstag)
A14: 10.01. (2010 = Sonntag)
A57: 21.02. (2010 = Sonntag)
A58: 22.02. (2010 = Montag)
A59: 23.02. (2010 = Dienstag)
A60: 24.02. (2010 = Mittwoch)
A61: 25.02. (2010 = Donnerstag)
A62: 26.02. (2010 = Freitag)
u.s.w.
Darin sind die Grendzdaten in den Zellen D2 (Anfang) und D3 (Ende) definiert. Nun möchte ich erreichen, dass nun beispielsweise in der Spalte C alle Zellen, die zwischen den den Zeilen 13 und 61 (incl.) liegen, miteinander verbunden werden sollen, also C13 bis C61 eine Zelle (=> C13)werden. In diesem Zellenverbund soll nun zusätzlich das Ergebnis einer Addition all der Werte stehen, die sich in B3 bis B61 befinden. Die Additionsformel in C13 würde dann lauten: =Summe(B13:B61).
Das gilt aber nicht nur für den Januar, wie im Beispiel, sondern entsprechend auch für die anderen Monate des Jahres.
Wenn ich nun die Jahreszahl von 2010 auf 2011 ändere, würden sich die Daten in der Spalte A um eine Zeile nach unten verschieben. Der 9.1. wäre dann nicht mehr in A13 sondern in A14 und der 25.1. nicht mehr in A61 sondern in A62 zu finden. Entsprechend sollen sich dann die Zellenverbindung auf die Zellen zwischen C14 und C62 und die Addition auf die Formel =Summe(B1:B62) ändern. Eine Änderung soll aber auch erfolgen, wenn ich die Parameterdaten in D2 und/oder D3 ändern würde.
Meine Frage war, ob dies überhaupt über VBA realisierbar ist. Und wenn ja, wie.
Gruss Stein
Anzeige
AW: Zwischen den Werten Zellen verbinden
31.08.2010 11:54:56
Stein
Ich muss etwas korrigieren! :-(
Die Berechnungen sollen ja monatsweise erfolgen. In meinem Beispiel bin ich aber versehentlich über zwei Monate gegangen. Die Endzeile für den 25. Januar ist nicht die 61, sondern die 30. Es soll also der Bereich von 9 bis 30 erfasst werden.
Der nächste Bereich wäre dann von 45 bis 61.
Entschuldigung.
Gruss Stein
AW: Zwischen den Werten Zellen verbinden
31.08.2010 15:05:53
JogyB
Hallo Stein,
probier mal aus, ob der Code das so macht, wie Du es willst:
Sub verBinden()
Dim sTart As Long
Dim enDe As Long
Dim zeLLen() As Long
Dim zeiLe As Long
Dim anFang As Boolean ' True sucht Anfang, False sucht Ende
Const suchSp = 1 ' Spalte A
Const sumSp = 2 ' Spalte B
Const verbSp = 3 ' Spalte C
' Erstinitialisierung
ReDim zeLLen(-1 To 0, 0 To 0)
' Sucht erst einen Anfang
anFang = True
' Nimmt das aktive Blatt
With ActiveSheet
' Alle Zellverbindungen weg
.Columns(verbSp).UnMerge
' Start und Ende einlesen
sTart = .Cells(2, 4).Value
enDe = .Cells(3, 4).Value
' Nun durchsuchen
For zeiLe = 1 To .Cells(Rows.Count, suchSp).End(xlUp).Row
If IsDate(.Cells(zeiLe, suchSp)) Then
' Wenn Anfang oder Ende (festgelegt durch anfend)
If Day(.Cells(zeiLe, suchSp)) = IIf(anFang, sTart, enDe) Then
' Zwischenspeichern
If anFang Then
If UBound(zeLLen, 2) = 0 Then
ReDim zeLLen(-1 To 0, 1 To 1)
Else
ReDim Preserve zeLLen(-1 To 0, 1 To UBound(zeLLen, 2) + 1)
End If
End If
zeLLen(anFang, UBound(zeLLen, 2)) = zeiLe
anFang = Not anFang
End If
End If
Next
' Nun verbinden, wenn es was zu verbinden gibt
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For zeiLe = 1 To UBound(zeLLen, 2)
If zeLLen(-1, zeiLe) 

Ist jetzt ohne jegliche Fehlerkontrolle und Formatierung, macht einfach nur die Zellenverbindung und die Formel.
Gruß, Jogy
Anzeige
AW: Zwischen den Werten Zellen verbinden
31.08.2010 16:01:58
Stein
Hallo Jogy,
danke.
Funktioniert bedingt:
Da Du die Zell-, Zeilen- und Spaltenbezeichung aus meinem Beispiel übernommen hast, habe sie angepasst:
Const suchSp = 3 ' Spalte C
Const sumSp = 6 ' Spalte F
Const verbSp = 8 ' Spalte H
' Start und Ende einlesen
sTart = .Cells(8, 8).Value 'H8
enDe = .Cells(10, 8).Value 'H10
Habe ich eine Stelle vergessen?
Nachdem ich den Code aktiviert habe wurden alle jeweiligen Zellen in der H-Spalte zwischen dem 24. und dem nächsten 23. verbunden. Auch die Addition funktioniert prima.
Allerdings müssten folgende Dinge noch angepasst werden:
1. Es wurden sämtliche anderen Zellverbindungen des Tabellenblattes "zerschossen". Hebt die Erstinitialisierung sämtliche Zellverbindungen auf, bevor dann die entsprechenden Zellen in der H-Spalte wieder verbunden werden?
' Erstinitialisierung
ReDim zeLLen(-1 To 0, 0 To 0)
2. Die ersten und die letzten Bereiche wurden jeweils nicht verbunden. Wahrscheinlich, weil dort kein Anfang mit 24 (oberster Bereich von Anfang bis 23 - Tabelle beginnt ja mit den letzten Dezembertagen in der ersten Woche, damit die Woche voll ist) und kein Ende mit 23 (unterster Bereich von 24 bis Ende -, Tabelle endet mit den ersten Januartagen des Folgejahres, bis die Woche voll ist) vorhanden ist.
3. Ich hatte in meinem Beispiel vergessen, eine Zelle anzugeben, in der die Jahreszahl steht. Sie befindet sich in der Zelle F1. Daher gibt es wohl auch keine Änderung der Zellverbindungen und der Formel, wenn ich die Jahreszahl ändere und sich damit die Grenzdaten verschieben?
4. Der Bereich, in dem die Zellen verbunden werden sollen bezieht sich nicht nur auf die Spalte H sondern auf H und I. Dass heisst, dass alle Zellen in der H- und I-Spalte, die sich zwischen den Zeilen der jeweiligen Tagesdaten 24 und 23 befinden, sollen verbunden und die Additionsformel entsprechend angepasst werden.
Aber trotz alledem: Hochachtung und Danke für die bisherige Hilfe!!!
Gruß
Stein
Anzeige
AW: Zwischen den Werten Zellen verbinden
31.08.2010 16:52:29
JogyB
Hallo Stein,
zu 1.
Sollte eigentlich nicht passieren. Die Erstinitialisierung hat mit den Zellverbindungen erstmal nichts zu tun, es werden allerdings an anderer Stelle die vorhandenen Zellverbindungen in der verbSp aufgehoben. Das macht das .UnMerge. In anderen Spalten darf eigentlich nichts passieren.
zu 2.
Wenn es keinen Anfang oder Ende findet, dann passiert nichts. Habe ich geändert.
zu 3.
siehe unten
zu 4.
Erledigt.
Noch eine allgemeine Anmerkung: Es ist ziemlich ungeschickt, die Werte für Start und Ende in die Spalte einzutragen, die nachher verbunden wird. Da solltest Du eine andere Spalte wählen. Ich habe jetzt mal J genommen. Ansonsten müsste ich das anpassen, da die Spalten H und I komplett gelöscht werden (die alten Formeln müssen ja weg).
Das hier in ein allgemeines Modul:
Sub verBinden(myWsh As Worksheet)
Dim sTart As Long
Dim enDe As Long
Dim zeLLen() As Long
Dim zeiLe As Long
Dim tempCalc As Long
Dim endZeile As Long
Dim anFang As Boolean ' True sucht Anfang, False sucht Ende
Const suchSp = 3 ' Spalte C
Const sumSp = 6 ' Spalte F
Const fverbSp = 8 ' Spalte H
Const lverbSp = 9 ' Spalte I
Const startZeile = 2 ' erste Zeile mit Datumswerten
' Erstinitialisierung
ReDim zeLLen(-1 To 0, 0 To 0)
' Sucht erst einen Anfang
anFang = True
' Nimmt das übergebene Blatt
With myWsh
With Range(.Columns(fverbSp), .Columns(lverbSp))
' Alle Zellverbindungen weg
.UnMerge
' Und auch die Inhalte weg
.ClearContents
End With
' Start und Ende einlesen
sTart = .Cells(2, 10).Value ' J2
enDe = .Cells(3, 10).Value ' J3
' letzte Zeile bestimmen
endZeile = .Cells(Rows.Count, suchSp).End(xlUp).Row
' Nun durchsuchen
For zeiLe = startZeile To endZeile
If IsDate(.Cells(zeiLe, suchSp)) Then
' Wenn Anfang oder Ende (festgelegt durch anfend)
If Day(.Cells(zeiLe, suchSp)) = IIf(anFang, sTart, enDe) Then
' Zwischenspeichern
If anFang Then
If UBound(zeLLen, 2) = 0 Then
ReDim zeLLen(-1 To 0, 1 To 1)
Else
ReDim Preserve zeLLen(-1 To 0, 1 To UBound(zeLLen, 2) + 1)
End If
End If
zeLLen(anFang, UBound(zeLLen, 2)) = zeiLe
anFang = Not anFang
' Sucht jetzt noch das Ende, wenn noch kein Anfang gefunden wurde
ElseIf UBound(zeLLen, 2) = 0 And Day(.Cells(zeiLe, suchSp)) = enDe Then
ReDim zeLLen(-1 To 0, 1 To 1)
zeLLen(0, 1) = zeiLe
End If
End If
Next
' Nun verbinden, wenn es was zu verbinden gibt
Application.ScreenUpdating = False
Application.DisplayAlerts = False
tempCalc = Application.Calculation
Application.Calculation = xlCalculationManual
For zeiLe = 1 To UBound(zeLLen, 2)
' Ende da, aber kein Anfang (nur für 1. Wert!)
If zeLLen(-1, zeiLe) = 0 And zeiLe = 1 Then
zeLLen(-1, zeiLe) = startZeile
' Anfang da, aber kein Ende (nur für letzten Wert!)
ElseIf zeLLen(0, zeiLe) = 0 And zeiLe = UBound(zeLLen, 2) Then
zeLLen(0, zeiLe) = endZeile
End If
' Prüfen ob Verbindung sinnvoll und dann verbinden
If zeLLen(-1, zeiLe) 

Und das hier in den Code der Tabelle:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F1")) Is Nothing Then
Call verBinden(Me)
End If
End Sub

Gruß, Jogy
AW: Zwischen den Werten Zellen verbinden
31.08.2010 17:49:33
Stein
Hallo Jogy,
irgendwie bekomme ich die Codes nicht zum Laufen:
Ich habe mir Modul1 als (Allgemein) erstellt und Deinen allgemeinen Code hinein kopiert. Und in das Tabellenblatt den zweiten, kurzen Code.
Wenn ich jetzt auf die Playtaste (Sub/UserForm ausführen) klicke, öffnet sich ein Fenster, um ein neues Makro zu erstellen. Es werden keine Makros zur Auswahl ageboten. Ich kann nur ein neues erstellen.
Ich kann Dir aber mal die Datei beilegen. Allerdings erst später, da ich sie auf einem anderen Rechner habe. Sie ist ein Auszug aus der gesamten Exceldatei. Allerdings haben sich durch Anpassungen die zu formatierenden Spalten von H+I auf G+H geändert.
Gruss Stein
AW: Datei hochgeladen
01.09.2010 08:31:20
JogyB
Hallo Stein,
ich schaue es mir heute abend mal an (kann bei der Arbeit nichts runterladen). Den Code kannst Du jetzt nicht mehr per Play-Taste ausführen, da er einen Übergabewert hat. Der startet nun bei einer Änderung von Zelle F1. Das müsste man noch so weit ändern, dass er auch bei einer Änderung des Start und Endwerts startet, aber da war ich gestern nicht sicher, in welchen Zellen Du die nun reinsetzen willst. Mache ich Dir aber noch rein.
Gruß, Jogy
AW: Datei hochgeladen
01.09.2010 08:52:09
Stein
Danke.
Werde geduldig warten! :-))
Gruss Stein
AW: Datei hochgeladen
01.09.2010 16:29:58
Stein
Hallo Jogy,
es wäre doch sinnvoll, wenn das Makros bei Öffnen der Datei und/oder bei Änderung der Jahreszahl - befindet sich in E2 - ausgeführt wird. Also immer zu Beginn und wenn sich durch die Jahreszahländerung die Datumswerte in der C-Spalte verschieben.
Gruss Stein
AW: Datei hochgeladen
01.09.2010 18:22:15
JogyB
Hallo Stein,
baue ich ein, das ist eine Codezeile mehr ;).
Es ist sinnvoll beides zu machen, denn die Makros könnten deaktiviert sein, wodurch es keine Aktualisierung gibt. Wenn man das beim Öffnen aktualisiert, dann ist es beim nächsten Laden der Datei wieder korrekt. Alternativ könnte man natürlich die Bearbeitung der Datei sperren, wenn keine Makros aktiv sind, aber das wäre der größere Aufwand, weil man dazu das Speichern komplett abfangen muss.
Gruß, Jogy
AW: Datei hochgeladen
02.09.2010 09:15:21
Stein
Hallo Jogy,
es klappt super!
Da das Makro nicht alles verbindet, wenn die erste Grenzzahl kleiner oder gleich der zweiten ist - was auch in Ordnung ist - habe ich oben in den Kopfzeilen, in denen die Grenzwerte eingegeben werden, bedingte Formatierungen angelegt, die mich durch Änderung der Zellformatierung auf diese Unregelmässigkeiten hinweisen werden. Ebenso habe ich in der Zelle G/H6 noch
=WENN(G5G7;"bis zum";"Grenzdaten sind gleich!")) 
als Mitteilung eingegeben und auch durch bedingte Formatierung farblich hervorgehoben.
Jetzt muss ich das Makro nur noch in die Originaldatei kopieren, die Parameter anpassen - und hoffen, dass es klappt. Das kann ich aber erst, heute am späten Nachmittag machen.
Muss ich dabei noch irgendetwas beachten?
Gruß
Stein
AW: Datei hochgeladen
02.09.2010 09:56:45
JogyB
Hallo Stein,
freut mich, dass es klappt. Beachten brauchst Du eigentlich nichts, außer beim Makro in DieseArbeitsmappe. Da habe ich Dir ja in den Kommentar geschrieben, dass ich den CodeNamen des Tabellenblatts umbenannt habe und es mit diesem Namen direkt anspreche. Du musst in der Originaldatei nun entweder den CodeNamen (Eigenschaft (Name) der Tabelle im Eigenschaftenfenster des VBE) an meinen Code oder den Code an den Codenamen in Deiner Arbeitsmappe anpassen. Ich würde ersteres machen, da aussagekräftige Namen immer besser sind als "Tabelle1" o.ä.
Gruß, Jogy
AW: Datei hochgeladen
02.09.2010 15:44:53
Stein
Hallo Jogy,
ich habe Deine Codes jetzt umgesetzt. Auch Deinen Vorschlag mit der Umbenennung des CodeNamens hat geklappt.
Ich habe auch die Parameter am Anfang des Codes in MeineArbeitsmappe (Varablendefinition und Cells(x; y)) angepasst. Jetzt hat er mir allerdings die Zellverbindungen unterhalb von "Abrechnungszeitraum von" aufgehoben und deren Inhalte gelöscht. Und damit auch die Grenzdaten. Wo muss ich Werte im Code ändern, damit er erst 6 Zeilen später damit beginnt?
Gruss Stein
AW: Datei hochgeladen
02.09.2010 15:51:33
JogyB
Hallo Stein,
die Konstante startZeile legt fest, wo er mit der Suche nach dem Datum beginnt und auch ab wo die alten Formatierungen entfernt werden. Die musst Du anpassen.
Gruß, Jogy
AW: Datei hochgeladen
02.09.2010 19:09:55
Stein
Hallo Jogy,
endlich habe ich es geschafft! Es läuft, wie es soll!
Zur Sache mit der Konstante "startZeile": Es ist schon blöd, wenn man nicht lesen kann. :-(
Deutlicher kann man die Konstanten doch nicht bezeichnen. Man sollte sie nur mal alle richtig lesen. Und damit meine ich mich selber!
Erst wollte die VBA nicht so richtig laufen: Ich konnte die Grenzwerte oder auch die Jahreszahl ändern, wie ich wollte. Aber es wurde nichts verändert. Bis ich feststellte, dass auch im Code für das Tabellenblatt noch die 3 Parameter bei den Intersect-Befehlen zu verändern waren. Seitdem ich diese angepasst hatte, funktioniert alles bestens.
Nochmals Danke für Deine Mühen und Deinen Zeitaufwand!!! Du hast mir sehr geholfen!
Gruss Stein

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige