Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1192to1196
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

noch eine Bedingung einfügen

noch eine Bedingung einfügen
Raudenbusch
Hallo,
ich kenne mich mit VBA leider überhaupt nicht aus.
Ich habe eine Excel-Datei. Auf dem 1. Blatt ist die Haupttabelle (hier mit 2011 bezeichnet) mit:
Name des Mitarbeiters / Verdienst / Abrechnungsmonat / noch mehr (aber uninteressante Spalten)
Für jeden Mitarbeiter gibt es ein neues Blatt mit dessen Namen.
Nun möchte ich, dass wenn der Name des Mitarbeiters in Spalte A dem Namen des Tabellenblattes entspricht, die Zeile in das Blatt kopiert wird (soweit bin ich mit Hilfe von viel google schon gekommen).
Ich möchte aber, dass dies nur kopiert wird, wenn gleichzeitig in Spalte C (=Abrechnungsmonat) Januar steht. (und genau da komme ich nicht mehr weiter).
Hier was ich gebastelt habe.

Sub Sortieren()
Dim iRow As Long
Dim iSheet As Integer
'Abfrage: Wenn der durch die Schleife angesprochene Name nicht dem Namen "2011" entspricht,
dann Daten löschen
For iSheet = 1 To Worksheets.Count
If Sheets(iSheet).Name  "2011" Then _
Sheets(iSheet).Range("A2:N65536").ClearContents
Next
For iRow = 2 To Sheets("2011").Range("A65536").End(xlUp).Row
   'Schleife zum Prüfen ob für den Mitarbeitername in Spalte A ein Tabellenblatt vorhanden
ist
For iSheet = 1 To Worksheets.Count
 'Abfrage: Wenn der durch die Schleife angesprochene Name gleich dem Namen in
der angesprochenen Zeile in Spalte A Und gleichzeitig in Spalte C „Januar“ steht,
dann...
If (LCase(Sheets(iSheet).Name) = LCase(Sheets("2011").Cells(iRow, 1) Then
'...die Zeile in das entsprechende Tabellenblatt kopieren
Sheets("2011").Rows(iRow).Copy _
Sheets(iSheet).Cells(Sheets(iSheet).Range("A65536").End(xlUp).Offset(1, 0).Row, 1)
'Abfrage Ende
End If
Next
Next
End Sub

Erläuterungen in kursiv
Fett = Was noch ergänzt werden muss
Schon mal vielen Dank für eure Hilfe!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: noch eine Bedingung einfügen
31.12.2010 10:30:25
Beverly
Hi,
versuche es mal mit dieser erweiterten Zeile:
If (LCase(Sheets(iSheet).Name) = LCase(Sheets("2011").Cells(iRow, 1) And Sheets("2011").Cells(iRow, 3) = "Januar" Then



AW: noch eine Bedingung einfügen
31.12.2010 15:50:52
Raudenbusch
vielen lieben Dank!
Funktioniert erste Sahne :)
AW: noch eine Bedingung einfügen
31.12.2010 16:17:08
Raudenbusch
Ich hätte noch eine zweite Frage.
Ich habe es jetzt so geändert, dass nicht die ganze Zeile kopiert wird, sondern von der Zeile immer nur die Spalten A bis O
Die Zeile sieht bei mir dann so aus.
'...die Spalten A bis O der Zeile in das entsprechende Tabellenblatt kopieren
Sheets("2011").Range(Cells(iRow, 1), Cells(iRow, 15)).Copy _
Sheets(iSheet).Cells(Sheets(iSheet).Range("A65536").End(xlUp).Offset(1, 0).Row, 1)
Jetzt habe ich folgendes Problem:
- bin ich im Hauptblatt (also 2011) und starte das Makro läuft alles
- bin ich aber in einem anderen Blatt und starte dort das Makro bekomme ich den Fehler
Laufzeitfehler 1004: Anwendungs- oder Objektdefinierter Fehler
Ist jetzt kein wirklich großes Problem, würde nur gerne verstehen was falsch läuft und wie ich es "richtig" mache.
Schon mal vielen Dank für eure Mühe
Anzeige
AW: noch eine Bedingung einfügen
31.12.2010 19:00:36
Beverly
Hi,
deine Zeile muss so heißen:
Sheets("2011").Range(Sheets("2011").Cells(iRow, 1), Sheets("2011").Cells(iRow, 15) _
).Copy _
Sheets(iSheet).Cells(Sheets(iSheet).Range("A65536").End(xlUp).Offset(1, 0).Row, 1)

Du musst dich bei jedem Codeteil, in dem du dich auf ein bestimmtes Tabellenblatt beziehst, dieses auch explizit benennen.


Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige