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

Formeln bei VBA-Datenübernahme ignorieren

Formeln bei VBA-Datenübernahme ignorieren
01.06.2009 00:53:10
Sascha
Offensichtlich gab es bei meinem vorigen Beitrag probleme in der Übermittlung bzw. in der Darstellung im Forum.
Da ich immer noch eine Lösung benötige, schreibe ich mein Anliegen hier erneut ein:

Hallöchen Ihr Profis,
folgender VBA-Code funktioniert nach erweiterung leicht fehlerhaft:
Private Sub Worksheet_Activate()
'Zielblatt muss immer die höchste Nr. haben!
Dim i As Long
Dim j As Long
On Error GoTo Fehler
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row).ClearContents
ActiveSheet.Columns("C").ClearContents
ActiveSheet.Columns("D").ClearContents
ActiveSheet.Columns("E").ClearContents
ActiveSheet.Columns("F").ClearContents
ActiveSheet.Columns("G").ClearContents
ActiveSheet.Columns("H").ClearContents
ActiveSheet.Columns("AA").ClearContents
ActiveSheet.Columns("AB").ClearContents
With ActiveSheet
For i = 1 To ActiveWorkbook.Sheets.Count - 1 Step 1
Sheets(i).Range("C206:C386").Copy
.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("N206:N386").Copy
.Cells(Rows.Count, "C").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("L206:L386").Copy
.Cells(Rows.Count, "D").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("I206:I386").Copy
.Cells(Rows.Count, "E").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("J206:J386").Copy
.Cells(Rows.Count, "F").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("G4:G184").Copy
.Cells(Rows.Count, "G").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("D206:D386").Copy
.Cells(Rows.Count, "H").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("V209:V380").Copy
.Cells(Rows.Count, "AA").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("AC209:AC380").Copy
.Cells(Rows.Count, "AB").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Next i
End With
Fehler:
Application.CutCopyMode = False
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
ActiveSheet.Range("A1").Select
End Sub
In die Spalten AA und AB werden die Daten aus den angegebenen Bereichen "V209:V389" und "AC209: _
AC389" kopiert.
In den Zellen "V209:V389" sind Daten eines Filters eingetragen. Einige Zellen haben dabei  _
keinen Eintrag. (auch nicht 0), was dazu führt, dass er mir alle Daten direkt untereinander schreibt.
In den Zellen "AC209:AC389" ist jeweils eine Formel hinterlegt:
=WENN(V236="";"";X236-Y236-Z236-AA236-AB236)
Der VBA-Filter übernimmt diese Formel als leere Zelle mit in den bereich AB:AB, wodurch leere  _
Zellen entstehen und die Daten nicht zuzuordnen sind.
Ich wüsste gerne, wie ich dem Filter sage, dass er zeilen mit einer Formel derren Ergebniss ""  _
ist ignoriert und nicht mit übernimmt.
Hat jemand eine Idee für mich?
Vielen dank für eure Mühen und ein frohes Pfingstfest,
LG
Sascha


LG
Sascha

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

Betreff
Datum
Anwender
Anzeige
AW: Formeln bei VBA-Datenübernahme ignorieren
01.06.2009 11:39:53
Hajo_Zi
Hallo Sascha,
mein Beitrag war noch zu sehen aber ohne Inhal.
Da kannst Du nicht mit einmal kopieren sondern mußt eine Schleife machen und jeden Wert einzeln übertragen.
Ich habe jetzt hier kein Excel und kann den Code nicht ändern.
Gruß Hajo
Anzeige
AW: Formeln bei VBA-Datenübernahme ignorieren
01.06.2009 13:41:08
Sascha
Hallo Hajo,
herzlichen Dank für den Tip.
Werde mir mal anschauen, wie ich eine Schleife programmiere.
Bin ma gespannt, ob ich das gebacken bekomme *ggg*
LG
Sascha
AW: Formeln bei VBA-Datenübernahme ignorieren
01.06.2009 15:20:35
Sascha
Hallo Ihr Spezialisten,
von einem Bekannten habe ich jetzt den Tip bekommen, die leeren Zellen nach dem Kopieren in das Tabellenblatt zu löschen. Daraufhin habe ich einen kurzen VBA-Code geschrieben, der dies in meinen Augen ermöglichen sollte, jedoch tut er das nicht.
Der Abgeänderte Code sieht jetzt wie folgt aus:

Private Sub Worksheet_Activate()
'Zielblatt muss immer die höchste Nr. haben!
Dim i As Long
Dim j As Long
On Error GoTo Fehler
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row).ClearContents
ActiveSheet.Columns("C").ClearContents
ActiveSheet.Columns("D").ClearContents
ActiveSheet.Columns("E").ClearContents
ActiveSheet.Columns("F").ClearContents
ActiveSheet.Columns("G").ClearContents
ActiveSheet.Columns("H").ClearContents
ActiveSheet.Columns("AA").ClearContents
ActiveSheet.Columns("AB").ClearContents
With ActiveSheet
For i = 1 To ActiveWorkbook.Sheets.Count - 1 Step 1
Sheets(i).Range("C206:C386").Copy
.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("N206:N386").Copy
.Cells(Rows.Count, "C").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("L206:L386").Copy
.Cells(Rows.Count, "D").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("I206:I386").Copy
.Cells(Rows.Count, "E").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("J206:J386").Copy
.Cells(Rows.Count, "F").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("G4:G184").Copy
.Cells(Rows.Count, "G").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("D206:D386").Copy
.Cells(Rows.Count, "H").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Sheets(i).Range("V209:V380").Copy
.Cells(Rows.Count, "AA").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
On Error Resume Next  'ignoriere Fehler, wenn keine leeren Zellen vorhanden sind
Selection.SpecialCells(xlCellTypeBlanks).Delete xlUp
On Error GoTo Fehler
Sheets(i).Range("W209:W380").Copy
.Cells(Rows.Count, "AB").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
On Error Resume Next  'ignoriere Fehler, wenn keine leeren Zellen vorhanden sind
Selection.SpecialCells(xlCellTypeBlanks).Delete xlUp
On Error GoTo Fehler
Sheets(i).Range("AC209:AC380").Copy
.Cells(Rows.Count, "AC").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
On Error Resume Next  'ignoriere Fehler, wenn keine leeren Zellen vorhanden sind
Selection.SpecialCells(xlCellTypeBlanks).Delete xlUp
On Error GoTo Fehler
Next i
End With
Fehler:
Application.CutCopyMode = False
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
ActiveSheet.Range("A1").Select
End Sub


Weiß jemand, was ich hier falsch gemacht habe? Er arbeitet nämlich immer noch mit den leeren zellen, sprich, er löscht sie mir nicht raus nach der Übernahme.
Vielen dank für eure Mühen,
LG
Sascha

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige