Supportnet / Forum / Tabellenkalkulation
Zellen mittels VBA löschen
Frage
Hallo allerseits!
Ich habe eine Tabelle für einen Dienstplan erstellt. Auf dem ersten Tabellenblatt ist die Übersicht, sprich von allen Mitarbeitern die dienste. Dann gibt es noch für jeden Mitarbeiter ein eigenes Blatt, was nacher auch für die Stundenabrechnung dient. Mein Problem ist nun dieses, daß auf dem Tabellenblatt des jeweiligen Mitarbeiters die Arbeitszeit von der Übersicht reinkopiert wird mittels WENN Formel. Das klapt auch prima. Nu is es aber so dass zwischen den Uhrzeiten eine weitere Spalte steht. Im normalfall zeigt sie einen Bindestrich an. In ihr steht aber auch ZB "Urlaub". Das Problem an der Geschichte ist, dass nu in den Tabellenblättern der Mitarbeiter der Text abgeschnitten wird, da ja links und rechts in den Zellen etwas drinn steht und zwar die Formel WENN. Nur: Wenn in der mittleren Spalte Text steht dann steht links oder rechts in den Spalten keine Uhrzeit drinn und kann von daher auch überschrieben werden. Leider habe ich schon alles auf den Kopf gestellt und Excel lässt sich zu solch einer Tat nicht bewegen.
Nun habe ich mittels VBA das hier zusammengebastelt. Nur leider nicht die Lösung schlecht weg. Ich kenn mich mit VBA auch überhaupt nicht aus.
Hier der VBA Code:
Sub Überschreiben()
Dim i, Zeile As Integer
Zeile = Cells(Rows.Count, 3).End(xlUp).Row
For i = Zeile To 1 Step -1
If Cells(i, 5).Value = "Urlaub" Then
Cells(i, 4).ClearContents
Cells(i, 3).ClearContents
Cells(i, 6).ClearContents
End If
Next i
For i = Zeile To 1 Step -1
If Cells(i, 5).Value = "VoBi" Then
Cells(i, 4).ClearContents
Cells(i, 3).ClearContents
Cells(i, 6).ClearContents
End If
Next i
End Sub
Mein Tabellenblatt des jeweiligen Mitarbeiters:
A B C DEF G H IJK L
Erklärung:
Spalte A: Tag (z.B.Mo)
Spalte B: Tag (z.B.05)
Spalte C: Stundenanzeige (z.B.12)
Spalte D: Minutenazeige (z.B.30)
Spalte E: Bindestrich oder "Urlaub" "VoBi" usw
Spalte F: Stundenanzeige (z.B.12)
Spalte G: Minutenazeige (z.B.30)
Spalte H: Stundenanzeige (z.B.12)
Spalte I: Minutenazeige (z.B.30)
Spalte J: Bindestrich oder "Urlaub" "VoBi" usw
Spalte K: Stundenanzeige (z.B.12)
Spalte L: Minutenazeige (z.B.30)
Formel, welche in Spalte D bis L ist:
=WENN('Dienstplanung MKT'!C6<>"";'Dienstplanung MKT'!C6;"")
usw.
So. Nu brauch ich eben ein vernünftiges VBA Makro, dass man am besten mittels schaltfläche nach Beendigung der Eingabe in dem Haupttabellenblatt aktiviert. Was auch noch sehr fein wäre, wenn man das Makro wieder rückgängig machen kann, da es sein kann, dass Daten eingegeben wurden, das Makro benutzt wurde und dann die Daten wieder geändert werden, was im Zweifelsfalle dazu führt, dass in dem Mitarbeitertabellenblatt bei Uhrzeit keine Zeit aus der Haupttabelle übernommen wird, da das Makro die Formel gelöscht hat.
Wäre sehr erfreut wenn mir jemand helfen kann.
Gruß Jumpi
Antwort 1 von coros
Moin Jumpi,
ich hätte da eine Idee. Man könnte über eine For/Next Schleife die Daten, die Du in Deine Übersichtstabelle eingibst, in die entsprechenden Blätter der Mitarbeiter kopieren. Das würde so aussehen: Es wird der Name des Mitarbeiters ermittelt, die Daten kopiert und in das Tabellenblatt des Mitarbeiters wieder eingefügt. Danach wäre der nächste Mitarbeiter dran usw. Das ganze bis die Daten aller Mitarbeiter kopiert wurden. Dann würden die Formeln in den Zellen für die Uhrzeit usw. entfallen. Deine Zelleninhalte würden nicht mehr abgeschnitten, da ja immer nur das was in der Haupttabelle steht, also die Uhrzeit oder Urlaub oder VoBi, kopiert wird.
Um dafür aber einen Code zu erstellen, fehlen mir allerdings ein paar Angaben zum Aufbau der Tabelle, in der die Daten eingetragen werden. Wenn es Dir möglich ist, dann schicke mir doch mal bitte Deine Datei. Du kannst alle relevanten Eintragungen, die mich nichts angehen, raus löschen. Allerdings müsstest Du mir kenntlich machen, was wo in Deiner Tabelle steht. Ich würde Dir dann einen entsprechenden Code basteln.
Also wenn Du willst, schicke die Datei an meine E-Mail:coros@onlinehome.de
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
ich hätte da eine Idee. Man könnte über eine For/Next Schleife die Daten, die Du in Deine Übersichtstabelle eingibst, in die entsprechenden Blätter der Mitarbeiter kopieren. Das würde so aussehen: Es wird der Name des Mitarbeiters ermittelt, die Daten kopiert und in das Tabellenblatt des Mitarbeiters wieder eingefügt. Danach wäre der nächste Mitarbeiter dran usw. Das ganze bis die Daten aller Mitarbeiter kopiert wurden. Dann würden die Formeln in den Zellen für die Uhrzeit usw. entfallen. Deine Zelleninhalte würden nicht mehr abgeschnitten, da ja immer nur das was in der Haupttabelle steht, also die Uhrzeit oder Urlaub oder VoBi, kopiert wird.
Um dafür aber einen Code zu erstellen, fehlen mir allerdings ein paar Angaben zum Aufbau der Tabelle, in der die Daten eingetragen werden. Wenn es Dir möglich ist, dann schicke mir doch mal bitte Deine Datei. Du kannst alle relevanten Eintragungen, die mich nichts angehen, raus löschen. Allerdings müsstest Du mir kenntlich machen, was wo in Deiner Tabelle steht. Ich würde Dir dann einen entsprechenden Code basteln.
Also wenn Du willst, schicke die Datei an meine E-Mail:coros@onlinehome.de
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von Aliba
Hi Jumpi,
ich weiss ja nicht, wie viele unterschiedliche Einträge nun in diesen entsprechenden Zellen vorkommen können, aber wenn das nur die Einträge:
"-", "Urlaub", "VoBi" sein können, dann könnte man das doch auch über z.B. bedingte Formatierung lösen.
Wenn ich es richtig verstehe, ist hier der Standardeintrag "-".
Nun könnte man doch einfach hergehen und sagen:
Urlaub ist rot
VoBi ist blau
und vielleicht noch Krank ist gelb
Dann für diese entsprechenden Zellen: FORMAT - bedingte Formatierung - Zellwert ist gleich:
Urlaub
Format Muster rot, Schriftfarbe rot
dann Bedingung hinzufügen:
Zellwert ist gleich : VoBi
Format Muster blau, Schriftfarbe blau
das selbe noch für krank.
Dann hast Du in diesen Zellen entweder nichts stehen, einen Bindestrich, oder eine farbliche Kennzeichnung um welchen Eintrag es sich handelt.
Der Eintrag selbst bleibt ja bestehen, falls da noch eine Auswertung gefahren wird mit ZÄHLENWENN oder ähnlichem.
CU Aliba
ich weiss ja nicht, wie viele unterschiedliche Einträge nun in diesen entsprechenden Zellen vorkommen können, aber wenn das nur die Einträge:
"-", "Urlaub", "VoBi" sein können, dann könnte man das doch auch über z.B. bedingte Formatierung lösen.
Wenn ich es richtig verstehe, ist hier der Standardeintrag "-".
Nun könnte man doch einfach hergehen und sagen:
Urlaub ist rot
VoBi ist blau
und vielleicht noch Krank ist gelb
Dann für diese entsprechenden Zellen: FORMAT - bedingte Formatierung - Zellwert ist gleich:
Urlaub
Format Muster rot, Schriftfarbe rot
dann Bedingung hinzufügen:
Zellwert ist gleich : VoBi
Format Muster blau, Schriftfarbe blau
das selbe noch für krank.
Dann hast Du in diesen Zellen entweder nichts stehen, einen Bindestrich, oder eine farbliche Kennzeichnung um welchen Eintrag es sich handelt.
Der Eintrag selbst bleibt ja bestehen, falls da noch eine Auswertung gefahren wird mit ZÄHLENWENN oder ähnlichem.
CU Aliba
Antwort 3 von Jumpanino
Hi zusammen!
@Aliba
Danke für deinen Tip aber das is es nicht. Eine Zelle mit bedingter Formatierung umgeht nicht die beknakte Eigenschaft von Excel -> Nicht über den Zellenrand schreiben, wenn in der Nachbarzelle etwas steht. Da die Zellen um welche es geht in einer sehr kleinen Spalte ist, da ja im normalfall nur ein Bindestrich angezeigt wird hab ich eben mein Problem.
@coros
Deine Idee hört sich sehr gut an. Nahezu Perfekt, da man ja, wenn man in der Haupttabelle etwas ändert, einfach erneut das Macro laufen lassen kann. Das hört sich gut an. Ich schick dir grad mal das ganze.
Grüße Jumpi
@Aliba
Danke für deinen Tip aber das is es nicht. Eine Zelle mit bedingter Formatierung umgeht nicht die beknakte Eigenschaft von Excel -> Nicht über den Zellenrand schreiben, wenn in der Nachbarzelle etwas steht. Da die Zellen um welche es geht in einer sehr kleinen Spalte ist, da ja im normalfall nur ein Bindestrich angezeigt wird hab ich eben mein Problem.
@coros
Deine Idee hört sich sehr gut an. Nahezu Perfekt, da man ja, wenn man in der Haupttabelle etwas ändert, einfach erneut das Macro laufen lassen kann. Das hört sich gut an. Ich schick dir grad mal das ganze.
Grüße Jumpi
Antwort 4 von coros
Hi Jumpi,
Hast Du die Datei bereits geschickt? Bei mir ist jedenfalls bis jetzt nichts angekommen.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
Hast Du die Datei bereits geschickt? Bei mir ist jedenfalls bis jetzt nichts angekommen.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
Antwort 5 von Jumpanino
Hi coros
Hab se grad losgeschickt.
Wenn se nich ankam dann kannst dich auch über ICQ melden 25623190
Grüße Jumpi
Hab se grad losgeschickt.
Wenn se nich ankam dann kannst dich auch über ICQ melden 25623190
Grüße Jumpi

