PDA

Vollständige Version anzeigen : bestimmten Bereich speichern (VBA)


eiahalz
04.05.2009, 20:46
Hallo Forum!

Ich wende mich heute erstmals mit der Bitte um Hilfe an euch.
Ich hofe mal, dass ich mein Problem halbwegs verständlich schildern kann.
Grob gesagt, versuche ich, einen bestimmten Tabellenbereich innerhalb der Arbeitsmappe zu speichern. Klingt ja erstmal nicht besonders schwierig.

Hier mal eine kleine Beispieltabelle:
<b>Tabelle5</b><br /><br /><table border="1" cellspacing="0" cellpadding="0" style="font-family:Arial,Arial; font-size:10pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "> <colgroup><col style="font-weight:bold; width:30px; " /><col style="width:80px;" /><col style="width:80px;" /><col style="width:80px;" /><col style="width:80px;" /><col style="width:80px;" /><col style="width:80px;" /><col style="width:80px;" /><col style="width:80px;" /></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td >&nbsp;</td><td >A</td><td >B</td><td >C</td><td >D</td><td >E</td><td >F</td><td >G</td><td >H</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >1</td><td style="font-weight:bold; ">Abteilung:</td><td >Ausbildung</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >2</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >3</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >4</td><td >&nbsp;</td><td style="font-weight:bold; ">MO</td><td style="font-weight:bold; ">Di</td><td style="font-weight:bold; ">Mi</td><td style="font-weight:bold; ">Do</td><td style="font-weight:bold; ">Fr</td><td style="font-weight:bold; ">Sa</td><td style="font-weight:bold; ">So</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >5</td><td >Meier</td><td >FD</td><td >FD</td><td >FD</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >6</td><td >Schulz</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >7</td><td >M&uuml;ller</td><td >&nbsp;</td><td >&nbsp;</td><td >FD</td><td >FD</td><td >FD</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >8</td><td >Schwarz</td><td >&nbsp;</td><td >FD</td><td >FD</td><td >&nbsp;</td><td >&nbsp;</td><td >FD</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >9</td><td >Heinze</td><td >FD</td><td >FD</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >&nbsp;</td><td >FD</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >10</td><td >Ludwig</td><td >&nbsp;</td><td >&nbsp;</td><td >FD</td><td >&nbsp;</td><td >FD</td><td >&nbsp;</td><td >&nbsp;</td></tr></table> <br /><br /><span style="font-family:Arial; font-size:9pt; font-weight:bold;background-color:#ffffff; color:#000000; ">Excel Tabellen im Web darstellen &gt;&gt; </span><a style ="font-family:Arial; font-size:9pt; color:#fcf507; background-color:#800040; font-weight:bold;" href="http://www.excel-jeanie-html.de" target="_blank"> Excel Jeanie HTML 4 </a>

Der relevante Bereich ist B5:H10. Hier ist eine Wochenübersicht der Frühdienste einiger Mitarbeiter der Abteilung Ausbildung(B1) untergebracht. Mein Problem besteht nun darin, diese Werte zu sichern.
In der Firma gibt es natürlich mehrere Abteilungen (z. B. Logistik u. Verwaltung). In Zelle B1 kann zwischen diesen Abteilungen gewählt werden. Je nach Auswahl ändern sich die Einträge in der Tabelle. Für die Abteilungen Logistik und Verwaltung werden entsprechend andere Mitarbeiter mit wieder anderen Frühdiensten aufgelistet.

Hier das Problem: Wenn in B1 eine andere Abteilung ausgewählt wird, soll zuvor der Bereich B5:H10 irgendwie gesichert werden, damit die dort abgelegten Werte wieder verfügbar sind, wenn irgendwann später die Abteilung Ausbildung nochmals ausgewählt wird.

Auf Grund der Tatsache das die Orginaltabelle keine Wochenübersicht sondern eine Jahresübersicht zeigt und dazu auch noch die Abteilungen ein paar mehr Mitarbeiter haben, sollen nur die wirklich relevanten Werte gesichert werden.
Mein Ansatz bisher: Alle Zellen mit "FD" im Bereich B5:H10 finden, deren Adressen der feststellen und diese in einen anderen Tabellenblatt ablegen.
Ungefähr so:

Sub Speichern()
Dim Bereich as Range, Zelle as Range, i as long, Abteilung as String
Set Bereich = Worksheets(1).Range("B5:H10")
Abteilung = Worksheets(1).Cells(2,1).Value
i = 1
For Each Zelle in Bereich
If Zelle.Value = "FD" Then
Worksheets(Abteilung).Cells.Value(i,1) = Zelle.Address
i = i + 1
End If
Next Zelle

End Sub


Anhand der abgelegten Adressen könnte man die FD-Einträge der entsprechenden Abteilungen wieder rekonstruieren.
Nun ja... - funktioniert auch halbwegs. Jedoch erscheint mir dieser Weg reichlich unelegant.
Vielleich kann mir jemand von euch einen anderen Lösungsansatz aufzeigen.

Über Hilfe, Hinweise und Tipps würde ich mich riesig freuen.


Gruß
Eiahalz

BoskoBiati
04.05.2009, 21:12
Hallo Eiahalz,

ich habe ein kleines Verständnisproblem:
In Zelle B1 kann zwischen diesen Abteilungen gewählt werden. Je nach Auswahl ändern sich die Einträge in der Tabelle
Woher kommen diese neuen Einträge?

jinx
05.05.2009, 04:57
Moin, eiahalz,

sieht nach einer Pivottabelle aus, die ein Seitenfeld besitzt, über welches die Anzeige gesteuert wird - vielleicht über Ansicht/Ansicht anpassen einen Versuch starten...