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

Ergänzung, Zeile aus Bereich neues TB Bereich ein

Ergänzung, Zeile aus Bereich neues TB Bereich ein
28.05.2017 14:54:12
Gisela
Hallo,
oder auch Hallo Hajo,
Hajo hat mir heute schon sehr viel weitergeholfen mit folgendem Makro:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 And UCase(Target) = "NEU" Then
With Worksheets("Zieltabelle")
Application.EnableEvents = False
Dim Loletzte As Long
Loletzte = IIf(IsEmpty(.Cells(Rows.Count, 2)), .Cells(Rows.Count, 2).End(xlUp). _
Row,  _
.Rows.Count) + 1
Range("b" & Target.Row & ":I" & Target.Row).Copy .Range("B" & Loletzte)
Range("b" & Target.Row & ":I" & Target.Row).Delete
Application.EnableEvents = True
End With
End If
End Sub

Der jeweilige Tabellenblattname (Zieldatei) steht in Spalte J.
Was muss ich ändern. Kann mir bitte jemand helfen.
Hatte es in meinem ersten Tread so beschrieben, ist aber von mir auch bei der Antwort von Hajo übersehen worden.
Vielen Dank und Grüße
Gisela

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ergänzung, Zeile aus Bereich neues TB Bereich ein
28.05.2017 15:01:54
Hajo_Zi
Hallo Gisela,
warum neuen Beitrag?
With Worksheets(Range("j" & Target.row)

AW: Ergänzung, Zeile aus Bereich neues TB Bereich ein
28.05.2017 15:22:15
Gisela
Hallo Hajo,
danke für deine Geduld. Mit dem neuen Beitrag war wohl ein Denkfehler.
Habe die Zeile durch
With Worksheets(Range("j" & Target.row)
ersetzt und erhalte eine Fehlermeldung "Typen unverträglich".
In Spalte 8 steht jeweils die Änderung ("neu") und in der gleichen Zeile in Spalte 10 der jeweilige Tabellenname.
Hast du noch eine Möglichkeit oder habe ich etwas falsch gemacht?
Grüße
Gisela
keine Datei
28.05.2017 15:32:41
Hajo_Zi
Hallo Gisela,
ich kann dazu nichts sagen, was wohl daran liegt das ich die Datei nicht sehe.
Gruß Hajo
Anzeige
AW: keine Datei
28.05.2017 15:44:37
Gisela
Hallo Hajo,
in dieser Beispieldatei hatte ich als Beispiel zwei Tabellenblätter in Spalte J angegeben.
https://www.herber.de/bbs/user/113836.xlsm
Vielleicht ist das hilfreich.
Grüße
Gisela
Fehlermeldung "Typen unverträglich"
28.05.2017 17:22:05
Gisela
Hallo, an alle, die sich mit meinem Problem beschäftigen.
Ausgangsbeschreibung meines Problems:
In einer Tabelle werden sogenannte Grunddaten gesammelt. Undzwar in den Spalten B2:I.
In der Mappe gibt es weitere Tabellenblätter. Jeder Zeile wird im TB Grunddaten, Spalte J ein TB-Name zugeordnet.
Wenn in den Grunddaten der in der Spalte H bestehende Eintrag „alt“ geändert wird in „neu“, soll der Bereich dieser Zeile (Spalte B,C,D,E,F,G,H,I) ausgeschnitten und dann in dem in Zelle J benannten TB eingetragen werden, allerdings in die erste freie Zeile des Bereichs B34-B80.
Die verbleibenden Zeilen im TB Grunddaten sollen nach oben aufrücken.
in dieser Beispieldatei habe ich als Beispiel zwei Tabellenblätter in Spalte J angegeben.
https://www.herber.de/bbs/user/113836.xlsm
In der Beispieltabelle habe ich vermerkt, dass dann keine Übernahme erfolgt, wenn Bereich belegt ist. Es soll ein Hinweis durch MsgBox erfolgen.
Hajo war so nett und hilfreich, mir diese Hilfe hier zu erstellen:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 And UCase(Target) = "NEU" Then
With Worksheets(Range("j" & Target.Row))
Application.EnableEvents = False
Dim Loletzte As Long
Loletzte = IIf(IsEmpty(.Cells(Rows.Count, 2)), .Cells(Rows.Count, 2).End(xlUp).Row,  _
_
.Rows.Count) + 1
Range("b" & Target.Row & ":I" & Target.Row).Copy .Range("B" & Loletzte)
Range("b" & Target.Row & ":J" & Target.Row).Delete
Application.EnableEvents = True
End With
End If
End Sub
Leider erhalte ich die Fehlermeldung „Typen unverträglich“.
Kann mir bitte jemand helfen, den Fehler zu korrigieren.
Vielen Dank und Grüße
Gisela
Anzeige
AW: Rows.Count + 1
28.05.2017 15:27:24
Gerd
Hallo
Variablen erst mitten im Code zu deklarieren, bringt nichts.
Wenn LoLetzte mal tatsächlich die unterste Zeile der Tabelle + 1 zurückgibt,
führt die Weiterverarbeitung als Zeilenvariable zu einem Laufzeitfehler.
Von daher kann man das IIf-Gedöns weglassen.
Gruß Gerd
AW: Rows.Count + 1
28.05.2017 15:38:39
Hajo_Zi
Hallo Gerd,
dann überlasse ich Dir mal den Beitrag. Du kennst Dich da ja besser aus.
Hallo Gisela,
halte Dich also an Gerd, er kennt sich da besser aus.
Gruß Hajo
Fehlermeldung Rows.Count + 1
28.05.2017 18:39:20
Gisela
Hallo Gerd,
da ich nur Kenntnisse mit dem Recorder habe, kann ich deinen Hinweis selber nicht umsetzen.
Wenn du die Lösung meines Problems kennst, wäre es nett, mir zu helfen. Vielen Dank Gisela
Ausgangsbeschreibung meines Problems:
In einer Tabelle werden sogenannte Grunddaten gesammelt. Undzwar in den Spalten B2:I.
In der Mappe gibt es weitere Tabellenblätter. Jeder Zeile wird im TB Grunddaten, Spalte J ein TB-Name zugeordnet.
Wenn in den Grunddaten der in der Spalte H bestehende Eintrag „alt“ geändert wird in „neu“, soll der Bereich dieser Zeile (Spalte B,C,D,E,F,G,H,I) ausgeschnitten und dann in dem in Zelle J benannten TB eingetragen werden, allerdings in die erste freie Zeile des Bereichs B34-B80.
Die verbleibenden Zeilen im TB Grunddaten sollen nach oben aufrücken.
in dieser Beispieldatei habe ich als Beispiel zwei Tabellenblätter in Spalte J angegeben.
https://www.herber.de/bbs/user/113836.xlsm
In der Beispieltabelle habe ich vermerkt, dass dann keine Übernahme erfolgt, wenn Bereich belegt ist. Es soll ein Hinweis durch MsgBox erfolgen.
Hajo war so nett und hilfreich, mir diese Hilfe hier zu erstellen:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 And UCase(Target) = "NEU" Then
With Worksheets(Range("j" & Target.Row))
Application.EnableEvents = False
Dim Loletzte As Long
Loletzte = IIf(IsEmpty(.Cells(Rows.Count, 2)), .Cells(Rows.Count, 2).End(xlUp).Row,  _
_
_
.Rows.Count) + 1
Range("b" & Target.Row & ":I" & Target.Row).Copy .Range("B" & Loletzte)
Range("b" & Target.Row & ":J" & Target.Row).Delete
Application.EnableEvents = True
End With
End If
End Sub
Leider erhalte ich die Fehlermeldung „Typen unverträglich“.
Kann mir bitte jemand helfen, den Fehler zu korrigieren.
Vielen Dank und Grüße
Gisela
Anzeige
AW: Fehlermeldung Rows.Count + 1
28.05.2017 20:24:07
Gisela
Hallo Werner,
herzlichen Dank für deine Hilfe.
Funktioniert bis auf eine Kleinigkeit hervorragend. Ein einzelner Tabellenname wird nicht akzeptiert. Kommt immer wieder Fehlermeldung "Index ausserhalb des gültigen Bereichs" und markiert "With Worksheets(Range("J" & Target.Row).Value)".
Hier einige TB-Namen die alle funktionieren: "Neu", "BauLU8", MetallLU20" und andere. Nur beim Tabellennamen HoGa20 bringt er die Fehlermeldung. Habe diesen TB_Namen schon in andere Zeilen/Spalte J, gesetzt. Schreibweise kontrolliert. Immer die gleiche Fehlermeldung.
Hast du eine Idee woran das liegen kann oder muss ich mir einen anderen TB-Namen aussuchen?
Viele Grüße
Gisela
Anzeige
getestet ... keine Fehlermeldung
29.05.2017 08:30:16
Matthias
Hallo Gisela
Ich habe es mit dem BlattNamen: HoGa20 getestet.
Es funktioniert ohne Probleme.
Mit dieser Datei:
https://www.herber.de/bbs/user/113847.xlsm
Status auf neu setzen und es funktioniert wie gewünscht.
Gruß Matthias
Herzlichen Dank an alle Helfer, LG Gisela
29.05.2017 08:53:51
Gisela
o.T.
Gerne und Danke für die Rückmeldung.
29.05.2017 11:22:42
Werner
Hallo Gisela,
dann ist das Problem mit dem Blattnamen wohl gelöst.
Gruß Werner

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige