MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 27.09.2011, 22:20   #1
romario1
Neuer Benutzer
Neuer Benutzer
Standard VBA - Suchen ob Zelle nicht leer und dann Zeile kopieren

Ich bräuchte Hilfe bei einem Problem in Excel 2007 mit VBA.

Ich will überprüfen, ob die Zellen in Spalte B nicht leer sind, und wenn in einer Zelle ein Wert eingetragen ist, soll die ganze Zeile kopiert werden und nach der letzten beschriebenen Zeile wieder eingefügt werden. Zusätzlich soll der Wert von Zelle B in Zelle A der kopierten Zeile geschrieben werden. Es soll dann in Zelle A der Wert stehen, der vorher in Zelle B gestanden ist, in Zelle B soll danach nichts mehr stehen.

Mit einer einzelnen Zelle kann ich es ausführen, und die Zeile in die nächste Zeile kopieren, aber bei mehreren Zellen, die nicht vorgegeben sind weiß ich nicht wie ich das machen soll.

Kann mir jemand dabei helfen?
romario1 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 28.09.2011, 06:59   #2
mücke
MOF Koryphäe
MOF Koryphäe
Ärger Crosspost Herber ...

... nur mit dem Namen Michael!

__________________

Gruß Dirk

Ich helfe gerne … im Rahmen meiner Möglichkeiten
mücke ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 28.09.2011, 08:31   #3
stranded
Strahlen

UPS ... sorry, jetzt nochmal verändert:

Hi romario1,
versuch mal:

Code:

Sub pruefen()
ende = ActiveSheet.UsedRange.Rows.Count
For Each zelle In Tabelle1.Range("B1:B" & ende)
On Error Resume Next
    If Not IsEmpty(zelle) Then
        
        zelle.EntireRow.Select
        Selection.Copy
        Rows(ActiveSheet.UsedRange.Rows.Count + 1).Select
        ActiveSheet.Paste
        Tabelle1.Cells(ActiveSheet.UsedRange.Rows.Count, 1).Value = zelle.Value
        Tabelle1.Cells(ActiveSheet.UsedRange.Rows.Count, 2).Value = ""

    End If
    
Next zelle
End Sub
Gruß stranded

Geändert von stranded (28.09.2011 um 09:08 Uhr).
 
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 29.09.2011, 00:25   #4
romario1
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Zitat: von stranded Beitrag anzeigen

UPS ... sorry, jetzt nochmal verändert:

Hi romario1,
versuch mal:

Code:

Sub pruefen()
ende = ActiveSheet.UsedRange.Rows.Count
For Each zelle In Tabelle1.Range("B1:B" & ende)
On Error Resume Next
    If Not IsEmpty(zelle) Then
        
        zelle.EntireRow.Select
        Selection.Copy
        Rows(ActiveSheet.UsedRange.Rows.Count + 1).Select
        ActiveSheet.Paste
        Tabelle1.Cells(ActiveSheet.UsedRange.Rows.Count, 1).Value = zelle.Value
        Tabelle1.Cells(ActiveSheet.UsedRange.Rows.Count, 2).Value = ""

    End If
    
Next zelle
End Sub
Gruß stranded


Vielen Dank für deine Hilfe. Ich habe auch mit der Hilfe eines Bekannten das Problem lösen können.
romario1 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 29.09.2011, 09:25   #5
stranded
Standard

Hi romario,
wenn Du ein Thema öffnest und Hilfe möchtest wärs fair wenn Du das Thema als erledigt setzt wenn du keine Hilfe mehr brauchst - sonst macht sich jemand Mühe und es war völlig um sonst.

stranded
 
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.10.2011, 22:37   #6
romario1
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Zitat: von stranded Beitrag anzeigen

Hi romario,
wenn Du ein Thema öffnest und Hilfe möchtest wärs fair wenn Du das Thema als erledigt setzt wenn du keine Hilfe mehr brauchst - sonst macht sich jemand Mühe und es war völlig um sonst.

stranded

Entschuldige bitte, dass habe ich nicht gewußt. Bei meinen Beiträgen ist mir diese Funktion nicht aufgefallen.

Zu meinem ersten Beitrag will ich noch eine Zusatzfunktion einfügen. Wie mache ich das ganze mehr oder weniger rückgängig? Also, wenn ich einer der Zeilen, die ich nach unten "befördert" habe in Spalte B den Wert lösche, soll der Wert aus Spalte A wieder in der Zeile in Spalte A eingefügt werden, die geändert wurde. Dann soll die Zeile unten wieder gelöscht werden, in der gerade der Wert aus Spalte B gelöscht wurde.

Zum besseren Verständnis ein Beispiel:

Spalte A_____Spalte B_____Spalte C .....
a100___________________1.10.2011
a102___________________2.8.2011
a099___________________23.7.2011
xxxxxx (Letzte beschriebene Zeile)
a075________a102_______2.8.2011

Jetzt wird in Spalte B etwas eingetragen:

Spalte A______Spalte B______Spalte C .....
a100_________a105________1.10.2011
a102_____________________2.8.2011
a099_____________________23.7.2011
xxxxxx (Letzte beschriebene Zeile)
a075_________a102________2.8.2011

Das führt zu:

Spalte A______Spalte B______Spalte C .....
a105_____________________1.10.2011
a102_____________________2.8.2011
a099_____________________23.7.2011
xxxxxx (Letzte beschriebene Zeile)
a075_________a102________2.8.2011
a100_________a105________1.10.2011

Jetzt will ich den Wert "a105" aus Spalte B, der letzten Zeile wieder löschen. Dann soll der Wert "a100" aus Spalte A derselben Zeile in die Spalte A der Zeile geschrieben werden, aus der dieser Wert ursprünglich kommt:

Spalte A_____Spalte B_____Spalte C .....
a100___________________1.10.2011
a102___________________2.8.2011
a099___________________23.7.2011
xxxxxx (Letzte beschriebene Zeile)
a075________a102_______2.8.2011

Ich hätte mir überlegt, dass ich die Zeile, die nach "unten" geschickt wird, auch noch in eine eigene Tabelle kopiert wird, um einen Vergleich zu haben, nachdem "unten" der Wert aus Spalte B gelöscht wurde. Um bei meinem Beispiel zu bleiben:
Wenn ich den Wert "a105" aus Spalte B der letzten Zeile lösche, brauche ich einen Vergleich, in welche Zeile "oben" ich dann den Wert "a100" aus der letzten Zeile einfügen soll.

Nur weiß ich noch nicht, wie ich dann die Werte, der Zeilen, die ich in eine eigene Tabelle kopiert habe, mit den Werten aus der Ursprungstabelle vergleichen soll. Und zuerst muss ich noch den Wert aus Spalte der Ursprungstabelle in der neuen Tabelle suchen und dann den jeweiligen Wert der Spalte B mit dem Wert der Spalte A der Ursprungstabelle in der oberen Zeile vergleichen soll.

Hat dafür jemand einen Lösungsansatz?

romario1
romario1 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.11.2012, 10:23   #7
Unregistfdariertt342
Standard

ich suche sowas ähnliches...

ich möchte gerne, dass die Spalte A durchsucht wird. Alle nicht leeren Zellen, soll dann kopiert und nacheinandern (ohne freie Zellen) in Spalte B kopiert werden.

Könnt ihr mir helfen? Vielen Dank

lg

Markus
 
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.07.2017, 07:49   #8
Mexcele
Neuer Benutzer
Neuer Benutzer
Standard

Hallo zusammen,

erstmal wollte mich beim Forum allgemein bedanken da hier schon viel gelesen habe und viel gelernt. Habe nun aber ein Problem bei dem ich nicht weiter komme:

Ich nutze das Makro von romario1 um aus unserem Bestelltool die Bestellten Artikel zu extrahieren (Filter geht leider nicht).

Gibt es eine Möglichkeit die kopierten Zeilen nicht unten anzufügen sondern in ein neues Tabellenblatt? (Tabelle2) Idealerweise erstellt das Makro die Tabelle2 automatisch.

Vielen Dank schon mal für eure Hilfe!!

Grüße
Mexcele
Mexcele ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.07.2017, 08:20   #9
hary
MOF Guru
MOF Guru
Standard

Moin
Mal auf blauen Dunst und ungetestet! Meinst du so? Evtl. "Tabelle1" in deinen richtigen Blattnamen aendern.
Code:

Dim ende As Long
Dim zelle As Range
If IsError(Evaluate("Tabelle2!A1")) Then
Worksheets.Add after:=Worksheets("Tabelle1")
End If
ende = Worksheets("Tabelle1").UsedRange.Rows.Count
For Each zelle In Worksheets("Tabelle1").Range("B1:B" & ende)
    If Not IsEmpty(zelle) Then
        zelle.EntireRow.Copy Worksheets("Tabelle2").Cells(Worksheets("Tabelle2").UsedRange.SpecialCells(xlLastCell).Row + 1, 1)
    End If
Next zelle
gruss hary
hary ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:13 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.