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

Erfolglose Fehlersuche

Erfolglose Fehlersuche
Sibylle
Hallo,
die Tabelle1 soll auf mehrere Vertreter (siehe Spalte C) aufgeteilt werden.
Option Explicit

Sub aufteilen()
Dim lngZ, lngLZ, lngAktZeile As Long
' lngZ = ZeilenNr, lngAktZeile = Aktuelle ZeilenNr
Dim intAnzahl, ints, intAnzahlTB, intAnzahlSpalten As Integer
' intAnzahl =      , ints =   intAnzahlTB = AnzahlTabellenblätter
' intAnzahlspalten
Dim strAktBlatt, strName As String
' strAktBlatt = Blattname, strName =
Dim objNeuBlatt As Worksheet
' Objekt Neues Blatt
'Löschen der Tabellen 2 bis n falls nötig
If Sheets.Count > 1 Then 'falls mehr als 1 Tabelle vorhanden
Application.DisplayAlerts = False ' Meldung ausschalten
For intAnzahlTB = Sheets.Count To 2 Step -1
Sheets(intAnzahlTB).Delete
Next intAnzahlTB
Application.DisplayAlerts = True
End If
strAktBlatt = ActiveSheet.Name
'Name der Originaltabelle
lngLZ = Cells(Rows.Count, 3).End(xlUp).Row
'ZeilenNr der letzten belegten Zeile in Spalte C
For lngZ = 2 To lngLZ    'von 2 bis zur letzten Zeile
If Cells(lngZ, 3)  "" Then
intAnzahl = Application.WorksheetFunction.CountIf _
(Range("C" & lngZ + 1 & ":C" & lngLZ), Range("C" & lngZ))
' zählt Anzahl Datensätze je Vertreter
If intAnzahl = 0 Then
Set objNeuBlatt = Worksheets.Add(after:=Sheets(Sheets.Count))
'ein Neues Blatt wird eingefügt
objNeuBlatt.Name = Sheets(strAktBlatt).Cells(lngZ, 3)
' mit dem Blattname des Vertreters
For ints = 1 To Sheets(strAktBlatt).Cells(1, Columns.Count).End(xlToLeft).Column
'von 1 bis letzte Spalte des Originals
objNeuBlatt.Cells(1, ints) = Sheets(strAktBlatt).Cells(1, ints)
'übertragen der Überschriften in die neue Tabelle
Next ints
End If
End If
Next lngZ
'________________________________________________________________
intAnzahlSpalten = Sheets(strAktBlatt).Cells(1, Columns.Count).End(xlToLeft).Column
For lngZ = 2 To lngLZ
'von 2 bis letzte ZeilenNr
strName = Sheets(strAktBlatt).Cells(lngZ, 3)
lngAktZeile = Sheets(strName).Cells(Rows.Count, 3).End(xlUp).Row + 1
Sheets(strName).Range(Sheets(strName).Cells(lngAktZeile, 1), Sheets(strName).Cells(lngAktZeile,  _
intAnzahlSpalten)).Value = _
Sheets(strAktBlatt).Range(Sheets(strAktBlatt).Cells(lngZ, 1), Sheets(strAktBlatt).Cells(lngZ,  _
intAnzahlSpalten)).Value
Next lngZ
Sheets(strAktBlatt).Activate
Cells(1, 1).Select
End Sub

Leider bisher erfolglos. Es wird kein neues Tabellenblatt für Wunsch angelegt.
Wo liegt der Denkfehler?
Über Hinweise würde ich mich sehr freuen
Gruß
Sibylle
Tabelle1
 ABC
1NameVornameVertreter
2MaierAHuber
3MüllerBWunsch
4SchulzCHuber
5AbeleDZuber
6SauerEHuber
7WalterFWunsch
8SchöneGWunsch

Tabellendarstellung in Foren Version 5.46


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

Betreff
Benutzer
Anzeige
AW: Erfolglose Fehlersuche
20.10.2011 14:51:11
guentherh
Hallo Sibylle
nach erzeugen des Blatts Zuber wechselst Du nicht zurück in die Tabelle1
damit ist Zelle C6 bis C8 leer statt huber und wunsch
Gruß,
Günther
AW: Erfolglose Fehlersuche
20.10.2011 15:07:06
Sibylle
Hallo Günther,
ich danke für den Hinweis.
An welcher Stelle im Programm sollte ich eine Änderung vornehmen und wie?
Gruß
Sibylle
AW: Erfolglose Fehlersuche
21.10.2011 08:11:40
guentherh
Hallo Sibylle,
musste weg und konnte meine Korrektur nicht mehr in den Code schreiben.
Hab ich jetzt nachgeholt, und noch einen Punkt gefunden:
der Zähler für die verbleibenden Zeilen erhält bei der letzten Zeile 1, da von Zeile 9 bis 8 gezählt wird.
Damit kommt beim letzten Vertreter nie eine 0 zustande. Hier die Korrekturen:
intAnzahl = Application.WorksheetFunction.CountIf _
(Range("C" & lngZ + 1 & ":C" & lngLZ + 1), Range("C" & lngZ)) ' beachte: lngLZ + 1
' zählt Anzahl Datensätze je Vertreter
und
Next ints
Sheets(strAktBlatt).Activate
'aus dem neuen Blatt ins ursprüngliche wechseln
End If
Hier der Komplette Code
Option Explicit

Sub aufteilen()
Dim lngZ, lngLZ, lngAktZeile As Long
' lngZ = ZeilenNr, lngAktZeile = Aktuelle ZeilenNr
Dim intAnzahl, ints, intAnzahlTB, intAnzahlSpalten As Integer
' intAnzahl =      , ints =   intAnzahlTB = AnzahlTabellenblätter
' intAnzahlspalten
Dim strAktBlatt, strName As String
' strAktBlatt = Blattname, strName =
Dim objNeuBlatt As Worksheet
' Objekt Neues Blatt
'Löschen der Tabellen 2 bis n falls nötig
If Sheets.Count > 1 Then 'falls mehr als 1 Tabelle vorhanden
Application.DisplayAlerts = False ' Meldung ausschalten
For intAnzahlTB = Sheets.Count To 2 Step -1
Sheets(intAnzahlTB).Delete
Next intAnzahlTB
Application.DisplayAlerts = True
End If
strAktBlatt = ActiveSheet.Name
'Name der Originaltabelle
lngLZ = Cells(Rows.Count, 3).End(xlUp).Row
'ZeilenNr der letzten belegten Zeile in Spalte C
For lngZ = 2 To lngLZ    'von 2 bis zur letzten Zeile
If Cells(lngZ, 3)  "" Then
intAnzahl = Application.WorksheetFunction.CountIf _
(Range("C" & lngZ + 1 & ":C" & lngLZ + 1), Range("C" & lngZ))
' zählt Anzahl Datensätze je Vertreter
If intAnzahl = 0 Then
Set objNeuBlatt = Worksheets.Add(after:=Sheets(Sheets.Count))
'ein Neues Blatt wird eingefügt
objNeuBlatt.Name = Sheets(strAktBlatt).Cells(lngZ, 3)
' mit dem Blattname des Vertreters
For ints = 1 To Sheets(strAktBlatt).Cells(1, Columns.Count).End(xlToLeft).Column
'von 1 bis letzte Spalte des Originals
objNeuBlatt.Cells(1, ints) = Sheets(strAktBlatt).Cells(1, ints)
'übertragen der Überschriften in die neue Tabelle
Next ints
Sheets(strAktBlatt).Activate
'aus dem neuen Blatt ins ursprüngliche wechseln
End If
End If
Next lngZ
'________________________________________________________________
intAnzahlSpalten = Sheets(strAktBlatt).Cells(1, Columns.Count).End(xlToLeft).Column
For lngZ = 2 To lngLZ
'von 2 bis letzte ZeilenNr
strName = Sheets(strAktBlatt).Cells(lngZ, 3)
lngAktZeile = Sheets(strName).Cells(Rows.Count, 3).End(xlUp).Row + 1
Sheets(strName).Range(Sheets(strName).Cells(lngAktZeile, 1), Sheets(strName).Cells( _
lngAktZeile, _
intAnzahlSpalten)).Value = _
Sheets(strAktBlatt).Range(Sheets(strAktBlatt).Cells(lngZ, 1), Sheets(strAktBlatt).Cells(lngZ,  _
_
intAnzahlSpalten)).Value
Next lngZ
Sheets(strAktBlatt).Activate
Cells(1, 1).Select
End Sub

beste Grüße,
Günther
Anzeige
Besten Dank
21.10.2011 11:10:56
Sibylle
Hallo Günther,
besten Dank für die Korrekturen.
Mir fällt die Fehlersuche noch recht schwer. Ich freue mich sehr über Deine Unterstützung.
Einen schönen Tag.
Gruß
Sibylle

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige