Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Daten in anderes Blatt übernehmen VBA

Daten in anderes Blatt übernehmen VBA
Claudia
Hallo an alle zusammen,
ich habe in einer Datei, im Tabellenblatt PLANER dort in Spalte C ab Zeile 7 Kurzzeichen stehen. Die Kurzzeichen stehen für Mitarbeitername. In dieser Tabelle wird für den jeweiligen Mitarbeiter/in
- In Spalte E der Beginn einer Tätigkeit
- In Spalte G die Dauer der Tätigkeit
- In Spalte H das Ende einer Tätigkeit
eingetragen bzw. errechnet.
https://www.herber.de/bbs/user/80518.xlsx
Nun möchte ich gerne in einem neuen Tabellenblatt „MITARBEITER“ die Zeitbelastung, sich ergebend aus Spalte G, der am Projekt beteiligten Personen erfassen, am besten per VBA da sich aus dem Blatt PLANER ständig Änderungen ergeben können. Auch können neue Namen/Kurzzeichen verändert werden.
Wer kann mir bitte helfen.
Vielen Dank Gruß Claudia
Anzeige
AW: Daten in anderes Blatt übernehmen VBA
11.06.2012 14:23:31
Heiko
Hallo Claudia,
Lösungsvorschlag:

Function zeitbelastung(kürzel As String) As Single
Dim rngPlaner As Range
Dim wsPlaner As Worksheet
Dim summezeit As Single
Set wsPlaner = Worksheets("PLANER")
For Each rngPlaner In wsPlaner.UsedRange
If rngPlaner.Cells(rngPlaner.Row, 3).Value = kürzel Then _
summezeit = summezeit + CSng(rngPlaner.Cells(rngPlaner.Row, 7).Value)
Next rngPlaner
zeitbelastung = summezeit
End Function
Anwendung:
Im Blatt Mitarbeiter Zelle C4 als Formel eingeben: =zeitbelastung(A4). Bei den anderen Mitarbeitern entsprechend.
Setzt voraus, dass du die Kürzel und Klarnamen im Blatt Mitarbeiter definierst.
Grüße
Heiko
Anzeige
AW: Daten in anderes Blatt übernehmen VBA
11.06.2012 14:48:14
Claudia
Hallo Heiko,
das funktioniert schon sehr gut, vielen Dank dafür, aber kann man das ganze so erweitern, das ein Makro sich die Kürzel aus dem Blatt "PLANER" automatisch in das Blatt "MITARBEITER" holt, doppelte Kürzel löscht und die Funktion dann die entsprechende Zeitbelastung aktualisiert. Somit könnte man doch dann auch die Formel für C4 per VBA bis zum letzten Kürzel nach unten kopieren. Das habe ich wohl in meiner Frage unklar ausgedrückt.
Leider reichen meine geringen VBAKenntnissse dafür nicht aus. Ich habe den Thread deshalb noch einmal auf offen gestellt.
Danke Gruß Claudia
Anzeige
AW: Daten in anderes Blatt übernehmen VBA
11.06.2012 17:11:42
Claudia
Hallo Heiko,
vielen Dank, werds erst morgen in der Firma testen können.
Gruß Claudia
AW: Daten in anderes Blatt übernehmen VBA
11.06.2012 17:48:41
Claudia
Hallo Heiko,
eine Frage habe ich doch schon.
In meinem Beispiel wird im Tabellenblatt PLANER nur jede zweite Zeile beschrieben. Viele Kollegen schreiben aber in jeder Zeile bzw. manchmal bleibt eine oder zwei Zeilen frei und dann scheint das Makro nicht richtig zu funktionieren.
Kann man das anpassen?
Danke im Voraus Gruß Claudia
Anzeige
AW: Daten in anderes Blatt übernehmen VBA
12.06.2012 06:53:25
Heiko
Guten Morgen Claudia,
habe dein Problem nachvollziehen können. Anbei die korrigierte For ... Each- Schleife:

With wsPLaner
For Each rngPlaner In .Range("C:C")
If Len(.Cells(zeile, 3)) > 0 Then
leerzeile = 0
If InStr(1, kürzel, .Cells(zeile, 3)) = 0 Then
kürzel = kürzel & .Cells(zeile, 3) & ","
i = i + 1
End If
Else
leerzeile = leerzeile + 1
If leerzeile = MAXLEERZEILE Then Exit For
End If
zeile = zeile + 1
Next rngPlaner
End With

Ich habe eine Konstante MAXLEERZEILE eingefügt, deren Wert du verändern kannst, wenn deine User dazu neigen sollten auch mal mehr als fünf Leerzeilen einzufügen. (Aus welchem Grund auch immer).
Grüße
Heiko
Anzeige
AW: Daten in anderes Blatt übernehmen VBA
12.06.2012 07:32:57
Claudia
Hallo guten Morgen Heiko,
und wie muss MAXLEERZEILE deklariert werden? Stehe echt auf dem Schlauch?
Kannst Du nocheinmal kurz helfen?
Danke Gruß Claudia
AW: Daten in anderes Blatt übernehmen VBA
12.06.2012 07:44:39
Heiko
Im Teil der Variablendeklaration:

Dim wsPLaner As Worksheet
Dim wsMitarbeiter As Worksheet
Dim rngPlaner As Range
Dim kürzel As String
Dim arrKürzel() As String
Dim i, k As Integer
Dim zeile As Integer
Dim leerzeile As Byte
Const MAXLEERZEILE = 5
Grüße
Heiko
Anzeige
Vielen Dank Heiko o.T.
12.06.2012 08:08:41
Claudia
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige