Microsoft Excel

Herbers Excel/VBA-Archiv

VBA - Zelle kopieren bis Wert einer Zelle null ist

Betrifft: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Schulze Bisping
Geschrieben am: 19.08.2008 08:39:35

Halli Hallo,

ich bin ziemlicher Neuling in VBA. Daher würde ich euch bitten mir bei meiner Fragestellung zu helfen und zwar wie folgt: Ich möchte aus einer Tabelle aller Zellen kopieren, bis der Wert einer Zelle 0 annimmt. Diesen bestimten Bereich möchte ich in einer neuen Datei abspeichern.

Eine weitere Frage, die bezieht sich zwar nicht direkt auf VBA, sondern auf Excel. Ich habe eine Drop-Down-Liste erstellt über Daten, Gültigkeit etc. Kann ich so eine Liste tabellenblätterübergreifend erstellen oder imer nur auf das jeweilige Tabellenblatt.

Gruss Melchior

  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Tino
Geschrieben am: 19.08.2008 09:26:39

Hallo,
ein Vorschlag, verwende den Autofilter und filtere deine Tabelle nach >0.

Dieses Makro Kopiert die Sichtbaren Zellen in eine neue Excel Datei.

  Sub Test()
  Dim Bereich As Range
 
  Application.ScreenUpdating = False
   
  Set Bereich = Tabelle1.UsedRange.SpecialCells(xlCellTypeVisible)
    
  With Workbooks.Add
     Bereich.Copy
     .ActiveSheet.Range("A1").PasteSpecial
     Application.CutCopyMode = False
  End With
  Application.ScreenUpdating = True
  End Sub




Gruß Tino

www.VBA-Excel.de




  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Schulze Bisping
Geschrieben am: 19.08.2008 09:57:59

Hi Tino,

meine Tabelle besteht aus drei Tabellenblätter und ich möchte aus dem Tabellenblatt "Ausgabe" die entsprechenden Sachen in eine neue Datei kopieren.
Mit dem Autofilter geht nicht, ich müsste da schon irgendwie ein Makro (schliefe?) einbauen.

gruss melchior


  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Tino
Geschrieben am: 19.08.2008 11:02:30

Hallo,
wie wäre es hiermit, den Bereich wo deine 0 vorkommt musst du noch anpassen und auch den Tabellennamen den du verarbeiten möchtest, im Beispiel wird die Spalte A durchsucht.

Sub Test()
  Dim lngRow As Long
  
  Application.ScreenUpdating = False
   'Name der Tabelle
  Sheets("Tabelle1").Copy
   
  With ActiveSheet
  
      
   For lngRow = .Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
    'Zu durchsuchende Bereich anpassen, wo deine 0 vorkommt
    If .Cells(lngRow, "A") = 0 Then
    
     .Rows(lngRow).Delete
    End If
     
     
   
   Next lngRow
  Application.CutCopyMode = False
  
  End With
  Application.ScreenUpdating = True
  End Sub



Gruß Tino

www.VBA-Excel.de




  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Schulze Bisping
Geschrieben am: 19.08.2008 11:11:19

Hi Tino,

klappt soweit super. Besten dank :-)

aber wie mache ich das, wenn der Wert 0 nicht jedes mal an der gleichen Stelle iun der Spalte ist, z.b. einmal A20, ein anderes mal A40. und das dann wirklich nur der teil bis zur null kopiert wird.
das habe ich nun leider noch nicht ganz verstanden. :-(


gruss melchior


  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Tino
Geschrieben am: 19.08.2008 11:37:57

Hallo,
versuche mal den Code zu erklären.

Zuerst wird die Tabelle in eine neue Arbeitsmappe kopiert.

Nun erfolgt die Prüfung und das Löschen der Zeilen, dies macht man immer von unten nach oben, nie
von oben nach unten.

For lngRow = .Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
Hier wird die letzte Zeile ermittelt und die Schleife läuft in einer schritten Rückwerts.

If .Cells(lngRow, "A") = 0 Then
Hier wird geprüft ob die Zelle in Spalte A den Wert 0 aufweist.

Ergibt die abfrage True (Wahr) wird die Zeile gelöscht.
.Rows(lngRow).Delete

Diese Schleife läuft nun bis lngRow den Wert 1 hat, also bei der Zeile 1 angekommen ist.

Wenn ich mir aber deine Frage durchlese, möchtest du Prüfen wo in Spalte A die erste 0 auftaucht und den Nachfolgenden Bereich löschen?!

Dies müsste man so machen.

Sub Test()
  Dim lngRow As Long
  
  Application.ScreenUpdating = False
   'Name der Tabelle
  Sheets("Tabelle1").Copy
   
  With ActiveSheet
  
      
   For lngRow = 1 To .Cells.SpecialCells(xlCellTypeLastCell).Row
    'Zu durchsuchende Bereich anpassen, wo deine 0 vorkommt
    If .Cells(lngRow, "A") = 0 Then
    
     .Rows(lngRow & ":" & .Cells.SpecialCells(xlCellTypeLastCell).Row).Delete
     Exit For
    End If
     
     
   
   Next lngRow
  Application.CutCopyMode = False
  
  End With
  Application.ScreenUpdating = True
  End Sub



Gruß Tino

www.VBA-Excel.de




  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Schulze Bisping
Geschrieben am: 19.08.2008 12:06:11

Hi Tino,

klappt super :-) allerbesten dank ;-)

eine letzte frage habe ich noch für mich persönlich: welchen code muss ich eingeben, wen ich die den bereich in einer vorgefertigen datei abspeichern will. z.b. zieldatei: BlankoFormular ?

Gruss Melchior


  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Tino
Geschrieben am: 19.08.2008 12:27:37

Hallo,
müsste so gehen, habe dies aber jetzt nicht getestet.

Sub Test()
  Dim lngRow As Long
  
  Application.ScreenUpdating = False
  'Datei öffnen
  Workbooks.Open "C:\MeineDatei.xls"
  'Tabelle in diese Datei kopieren
  ThisWorkbook.Sheets("Tabelle1").Copy Before:=Workbooks("MeineDatei.xls").Sheets(1)
  With Workbooks("MeineDatei.xls").ActiveSheet
  
      
   For lngRow = 1 To .Cells.SpecialCells(xlCellTypeLastCell).Row
   
    If .Cells(lngRow, "A") = 0 Then
      .Rows(lngRow & ":" & .Cells.SpecialCells(xlCellTypeLastCell).Row).Delete
     Exit For
    End If
   
   Next lngRow
  End With
  Application.ScreenUpdating = True
  End Sub



Gruß Tino


  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Schulze Bisping
Geschrieben am: 19.08.2008 13:27:15

Hi Tino,

klappt ja soweit ja fast perfekt. Nur irgendwie löscht der beim letzeten schritt so ziemlich alles, auch selbst wenn wenn ich spalte A ein Wert steht. Mit dem Kopieren und Öffnen einer neuen Datei klappt wirklich super, nur irgendwie bei der Schleife hakt es meiner Meinung leider noch etwas. Sorry dass ich soviel aufwand mache :-(

Gruss Melchior


  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Schulze Bisping
Geschrieben am: 19.08.2008 11:14:55

Hi Tino,

tut mir wirkich leid, ich bin wohl echt ein nerviger patient :-(

wenn ich es so richtig verstanden habe, wird bei deinem vorschalg zunächst das entsprechende datenblatt unter einer anderen datei gespeichert und dann erst durchsucht.

ich habe mich vielleicht etwas unglücklich ausgedrückt, erst müsste nömlich die operation "suche Wert 0 und kopiere alle oberen Werte in eine neue Datei".

gruss melchior


  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Tino
Geschrieben am: 19.08.2008 11:45:02

Hallo,
na dann machen wir es so rum, aber deine Daten gehen in Deiner Datei verloren,
sobald du diese speicherst.


Alle Zeilen die in A eine 0 haben.

Sub Test1()
    Dim lngRow As Long
    
    Application.ScreenUpdating = False
     'Name der Tabelle
     
    With ActiveSheet
    
        
     For lngRow = .Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
      'Zu durchsuchende Bereich anpassen, wo deine 0 vorkommt
      If .Cells(lngRow, "A") = 0 Then
      
       .Rows(lngRow).Delete
      End If

     Next lngRow
     .Copy
    End With
    Application.ScreenUpdating = True
End Sub







Bis zum ersten Auftreten einer 0

Sub Test2()
  Dim lngRow As Long
  
  Application.ScreenUpdating = False
   'Name der Tabelle
 
   
  With ActiveSheet
  
      
   For lngRow = 1 To .Cells.SpecialCells(xlCellTypeLastCell).Row
    'Zu durchsuchende Bereich anpassen, wo deine 0 vorkommt
    If .Cells(lngRow, "A") = 0 Then
    
     .Rows(lngRow & ":" & .Cells.SpecialCells(xlCellTypeLastCell).Row).Delete
     Exit For
    End If
 
   Next lngRow

    .Copy
  End With
  Application.ScreenUpdating = True
 End Sub




Gruß Tino

www.VBA-Excel.de




  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Schulze Bisping
Geschrieben am: 19.08.2008 14:06:44

Hi Tino,

Ich bziehe mich im folgenden auf deinen vorherigen Eintrag. Klappt ja soweit ja fast perfekt, nur irgendwie löscht der beim letzeten schritt so ziemlich alles, auch selbst wenn wenn ich spalte A ein Wert steht. Mit dem Kopieren und Öffnen einer neuen Datei klappt wirklich super, nur irgendwie bei der Schleife hakt es meiner Meinung leider noch etwas. Sorry dass ich soviel aufwand mache :-(

Gruss Melchior


  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Tino
Geschrieben am: 19.08.2008 14:12:25

Hallo,
könntest du mal eine Beispielmappe mit den Werte die so in der Spalte A vorhanden sind hochladen.
(auch Formatierungen beachten)

Gruß Tino


  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Schulze Bisping
Geschrieben am: 19.08.2008 15:17:29

Hi Tino,

anbei mal eine grobe Übersicht.
Kann es vielleicht sein, weil ich die Wert in dieser tabelle per Verknüpfung einfüge, dass es deshalb nicht klappt. Muss ich die werte alternativ per makro einfügen lassen?

https://www.herber.de/bbs/user/54724.xls

gruss melchior


  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Tino
Geschrieben am: 19.08.2008 15:52:43

Hallo,
habe es mal an deiner Tabelle getestet,
mit Formel die als Ergebnis 0 haben und Zellen wo ich von Hand die 0 eingetragen habe, beide Versionen funktionieren?


Gruß Tino


  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Schulze Bisping
Geschrieben am: 19.08.2008 16:18:43

Hi

klappt wirklich wunderbar. Dann liegt es bei meiner Orginaldatei wohl daran, dass eine Verknüpfung mittels Formel hinterlegt ist. Muss ich das irgednwie umdeichseln.

Erstmal besten dank für deine Arbeit und Mühe. Hat wunderbar geklappt.

Gruss Melchior


  

Betrifft: AW: VBA - Zelle kopieren bis Wert einer Zelle null ist von: Tino
Geschrieben am: 19.08.2008 16:30:35

Hallo,
du kannst mit

Cells.Value = Cells.Value


zuvor alle Werte aus Formeln fest eintragen, dann sind die Formeln aber verschwunden.

Gruß Tino


 

Beiträge aus den Excel-Beispielen zum Thema "VBA - Zelle kopieren bis Wert einer Zelle null ist"