Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
644to648
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
644to648
644to648
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fehler beim kopieren in neue Tabelle

Fehler beim kopieren in neue Tabelle
28.07.2005 15:27:52
Peter
Hallo,
ich erstelle aus einer Spalte der Quelltabelle neue Tabellen.
-soweit OK -
Ich finde den Fehler beim kopieren des Quellinhaltes in die neu erstellte Tabelle nicht.
Wer kann helfen
Danke Peter
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
On Error Resume Next
Dim TabAnlegen As Boolean
Dim VorhTab                 'Abfrage ob Tab. vorhanden
Dim ZI                      'ZellInhalt Quelltabelle
Dim ShQ                     'Quelltabelle mit Eintragungen
Dim ShVL                    'Tabellenvorlage
Dim iRow                    'letzte Zeile
Set ShQ = Sheets("Quelle")
Set ShVL = Sheets("Vorlage")
ZI = ShQ.Cells(Target.Row, 2).Value
iRow = Sheets(ZI).Cells(Rows.Count, 3).End(xlUp).Row + 1
If ZI <> "" Then TabAnlegen = False
For Each VorhTab In ActiveWorkbook.Sheets
If VorhTab.Name = ZI Then
'Quellinhalt kopieren wenn Tabelle vorhanden
Sheets(ZI).Cells(iRow, 3) = ShQ.Cells(Target.Row, 3)
TabAnlegen = True
Exit For
End If
Next
'Tabelle anlegen wenn nicht vorhanden
If TabAnlegen = False Then
ShVL.Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = ZI
'Quellinhalt in erstellte Tabelle kopieren
Sheets(ZI).Cells(iRow, 3) = ShQ.Cells(Target.Row, 3)   'Fehler <<<<
'Sheets(ZI).Cells(3, 3) = ShQ.Cells(Target.Row, 3)     'OK <<<<<<<<
End If
ShQ.Activate
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler beim kopieren in neue Tabelle
29.07.2005 07:52:24
Erich
Hallo Peter,
in deinem Code sehe ich mehrere Probleme:
1.
Mit "On Error Resume Next" verhinderst du, dass dich VBA zur Laufzeit des Programms auf Fehler aufmerksam macht. Diese Anweisung sollte man so nicht einsetzen. (Sicher gibt es dafür auch viele Verwendungsmöglichkeiten, oft verbunden mit einer Fehlerbehandlung.)
Wenn du diese Anweisung rausnimmst, wird VBA einen Fehler in der Zeile
iRow = Sheets(ZI).Cells(Rows.Count, 3).End(xlUp).Row + 1
melden, wenn das Blatt Sheets(ZI) noch nicht existiert. Momentan wird der Fehler einfach übergangen, und iRow erhält keinen Wert zugewiesen, ist also 0. Das führt später zu dem Fehler in der Zeile
Sheets(ZI).Cells(iRow, 3) = ShQ.Cells(Target.Row, 3)
Dann sollte der Zelle Sheets(ZI).Cells(0, 3) ein Wert zugewiesen werden.
2.
Die Zeile
iRow = Sheets(ZI).Cells(Rows.Count, 3).End(xlUp).Row + 1
steht weit oben im Programm, bevor sicher ist, dass das Blatt Sheets(ZI) existiert. VORHER müsstest du die Existenz des Blatts prüfen. Wenn das Blatt neu angelegt wird, muss iRow nicht berechnet werden, der Wert 1 ist ja bekannt.
3.
Was willst du mit der Zeile
If ZI "" Then TabAnlegen = False
erreichen? In deinem Programm wird dann ein neues Blatt angelegt versucht, ihm einen leeren Namen zuzuweisen. Das geht aber nicht und führt zu einem Fehler, das neue Blatt behält den Namen "Tabelle..". (Auch diesen Fehler überdeckst du mit "On Error Resume Next".)
Was soll geschehen, wenn in Spalte C noch kein Blattname steht oder gerade eingegeben wird? (Eine Möglichkeit wäre, dem neuen Blatt einen festen Namen (etwa ""dummy") zu geben.)
4.
Soweit ich das sehe, soll das Programm mit
Sheets(ZI).Cells(iRow, 3) = ShQ.Cells(Target.Row, 3)
den Wert in Spalte C der Eingabezeile in Sheets(ZI) übertragen, ob Sheets(ZI) schon existierte oder neu anzulegen ist. Es ist zwar kein Fehler, aber kaum sinnvoll, diese Zeile mehr als einmal im Programm zu haben.
5.
Unklar ist mir geblieben, was du mit dem Programm eigentlich erreichen möchtest. Willst du wirklich bei Eingabe eines Wertes in Spalte A einer neuen Zeile die dann noch leere Zelle in Spalte C auf ein anderes Blatt übertragen?
Da ich vermute, dass du dein Programm selbst überarbeiten möchtest, poste ich hier keine überarbeitete Version mit. Wenn du das möchtest, kann ich das gern noch tun.
Viel Erfolg und Grüße aus Kamp-Lintfort
Erich
Anzeige
AW: Fehler beim kopieren in neue Tabelle
29.07.2005 08:06:30
Erich
Hallo Peter,
mir ist noch aufgefallen, dass ich im 1. Punkt etwas Falsches geschrieben habe. In den beiden letzten Sätze hatte ich schreiben sollen:
Momentan wird der Fehler einfach übergangen, und iRow erhält keinen Wert zugewiesen, ist also eine Variable ohne Wert vom Typ Variant.. Das führt später zu dem Fehler in der Zeile
Sheets(ZI).Cells(iRow, 3) = ShQ.Cells(Target.Row, 3)
Dann sollte der Zelle Sheets(ZI).Cells(?, 3) ein Wert zugewiesen werden - ? steht für die nicht belegte Variable iRow.
Das führt mich zu einer weiteren Empfehlung:
Es ist meist besser, bei der Variablendeklaration den Typ anzugeben, also etwa

Dim TabAnlegen As Boolean
Dim VorhTab As Worksheet    'Abfrage ob Tab. vorhanden
Dim ZI As String            'ZellInhalt Quelltabelle
Dim ShQ As Worksheet        'Quelltabelle mit Eintragungen
Dim ShVL As Worksheet       'Tabellenvorlage
Dim iRow As Long            'letzte Zeile

Grüße aus Kamp-Lintfort
Erich
Anzeige

112 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige