Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1012to1016
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

Fehlerhafte Makros für Datenübernahme bzw. Löschen

Fehlerhafte Makros für Datenübernahme bzw. Löschen
28.09.2008 16:40:42
Bibo
Hallo EXCEL-Freunde, insbesondere VBA-Spezialisten,
in der mit Hilfe aus dem Forum erstellten, beigefügten Arbeitsmappe werden im Arbeitsblatt "Kommission_Paletten" mit den Funktionen SVerweis und Index die abhängigen Daten zum Bereich G13:G13 aus dem Arbeitsblatt "Bestand" in den Bereich A19:G246 übernommen.
Über den CommandButton "Daten der aktuellen Flashliste in Bestandsübersicht übernehmen" und das Makro Sub Lieferschein_Paletten() in Diese Arbeitsmappe des VBA-Editors werden die Werte aus "Kommission_Paletten" B9:B12 für übereinstimmende Seriennummern in die Spalten K:N des Arbeitsblatts "Bestand" übernommen.
Das klappt für das Arbeitsblatt ""Kommission_Module" auch völlig problemlos, bei der Datenübernahme aus dem Arbeitsblatt "Kommission_Paletten" in das Arbeitsblatt "Bestand" erfolgt jedoch immer ein Eintrag in der Zeile 80 (Bereich gelb markiert), dessen Zustandekommen ich mir nicht erklären kann, sogar dann, wenn der von B13:G13 abhängige Bereich A19:G246 keine Werte enthält, da B13:G13 selbst leer ist.
Als generelle Ursache der Datenübernahme scheiden "leere" Vergleichswerte in den Spalten mit den Seriennummern wohl aus, da dann ja auch alle anderen leeren Zellen in der ausgeblendeten Spalte A des Arbeitsblattes "Bestand" zu einer Datenübernahme führen müssten.
Liegt der Fehler am Makro und was müsste daran geändert werden?
Einen weiteren Problembereich stellen die Makros Sub Export_Kommission_Module() und Sub Export_Kommission_Paletten() dar, sofern sie unter EXCEL 2003 und 2007 ausgeführt werden; unter EXCEL 2000 läuft alles o.k.
Hier kommt es zu Laufzeitfehlern, die m. E. wohl mit der Bezeichnung/Nummerierung der CommandButtons zu tun haben müssten. Wie müsste der Code
ActiveSheet.Shapes("Button 2").Select
Selection.Delete
ActiveSheet.Shapes("Button 3").Select
Selection.Delete
denn abgeändert werden, um alle mitexportierten CommandButtons in der neuen Arbeitsmappe auszuwählen und zu löschen (ActiveSheet.allShapes.Select Selection.Delete?)?
Bitte helft mir, da ich jetzt nach zwei Nachmittagen rumprobieren wohl alleine nicht mehr weiterkomme!
Vielen Dank und schönen Sonntag
Bibo
https://www.herber.de/bbs/user/55703.zip

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Mehrere Commandbutton löschen
28.09.2008 16:52:00
Backowe
Hi,
ActiveSheet.DrawingObjects.Delete
Gruß Jürgen
@ Backowe wg. Commandbutton löschen
28.09.2008 17:17:37
Bibo
Hallo Backowe,
vielen Dank für Deinen Vorschlag, der auch zumindest mit EXCEL 2000 funktioniert. In der Originalmappe befinden sich allerdings oben in den Arbeitsblättern "Kommission_Module" und "Kommission_Paletten" Firmenlogos als eingefügte Objekte, die, weil sie vermutlich auch DrawingObjects sind, mit gelöscht werden. Kann man den Vorschlag noch entsprechend modifizieren?
Gruß
Bibo
AW: @ Backowe wg. Commandbutton löschen
28.09.2008 17:26:00
Daniel
HI
so zum beispiel:
die Namen der Objekte, die nicht gelöscht werden sollen, müssen in der CASE-Anweisung angegeben werden.

Sub löschen()
Dim obj As Object
For Each obj In ActiveSheet.DrawingObjects
Select Case obj.Name
Case "Firmenlogo1", "Firmenlogo2"
Case Else
obj.Delete
End Select
Next
End Sub


Gruß, Daniel

Anzeige
AW: @ Backowe wg. Commandbutton löschen
28.09.2008 17:40:39
Bibo
Hallo Daniel,
wie müsste Deine Anweisung in den bestehenden Code, den ich bis auf die von Backowe vorgeschlagene Änderung aufgezeichnet habe, eingebaut werden?

Sub Export_Kommission_Paletten()
' Export des Arbeitsblattinhalts in neue Arbeitsmappe
ScreenUpdating = False
Application.Goto Reference:="R1C1"
Sheets("Kommission_Paletten").Select
Sheets("Kommission_Paletten").Copy
ActiveSheet.Unprotect
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveSheet.DrawingObjects.Delete
Application.Goto Reference:="R1C1"
ScreenUpdating = True
End Sub


Per Makroaufzeichnung habe ich ermittelt, dass die Objekte "Picture 1" bzw. "Picture 3" heißen.
Gruß
Bibo

Anzeige
Die Selects und Selection sind überflüssig!
28.09.2008 17:53:00
Backowe
Hi,
probiere es mal so:
VBA-Code:
Sub Export_Kommission_Module()
'
' Export des Arbeitsblattinhalts in neue Arbeitsmappe
  Dim objOLE As Object
  Sheets("Kommission_Module").Copy
  With ActiveSheet
    .Unprotect
    .Range("A19:G" & .Cells(Rows.Count, "A").End(xlUp).Row).Value = _
      .Range("A19:G" & .Cells(Rows.Count, "A").End(xlUp).Row).Value
  For Each obj In .DrawingObjects
    Select Case obj.Name
      Case "Picture 1", "Picture 3"
      Case Else
        obj.Delete
    End Select
  Next
  End With
  Application.Goto Reference:="R1C1"
End Sub
Sub Export_Kommission_Paletten()
'
' Export des Arbeitsblattinhalts in neue Arbeitsmappe
  Dim objOLE As Object
  Sheets("Kommission_Paletten").Copy
  With ActiveSheet
    .Unprotect
    .Range("A19:G" & .Cells(Rows.Count, "A").End(xlUp).Row).Value = _
      .Range("A19:G" & .Cells(Rows.Count, "A").End(xlUp).Row).Value
  For Each obj In .DrawingObjects
    Select Case obj.Name
      Case "Picture 1", "Picture 3"
      Case Else
        obj.Delete
    End Select
  Next
  End With
  Application.Goto Reference:="R1C1"
End Sub
Gruß Jürgen
AW: Die Selects und Selection sind überflüssig!
Bibo

Hallo Jürgen,
hallo Daniel,
vielen Dank für Eure Unterstützung.
Die Codes von Dir lieber Jürgen funktionieren super, genau wie erhofft.
Könnt Ihr mir bei meinem anderen Problem auch helfen?

"in der mit Hilfe aus dem Forum erstellten, beigefügten Arbeitsmappe werden im Arbeitsblatt " _
Kommission_Paletten" mit den Funktionen SVerweis und Index die abhängigen Daten zum Bereich G13:G13 aus dem Arbeitsblatt "Bestand" in den Bereich A19:G246 übernommen.
Über den CommandButton "Daten der aktuellen Flashliste in Bestandsübersicht übernehmen" und das  _
Makro Sub Lieferschein_Paletten() in Diese Arbeitsmappe des VBA-Editors werden die Werte aus "Kommission_Paletten" B9:B12 für übereinstimmende Seriennummern in die Spalten K:N des Arbeitsblatts "Bestand" übernommen.
Das klappt für das Arbeitsblatt ""Kommission_Module" auch völlig problemlos, bei der Datenü _
bernahme aus dem Arbeitsblatt "Kommission_Paletten" in das Arbeitsblatt "Bestand" erfolgt jedoch immer ein Eintrag in der Zeile 80 (Bereich gelb markiert), dessen Zustandekommen ich mir nicht erklären kann, sogar dann, wenn der von B13:G13 abhängige Bereich A19:G246 keine Werte enthält, da B13:G13 selbst leer ist.
Als generelle Ursache der Datenübernahme scheiden "leere" Vergleichswerte in den Spalten mit  _
den Seriennummern wohl aus, da dann ja auch alle anderen leeren Zellen in der ausgeblendeten Spalte A des Arbeitsblattes "Bestand" zu einer Datenübernahme führen müssten.
Liegt der Fehler am Makro und was müsste daran geändert werden?"


Im Moment sehe ich als einzige, aber eigentlich unbefriedigende Möglichkeit, da sie die Ursache nicht behebt, den Code so zu ergänzen, dass er die übernommenen Eintragungen in K80:N80 des Arbeitsblatts "Bestand" einfach wieder löscht. Oder ich formatiere den Bereich mit Schriftfarbe weiß?
Was meint Ihr, könnt Ihr mir nochmals helfen?
Gruß
Bibo

AW: Die Selects und Selection sind überflüssig!
Bibo

Habe vergessen, die Frage als noch offen zu markieren.
Gruß
Bibo
Kleine Ursache, große Wirkung!
Backowe

Hi Bibo,
ich habe im Makro die Spalte A mit den Wenn-Formeln, auf die Spalte E geändert, da beide Spalten identisch sind, damit war das Problem gelöst!
VBA-Code:
Option Explicit
'überträgt die Zellinhalte des Tabellenblatts Kommission_Module
'der Spalte 2 Zeilen 9 bis 12 in Abhängigkeit zur entsprechenden
'Seriennummer in Spalte A in die Spalten 11 bis 14 des Tabellenblatts Bestand
Sub Lieferschein_Module()
Dim Quelle As Worksheet, Ziel As Worksheet
Dim lngBestZ1 As Long, lngKommZ1 As Long, i As Long, füllzeile As Variant
Set Quelle = ThisWorkbook.Worksheets("Kommission_Module")
Set Ziel = ThisWorkbook.Worksheets("Bestand")
lngBestZ1 = 2   'Beginnzeile
lngKommZ1 = 19  'Beginnzeile
With Ziel
For i = lngKommZ1 To Quelle.Cells(Quelle.Rows.Count, 1).End(xlUp).Row
  füllzeile = Application.Match(Quelle.Cells(i, 1).Value, _
    .Range(.Cells(lngBestZ1, "E"), .Cells(.Rows.Count, "E").End(xlUp)), 0) '<--- Von Spalte A auf Spalte E geändert!
  If IsNumeric(füllzeile) Then
    .Cells(füllzeile + 1, 11) = Quelle.Cells(9, 2)
    .Cells(füllzeile + 1, 12) = Quelle.Cells(10, 2)
    .Cells(füllzeile + 1, 13) = Quelle.Cells(11, 2)
    .Cells(füllzeile + 1, 14) = Quelle.Cells(12, 2)
  End If
Next
End With
End Sub
'überträgt die Zellinhalte des Tabellenblatts Kommission_Paletten
'der Spalte 2 Zeilen 9 bis 12 in Abhängigkeit zur entsprechenden
'Seriennummer in Spalte A in die Spalten 11 bis 14 des Tabellenblatts Bestand
Sub Lieferschein_Paletten()
Dim Quelle As Worksheet, Ziel As Worksheet
Dim lngBestZ1 As Long, lngKommZ1 As Long, i As Long, füllzeile As Variant
Set Quelle = ThisWorkbook.Worksheets("Kommission_Paletten")
Set Ziel = ThisWorkbook.Worksheets("Bestand")
lngBestZ1 = 2   'Beginnzeile
lngKommZ1 = 19  'Beginnzeile
With Ziel
  For i = lngKommZ1 To Quelle.Cells(Quelle.Rows.Count, 1).End(xlUp).Row
    füllzeile = Application.Match(Quelle.Cells(i, 1).Value, _
      .Range(.Cells(lngBestZ1, "E"), .Cells(.Rows.Count, "E").End(xlUp)), 0) '<--- Von Spalte A auf Spalte E geändert!
    If IsNumeric(füllzeile) Then
      .Cells(füllzeile + 1, 11) = Quelle.Cells(9, 2)
      .Cells(füllzeile + 1, 12) = Quelle.Cells(10, 2)
      .Cells(füllzeile + 1, 13) = Quelle.Cells(11, 2)
      .Cells(füllzeile + 1, 14) = Quelle.Cells(12, 2)
    End If
  Next
End With
End Sub
Gruß Jürgen
Kleine Ursache, große Wirkung! - Woran liegt es?
Bibo

Hallo Jürgen,
vielen Dank, dass Du Dich der Angelegenheit nochmals angenommen hast.
Deine Lösung beseitigt den Fehler bei der Datenübertragung, allein ich verstehe nicht weshalb!
Die identischen Werte der Spalte E in Spalte A stehen dort, damit die SVerweise in den Arbeitsblättern "Kommission_Module" und "Kommission_Paletten" auf die Werte im Tabellenblatt "Bestand" funktionieren.
Logischerweise enthalten die Zellen in Spalte A keine Werte, die in Spalte E leer sind, so z.B. in den Zeilen 40 und 41, 80 und 81, 120 und 121 usw. Warum erfolgt aber lediglich in Zeile 80 der entsprechende (nicht erwünschte) Eintrag in den Zellen K80:N80? Welche Erklärung gibt es denn hierfür?
Ich hatte mir bis zu Deinem Lösungsvorschlag damit beholfen, im Makro die Einträge im Bereich K80:N80 wieder zu löschen.
Gruß
Bibo
Dann etwas genauer!
Backowe

Hi Bibo,
die Match-Funktion reagiert auch auf Zellen mit Formeln, die leer sind. In Deinem Beispiel steht in Zelle A40:A41 keine Wenn-Formel, also wird der "entartete Datensatz" in A80 geschrieben. Löschst Du die Wenn-Formel in A80:A81 steht Dein Datensatz in A121 usw. Es muß einfach nur die Abfrage geändert werden, dann paßt es wieder.
VBA-Code:
'überträgt die Zellinhalte des Tabellenblatts Kommission_Paletten
'der Spalte 2 Zeilen 9 bis 12 in Abhängigkeit zur entsprechenden
'Seriennummer in Spalte A in die Spalten 11 bis 14 des Tabellenblatts Bestand
Sub Lieferschein_Paletten()
Dim Quelle As Worksheet, Ziel As Worksheet
Dim lngBestZ1 As Long, lngKommZ1 As Long, i As Long, Füllzeile As Variant
Set Quelle = ThisWorkbook.Worksheets("Kommission_Paletten")
Set Ziel = ThisWorkbook.Worksheets("Bestand")
lngBestZ1 = 2   'Beginnzeile
lngKommZ1 = 19  'Beginnzeile
With Ziel
For i = lngKommZ1 To Quelle.Cells(Quelle.Rows.Count, 1).End(xlUp).Row
  Füllzeile = Application.Match(Quelle.Cells(i, 1).Value, _
    .Range(.Cells(lngBestZ1, 1), .Cells(.Rows.Count, 1).End(xlUp)), 0)
  If .Cells(Füllzeile + 1, 1) <> "" Then
    .Cells(Füllzeile + 1, 11) = Quelle.Cells(9, 2)
    .Cells(Füllzeile + 1, 12) = Quelle.Cells(10, 2)
    .Cells(Füllzeile + 1, 13) = Quelle.Cells(11, 2)
    .Cells(Füllzeile + 1, 14) = Quelle.Cells(12, 2)
    .Cells(Füllzeile + 1, 15) = Füllzeile
  End If
Next
End With
End Sub
AW: Dann etwas genauer!
Bibo

Hallo Jürgen,
vielen Dank für Deine freundliche Aufklärung. So war mir zum einen die von Dir beschriebene Eigenschaft der Match-Funktion nicht bekannt und andererseits war ich mir dessen nicht bewusst, dass die Zellen A40 und A41 ohne Formeln sind. Jetzt kapier ich auch die Folge und konnte sie über try and error auch nachvollziehen.
Gruß
Bibo
Anzeige
AW: Die Selects und Selection sind überflüssig!
28.09.2008 18:29:34
Bibo
Hallo Jürgen,
hallo Daniel,
vielen Dank für Eure Unterstützung.
Die Codes von Dir lieber Jürgen funktionieren super, genau wie erhofft.
Könnt Ihr mir bei meinem anderen Problem auch helfen?

"in der mit Hilfe aus dem Forum erstellten, beigefügten Arbeitsmappe werden im Arbeitsblatt " _
Kommission_Paletten" mit den Funktionen SVerweis und Index die abhängigen Daten zum Bereich G13:G13 aus dem Arbeitsblatt "Bestand" in den Bereich A19:G246 übernommen.
Über den CommandButton "Daten der aktuellen Flashliste in Bestandsübersicht übernehmen" und das  _
Makro Sub Lieferschein_Paletten() in Diese Arbeitsmappe des VBA-Editors werden die Werte aus "Kommission_Paletten" B9:B12 für übereinstimmende Seriennummern in die Spalten K:N des Arbeitsblatts "Bestand" übernommen.
Das klappt für das Arbeitsblatt ""Kommission_Module" auch völlig problemlos, bei der Datenü _
bernahme aus dem Arbeitsblatt "Kommission_Paletten" in das Arbeitsblatt "Bestand" erfolgt jedoch immer ein Eintrag in der Zeile 80 (Bereich gelb markiert), dessen Zustandekommen ich mir nicht erklären kann, sogar dann, wenn der von B13:G13 abhängige Bereich A19:G246 keine Werte enthält, da B13:G13 selbst leer ist.
Als generelle Ursache der Datenübernahme scheiden "leere" Vergleichswerte in den Spalten mit  _
den Seriennummern wohl aus, da dann ja auch alle anderen leeren Zellen in der ausgeblendeten Spalte A des Arbeitsblattes "Bestand" zu einer Datenübernahme führen müssten.
Liegt der Fehler am Makro und was müsste daran geändert werden?"


Im Moment sehe ich als einzige, aber eigentlich unbefriedigende Möglichkeit, da sie die Ursache nicht behebt, den Code so zu ergänzen, dass er die übernommenen Eintragungen in K80:N80 des Arbeitsblatts "Bestand" einfach wieder löscht. Oder ich formatiere den Bereich mit Schriftfarbe weiß?
Was meint Ihr, könnt Ihr mir nochmals helfen?
Gruß
Bibo

Anzeige
AW: Die Selects und Selection sind überflüssig!
28.09.2008 18:45:45
Bibo
Habe vergessen, die Frage als noch offen zu markieren.
Gruß
Bibo
Kleine Ursache, große Wirkung!
28.09.2008 22:45:21
Backowe
Hi Bibo,
ich habe im Makro die Spalte A mit den Wenn-Formeln, auf die Spalte E geändert, da beide Spalten identisch sind, damit war das Problem gelöst!
VBA-Code:
Option Explicit
'überträgt die Zellinhalte des Tabellenblatts Kommission_Module
'der Spalte 2 Zeilen 9 bis 12 in Abhängigkeit zur entsprechenden
'Seriennummer in Spalte A in die Spalten 11 bis 14 des Tabellenblatts Bestand
Sub Lieferschein_Module()
Dim Quelle As Worksheet, Ziel As Worksheet
Dim lngBestZ1 As Long, lngKommZ1 As Long, i As Long, füllzeile As Variant
Set Quelle = ThisWorkbook.Worksheets("Kommission_Module")
Set Ziel = ThisWorkbook.Worksheets("Bestand")
lngBestZ1 = 2   'Beginnzeile
lngKommZ1 = 19  'Beginnzeile
With Ziel
For i = lngKommZ1 To Quelle.Cells(Quelle.Rows.Count, 1).End(xlUp).Row
  füllzeile = Application.Match(Quelle.Cells(i, 1).Value, _
    .Range(.Cells(lngBestZ1, "E"), .Cells(.Rows.Count, "E").End(xlUp)), 0) '<--- Von Spalte A auf Spalte E geändert!
  If IsNumeric(füllzeile) Then
    .Cells(füllzeile + 1, 11) = Quelle.Cells(9, 2)
    .Cells(füllzeile + 1, 12) = Quelle.Cells(10, 2)
    .Cells(füllzeile + 1, 13) = Quelle.Cells(11, 2)
    .Cells(füllzeile + 1, 14) = Quelle.Cells(12, 2)
  End If
Next
End With
End Sub
'überträgt die Zellinhalte des Tabellenblatts Kommission_Paletten
'der Spalte 2 Zeilen 9 bis 12 in Abhängigkeit zur entsprechenden
'Seriennummer in Spalte A in die Spalten 11 bis 14 des Tabellenblatts Bestand
Sub Lieferschein_Paletten()
Dim Quelle As Worksheet, Ziel As Worksheet
Dim lngBestZ1 As Long, lngKommZ1 As Long, i As Long, füllzeile As Variant
Set Quelle = ThisWorkbook.Worksheets("Kommission_Paletten")
Set Ziel = ThisWorkbook.Worksheets("Bestand")
lngBestZ1 = 2   'Beginnzeile
lngKommZ1 = 19  'Beginnzeile
With Ziel
  For i = lngKommZ1 To Quelle.Cells(Quelle.Rows.Count, 1).End(xlUp).Row
    füllzeile = Application.Match(Quelle.Cells(i, 1).Value, _
      .Range(.Cells(lngBestZ1, "E"), .Cells(.Rows.Count, "E").End(xlUp)), 0) '<--- Von Spalte A auf Spalte E geändert!
    If IsNumeric(füllzeile) Then
      .Cells(füllzeile + 1, 11) = Quelle.Cells(9, 2)
      .Cells(füllzeile + 1, 12) = Quelle.Cells(10, 2)
      .Cells(füllzeile + 1, 13) = Quelle.Cells(11, 2)
      .Cells(füllzeile + 1, 14) = Quelle.Cells(12, 2)
    End If
  Next
End With
End Sub
Gruß Jürgen
Kleine Ursache, große Wirkung! - Woran liegt es?
Bibo

Hallo Jürgen,
vielen Dank, dass Du Dich der Angelegenheit nochmals angenommen hast.
Deine Lösung beseitigt den Fehler bei der Datenübertragung, allein ich verstehe nicht weshalb!
Die identischen Werte der Spalte E in Spalte A stehen dort, damit die SVerweise in den Arbeitsblättern "Kommission_Module" und "Kommission_Paletten" auf die Werte im Tabellenblatt "Bestand" funktionieren.
Logischerweise enthalten die Zellen in Spalte A keine Werte, die in Spalte E leer sind, so z.B. in den Zeilen 40 und 41, 80 und 81, 120 und 121 usw. Warum erfolgt aber lediglich in Zeile 80 der entsprechende (nicht erwünschte) Eintrag in den Zellen K80:N80? Welche Erklärung gibt es denn hierfür?
Ich hatte mir bis zu Deinem Lösungsvorschlag damit beholfen, im Makro die Einträge im Bereich K80:N80 wieder zu löschen.
Gruß
Bibo
Dann etwas genauer!
Backowe

Hi Bibo,
die Match-Funktion reagiert auch auf Zellen mit Formeln, die leer sind. In Deinem Beispiel steht in Zelle A40:A41 keine Wenn-Formel, also wird der "entartete Datensatz" in A80 geschrieben. Löschst Du die Wenn-Formel in A80:A81 steht Dein Datensatz in A121 usw. Es muß einfach nur die Abfrage geändert werden, dann paßt es wieder.
VBA-Code:
'überträgt die Zellinhalte des Tabellenblatts Kommission_Paletten
'der Spalte 2 Zeilen 9 bis 12 in Abhängigkeit zur entsprechenden
'Seriennummer in Spalte A in die Spalten 11 bis 14 des Tabellenblatts Bestand
Sub Lieferschein_Paletten()
Dim Quelle As Worksheet, Ziel As Worksheet
Dim lngBestZ1 As Long, lngKommZ1 As Long, i As Long, Füllzeile As Variant
Set Quelle = ThisWorkbook.Worksheets("Kommission_Paletten")
Set Ziel = ThisWorkbook.Worksheets("Bestand")
lngBestZ1 = 2   'Beginnzeile
lngKommZ1 = 19  'Beginnzeile
With Ziel
For i = lngKommZ1 To Quelle.Cells(Quelle.Rows.Count, 1).End(xlUp).Row
  Füllzeile = Application.Match(Quelle.Cells(i, 1).Value, _
    .Range(.Cells(lngBestZ1, 1), .Cells(.Rows.Count, 1).End(xlUp)), 0)
  If .Cells(Füllzeile + 1, 1) <> "" Then
    .Cells(Füllzeile + 1, 11) = Quelle.Cells(9, 2)
    .Cells(Füllzeile + 1, 12) = Quelle.Cells(10, 2)
    .Cells(Füllzeile + 1, 13) = Quelle.Cells(11, 2)
    .Cells(Füllzeile + 1, 14) = Quelle.Cells(12, 2)
    .Cells(Füllzeile + 1, 15) = Füllzeile
  End If
Next
End With
End Sub
AW: Dann etwas genauer!
Bibo

Hallo Jürgen,
vielen Dank für Deine freundliche Aufklärung. So war mir zum einen die von Dir beschriebene Eigenschaft der Match-Funktion nicht bekannt und andererseits war ich mir dessen nicht bewusst, dass die Zellen A40 und A41 ohne Formeln sind. Jetzt kapier ich auch die Folge und konnte sie über try and error auch nachvollziehen.
Gruß
Bibo
Anzeige
Kleine Ursache, große Wirkung! - Woran liegt es?
29.09.2008 21:53:38
Bibo
Hallo Jürgen,
vielen Dank, dass Du Dich der Angelegenheit nochmals angenommen hast.
Deine Lösung beseitigt den Fehler bei der Datenübertragung, allein ich verstehe nicht weshalb!
Die identischen Werte der Spalte E in Spalte A stehen dort, damit die SVerweise in den Arbeitsblättern "Kommission_Module" und "Kommission_Paletten" auf die Werte im Tabellenblatt "Bestand" funktionieren.
Logischerweise enthalten die Zellen in Spalte A keine Werte, die in Spalte E leer sind, so z.B. in den Zeilen 40 und 41, 80 und 81, 120 und 121 usw. Warum erfolgt aber lediglich in Zeile 80 der entsprechende (nicht erwünschte) Eintrag in den Zellen K80:N80? Welche Erklärung gibt es denn hierfür?
Ich hatte mir bis zu Deinem Lösungsvorschlag damit beholfen, im Makro die Einträge im Bereich K80:N80 wieder zu löschen.
Gruß
Bibo
Anzeige
Dann etwas genauer!
30.09.2008 10:26:00
Backowe
Hi Bibo,
die Match-Funktion reagiert auch auf Zellen mit Formeln, die leer sind. In Deinem Beispiel steht in Zelle A40:A41 keine Wenn-Formel, also wird der "entartete Datensatz" in A80 geschrieben. Löschst Du die Wenn-Formel in A80:A81 steht Dein Datensatz in A121 usw. Es muß einfach nur die Abfrage geändert werden, dann paßt es wieder.
VBA-Code:
'überträgt die Zellinhalte des Tabellenblatts Kommission_Paletten
'der Spalte 2 Zeilen 9 bis 12 in Abhängigkeit zur entsprechenden
'Seriennummer in Spalte A in die Spalten 11 bis 14 des Tabellenblatts Bestand
Sub Lieferschein_Paletten()
Dim Quelle As Worksheet, Ziel As Worksheet
Dim lngBestZ1 As Long, lngKommZ1 As Long, i As Long, Füllzeile As Variant
Set Quelle = ThisWorkbook.Worksheets("Kommission_Paletten")
Set Ziel = ThisWorkbook.Worksheets("Bestand")
lngBestZ1 = 2   'Beginnzeile
lngKommZ1 = 19  'Beginnzeile
With Ziel
For i = lngKommZ1 To Quelle.Cells(Quelle.Rows.Count, 1).End(xlUp).Row
  Füllzeile = Application.Match(Quelle.Cells(i, 1).Value, _
    .Range(.Cells(lngBestZ1, 1), .Cells(.Rows.Count, 1).End(xlUp)), 0)
  If .Cells(Füllzeile + 1, 1) <> "" Then
    .Cells(Füllzeile + 1, 11) = Quelle.Cells(9, 2)
    .Cells(Füllzeile + 1, 12) = Quelle.Cells(10, 2)
    .Cells(Füllzeile + 1, 13) = Quelle.Cells(11, 2)
    .Cells(Füllzeile + 1, 14) = Quelle.Cells(12, 2)
    .Cells(Füllzeile + 1, 15) = Füllzeile
  End If
Next
End With
End Sub
AW: Dann etwas genauer!
Bibo

Hallo Jürgen,
vielen Dank für Deine freundliche Aufklärung. So war mir zum einen die von Dir beschriebene Eigenschaft der Match-Funktion nicht bekannt und andererseits war ich mir dessen nicht bewusst, dass die Zellen A40 und A41 ohne Formeln sind. Jetzt kapier ich auch die Folge und konnte sie über try and error auch nachvollziehen.
Gruß
Bibo
Anzeige
AW: Dann etwas genauer!
01.10.2008 21:30:58
Bibo
Hallo Jürgen,
vielen Dank für Deine freundliche Aufklärung. So war mir zum einen die von Dir beschriebene Eigenschaft der Match-Funktion nicht bekannt und andererseits war ich mir dessen nicht bewusst, dass die Zellen A40 und A41 ohne Formeln sind. Jetzt kapier ich auch die Folge und konnte sie über try and error auch nachvollziehen.
Gruß
Bibo

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige