Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  zeilen verschieben

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   zeilen verschieben (2086 mal gelesen)
thato
Mitglied



Sehen Sie sich das Profil von thato an!   Senden Sie eine Private Message an thato  Schreiben Sie einen Gästebucheintrag für thato

Beiträge: 66
Registriert: 20.04.2007

erstellt am: 07. Okt. 2009 15:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hallo,
über eine bedingte formatierung lasse ich die ganze zeile "durchstreichen" wenn eine zelle in der zeile "erledigt" stehen hat.
die ganze durchgestrichene zeile soll jetzt aber aus dem tabellenblatt verschwinden und in ein anderes tabellenblatt übertragen werden. wie bekomme ich das hin?
danke schonmal im voraus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 07. Okt. 2009 16:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für thato 10 Unities + Antwort hilfreich

Hallo thato,

wie lautet denn die Formel bzw. Bedingung Deiner Formatierung? Sind da $-Zeichen drin? Spiel mal mit den Dollars ein wenig herum...

Allgemein: In Tabellenblatt Quelle die Zeile markieren (Zeilennummer links anklicken) - Strg + X (ausschneiden) - ins Register Ziel wechseln, entsprechende Zeile anwählen, Strg + V (einfügen).

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8017
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 07. Okt. 2009 19:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für thato 10 Unities + Antwort hilfreich

Die bedingte Formatierung hat ja auch nur das Hilfswort woran sie sich klammert ;-)
Code:
Für jede Zeile im Quellblatt von der letzten bis zur ersten also rückwärts
    Guck, ob der Suchbegriff in der Zeile steht
        wenn ja dann
          kopier die Zeile,
          geh zum Zielblatt
          füg sie dort in die erste freie Zeile ein
          lösch die Zeile aus dem Quellblatt
und mach mit der nächsten Zeile weiter


die .Find-Methode kann auch mit Platzhaltern arbeiten

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

System-Info | Excel -Suche | RuA-Suche | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

thato
Mitglied



Sehen Sie sich das Profil von thato an!   Senden Sie eine Private Message an thato  Schreiben Sie einen Gästebucheintrag für thato

Beiträge: 66
Registriert: 20.04.2007

erstellt am: 07. Okt. 2009 20:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

danke paulchen, aber händisch wollt ich das nicht machen 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

thato
Mitglied



Sehen Sie sich das Profil von thato an!   Senden Sie eine Private Message an thato  Schreiben Sie einen Gästebucheintrag für thato

Beiträge: 66
Registriert: 20.04.2007

erstellt am: 07. Okt. 2009 20:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

danke runkelruebe. so in etwa hab ich mir das vorgestellt. jetzt muss ich nur noch den quellcode schreiben 
mal sehen ob ich das morgen hinbekomme...

gehts eigentlich auch ohne makro???

wie kann ich denn die abfrage ob das makro aktiviert werden soll beim öffnen der datei ausstellen?
kann ich das makro aktivieren durch drücken der enter-taste?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8017
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 07. Okt. 2009 20:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für thato 10 Unities + Antwort hilfreich

N'Abend,

>> so in etwa hab ich mir das vorgestellt. jetzt muss ich nur noch den quellcode schreiben mal sehen ob ich das morgen hinbekomme...

Fang mal an, das Gerüst steht ja oben.

>> gehts eigentlich auch ohne makro???

ohne Makro weiß ich nicht, ich hab's aber auch nicht versucht ;-)

>> wie kann ich denn die abfrage ob das makro aktiviert werden soll beim öffnen der datei ausstellen?

es ist nicht das Makro, sondern die Makros und zwar alle, die in den zukünftig zu öffnenden Datei drin sind. Es ist also eine Systemeinstellung, nicht dateiabhängig. Die Makrosicherheitsstufe auf niedrig zu setzen, empfehle ich daher ausdrücklich nicht, fremde Makros können böse Dinge tun ;-)
Du könntest es aber in den Excel-Optionen einstellen.

>> kann ich das makro aktivieren durch drücken der enter-taste?

Dafür könntest Du das SelectionChange-Ereignis nutzen, nicht empfohlen, da es bei jedem Wechsel der Selection anspringt, es sei denn, man schränkt den Bereich (Target) ein.
Du kannst Makros ein Tastenkürzel zuweisen oder sie mit (vorher anzulegende) buttons verknüpfen oder Du suchst Dir ein anderes Ereignis aus, das Dir besser paßt oder Du rufst den MakroDialog mit ALT+F8 auf.

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

System-Info | Excel -Suche | RuA-Suche | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

thato
Mitglied



Sehen Sie sich das Profil von thato an!   Senden Sie eine Private Message an thato  Schreiben Sie einen Gästebucheintrag für thato

Beiträge: 66
Registriert: 20.04.2007

erstellt am: 08. Okt. 2009 09:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

oje...hab mich mal an der find methode probiert...

Dim suchtext As String

For i = 1 To 250
Sheets("LOP").Select
Range("E" & i).Select
    If suchtext = "erledigt" Then
        Do
            Cells.Find(What:=suchtext, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:= _
                xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) _
                .Activate
        Loop
    End If
Next

bin ich zu blöde, oder warum findet er "erledigt" nicht???

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

thato
Mitglied



Sehen Sie sich das Profil von thato an!   Senden Sie eine Private Message an thato  Schreiben Sie einen Gästebucheintrag für thato

Beiträge: 66
Registriert: 20.04.2007

erstellt am: 08. Okt. 2009 09:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

achso...wie gehe ich denn von hinten nach vorne vor???

mit einer for schleife? also for i = 250 to 1?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8017
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 08. Okt. 2009 09:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für thato 10 Unities + Antwort hilfreich

Moin,

for i = 250 to 1 step -1

Dann hast Du If suchtext = "erledigt"

Wie soll das wahr werden, wenn Du die Variable suchtext ja nirgendwo zuweist?

Sheets.Activate tut's auch, ist aber nicht zwingnd erforderlich, das aktivieren mußt Du erst bei dem Teil mit dem Einfügen. .Paste geht nur ins aktive sheet.

Geh mal den code schrittweise mit F8 durch, blend Dir das Lokalfenster mit ein, dann wirst Du schnell dazu kommen, wo was nicht läuft und warum.
Versuch als ersten Schritt damit anzufangen, von unten nach oben zu laufen und Dir den Zellinhalt ausgeben zu lassen.
Da bei Dir ja scheinbar die Spalte feststeht, ist es einfacher. (Cells haben ein Value)
Ich hab in der ganzen Zeile gesucht, daher das .Find als Vorschlag. Außerdem suche ich mir die letzte belegte Zeile mit .Find. Das sind beides "nice-to-have-Dinge", nicht zwingend notwendig 

Grundsätzliches: Ganz oben ein Option Explicit rein, dann fallen Schreibfehler und Nichtdeklartionen besser auf.

Bis später 

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

System-Info | Excel -Suche | RuA-Suche | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

thato
Mitglied



Sehen Sie sich das Profil von thato an!   Senden Sie eine Private Message an thato  Schreiben Sie einen Gästebucheintrag für thato

Beiträge: 66
Registriert: 20.04.2007

erstellt am: 08. Okt. 2009 10:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

so jetzt ist später... ;o)
habe versucht mal deine hinweise umzusetzen. leider ist es bei dem versuch geblieben.
habe das suchwort jetzt mal explizit in eine zelle geschrieben und versucht so den suchtext zuzuweisen. allerdings bekomme ich ne fehlermeldung. was ist falsch???

Option Explicit
Dim suchtext, i

Public Sub test()
Sheets("LOP").Select
suchtext = Range(1, 9).Value
For i = 25 To 1 Step -1

If Worksheets("LOP").Cells(i, 5).Value = suchtext Then
End If
Next

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 08. Okt. 2009 10:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für thato 10 Unities + Antwort hilfreich

Hallo thato,
Zitat:
allerdings bekomme ich ne fehlermeldung...
An welcher Stelle im Code? Was steht in der Fehlermeldung drin?

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

thato
Mitglied



Sehen Sie sich das Profil von thato an!   Senden Sie eine Private Message an thato  Schreiben Sie einen Gästebucheintrag für thato

Beiträge: 66
Registriert: 20.04.2007

erstellt am: 08. Okt. 2009 11:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

die methode range für das objekt _global ist fehlgeschlagen

an der stelle suchtext = ...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

thato
Mitglied



Sehen Sie sich das Profil von thato an!   Senden Sie eine Private Message an thato  Schreiben Sie einen Gästebucheintrag für thato

Beiträge: 66
Registriert: 20.04.2007

erstellt am: 08. Okt. 2009 11:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

habs nochmal einfacher probiert.
mein problem ist, dass ich nicht cells(i,5) auswählen möchte, sindern die ganze zeile i
wie mache ich das denn?

Sub test()
Sheets("LOP").Select
For i = 25 To 1 Step -1
    If Cells(i, 5).Value = "erledigt" Then
    Cells(i, 5).Select
   
    End If
Next
End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 08. Okt. 2009 11:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für thato 10 Unities + Antwort hilfreich

Vermutung: hier.
Code:
suchtext = Range(1, 9).Value
Das kann VBA nicht. Ins Blaue hinein: Range(Cells(1, 9)) - oder nur Cells(1, 9). Range kennt nur benannte Bereich á la Range("ZelleMitName") oder Range("C225"), Cells kennt Zahlen.

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 08. Okt. 2009 11:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für thato 10 Unities + Antwort hilfreich

Überschneidung... 

zum Zweiten: Probier statt Cells mal Rows oder Columns.

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MWN
Mitglied
Dipl.-Ing. (BA) Holztechnik & NLP Practitioner


Sehen Sie sich das Profil von MWN an!   Senden Sie eine Private Message an MWN  Schreiben Sie einen Gästebucheintrag für MWN

Beiträge: 479
Registriert: 14.02.2007

SolidWorks Prem. 2013 SP1.0, SolidWorks Prem. 2010 SP5.0, Pascam WoodWorks 2.5, Pascam Bea 1.3, Microsoft Visual Basic 2010 Express & 2013 Express, 3DConnexion SpacePilot Pro, Fujitsu Siemens Celsius M470, Quadro FX1800, Xeon W3550, Win7 32 Bit/64 Bit, 6 GB RAM, 2x HP LP2475w

erstellt am: 08. Okt. 2009 11:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für thato 10 Unities + Antwort hilfreich

Will ja kein Spielverderber sein, aber bei mir funktioniert es so:

Code:
Sub test()
pos = 1
For i = 1 To ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row
    If Cells(i, 5).Value = "erledigt" Then
       Cells(i, 5).Select
       Cells(i, 5).EntireRow.Copy
       Worksheets("Tabelle2").Select
       ActiveSheet.Cells(pos, 1).Select
       ActiveSheet.Paste
       Worksheets("LOP").Activate
       Worksheets("LOP").Select
       pos = pos + 1
    End If
Next i
End Sub

Grüße

Tobias

PS: Bitte nicht schlagen, manchmal überkommt es mich einfach so!  

------------------
Besucht mich doch mal in meiner Tischlerei

[Diese Nachricht wurde von MWN am 08. Okt. 2009 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

thato
Mitglied



Sehen Sie sich das Profil von thato an!   Senden Sie eine Private Message an thato  Schreiben Sie einen Gästebucheintrag für thato

Beiträge: 66
Registriert: 20.04.2007

erstellt am: 08. Okt. 2009 11:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

logo...rows..ich dusel!
danke! jetzt gehts weiter.

nacher bin ich aber noch auf die lösung mit der find methode gespannt.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

thato
Mitglied



Sehen Sie sich das Profil von thato an!   Senden Sie eine Private Message an thato  Schreiben Sie einen Gästebucheintrag für thato

Beiträge: 66
Registriert: 20.04.2007

erstellt am: 08. Okt. 2009 11:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

danke tobias,
aber das probier ich erst aus, wenn mein lösungsweg funktioniert oder vollkommen falsch ist 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

thato
Mitglied



Sehen Sie sich das Profil von thato an!   Senden Sie eine Private Message an thato  Schreiben Sie einen Gästebucheintrag für thato

Beiträge: 66
Registriert: 20.04.2007

erstellt am: 08. Okt. 2009 12:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

nicht schön, aber selten

Sheets("LOP").Select
j = 2
For i = 1 To 25
    If Cells(i, 5).Value = "erledigt" Then
    Rows(i).Select
    Selection.Cut
    Sheets("done").Select
    ActiveSheet.Cells(j, 1).Select
        If Cells(j, 1) <> "" Then
        j = j + 1
        End If
    ActiveSheet.Paste
    Sheets("LOP").Select
    Rows(i).Select
    Selection.Delete Shift:=xlUp
    End If
Next

funktioniert soweit. ABER leider wird im tabellenblatt "done" immer die gleiche zeile überschrieben. ich prüfe doch ab ob die zelle leer ist, falls nicht, nächste zeile auswählen. tut er aber nicht. wo is denn mein denkfehler???

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 08. Okt. 2009 12:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für thato 10 Unities + Antwort hilfreich

Zitat:
ich prüfe doch ab ob die zelle leer ist
Ja, mit <> "".
Zitat:
falls nicht, nächste zeile auswählen
Nein. Du erhöhst j um 1, und mehr auch nicht. Du wählst anschließend nichts aus.

Noch ein Wort zur Wählerei (Select): Teste mal

Code:
Rows(i).Select
    Selection.Cut
'-->
Rows(i).Cut
'und
Sheets("done").Paste

Die erste nicht-leere Spalte in "done" kannst Du vorher ermitteln. Ohne Select geht es schneller, kein Flackern etc.

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

thato
Mitglied



Sehen Sie sich das Profil von thato an!   Senden Sie eine Private Message an thato  Schreiben Sie einen Gästebucheintrag für thato

Beiträge: 66
Registriert: 20.04.2007

erstellt am: 08. Okt. 2009 12:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hab meinen fehler gefunden.
jetzt muss ich nur noch das problem lösen, dass ich im blatt "lop" nach dem ausschneide auch wieder an die oberste stelle kommen. durch die schleife werden zeilen übergangen.

wie funktioniert es denn mit der find methode?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 08. Okt. 2009 12:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für thato 10 Unities + Antwort hilfreich

Hm... Zelle vor dem Kopiervorgang in eine Variable schreiben, nach dem Kopiervorgang Gehe-zu-Variable?

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

thato
Mitglied



Sehen Sie sich das Profil von thato an!   Senden Sie eine Private Message an thato  Schreiben Sie einen Gästebucheintrag für thato

Beiträge: 66
Registriert: 20.04.2007

erstellt am: 08. Okt. 2009 12:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

so, das ist meine lösung, falls es jemanden interessiert.
bin an verbesserungen durchaus interessiert!


Sheets("LOP").Select
j = 2
For i = 1 To 25
    If Cells(i, 5).Value = "erledigt" Then
    Rows(i).Cut
    Sheets("done").Select
        If Cells(j, 1) <> "" Then
        j = j + 1
        End If
    ActiveSheet.Cells(j, 1).Select
    ActiveSheet.Paste
    Sheets("LOP").Select
    Rows(i).Select
    Selection.Delete Shift:=xlUp
    i = 0
    End If
Next

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 09. Okt. 2009 12:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für thato 10 Unities + Antwort hilfreich

Mahlzeit thato,

läuft  . Hier (Wie gewünscht?) ein Verbesserungsvorschlag, etwas kürzer, schneller, übersichtlicher, ohne Select.

Code:
Sub Kurz_Schieberei()
Dim i As Integer
Dim intLast As Integer 'Nummer der letzten belegten Zeile in "done"

  intLast = Worksheets("done").UsedRange.Rows.Count 'falls keine Spalteueberschriften: + 1!!!

  For i = 1 To 25
    If Sheets("LOP").Cells(i, 5).Value = "erledigt" Then
      Sheets("LOP").Rows(i).Cut
      Sheets("done").Cells(intLast, 1).Insert Shift:=xlDown
      Sheets(1).Rows(i).Delete Shift:=xlUp
      i = i - 1 'sonst wird eine Zeile uebersprungen
    End If
  Next

  Application.CutCopyMode = False '"Esc", falls kopieren noch aktiv
 
End Sub


Hier ließe sich evtl. noch mit With-Schachteln arbeiten, wobei das bei zwei Zeilen kaum Sinn macht. Auch die Register (Worksheets) könntest Du in Variablen schreiben und darauf zugreifen. Falls ein Benutzer eines der Blätter umbenennt, ist diese Routine für die Katz'.

Eine wasserdichte Bezeichnung wäre z. B. für "LOP": Sheets(1), der VBA-Projekt-Explorer (Strg+R) zeigt die Nummern an: TabelleX (Name). Diese Nummer bleibt auch erhalten, wenn wild Blätter hinzugefügt und/oder gelöscht werden.

Application.Screenuptdating = False am Anfang und = True am Ende bringt auch noch ein bisschen was, wobei sich die Steigerung bei 25 Zeilen kaum bemerkbar macht.

Hier nochmal Deine Variante, auskommentiert:

Code:
Sub Schieberei()
Dim i As Integer
'Dim j As Integer
Dim intLast As Integer 'Nummer der letzten belegten Zeile in "done"

  intLast = Worksheets("done").UsedRange.Rows.Count
  'falls keine Spalteueberschriften: + 1!!!

'  j = 2
  For i = 1 To 25
    If Sheets("LOP").Cells(i, 5).Value = "erledigt" Then
      Sheets("LOP").Rows(i).Cut
'      Sheets("done") '.Select
'        If .Cells(j, 1) <> "" Then
'          j = j + 1
'        End If
'      ActiveSheet.Cells(j, 1).Select
'      ActiveSheet.Paste
      Sheets("done").Cells(intLast, 1).Insert Shift:=xlDown
'      Sheets("LOP").Select
'      Rows(i).Select
'      Selection.Delete Shift:=xlUp 'Zeile loeschen
      Sheets("LOP").Rows(i).Delete Shift:=xlUp
      'i = 0 'WARUM? Schleife beginnt wieder ab Zeile 1, unnoetig
      i = i - 1 'eleganter und erforderlich, sonst wird eine Zeile uebersprungen
    End If
  Next

  Application.CutCopyMode = False '"Esc", falls kopieren noch aktiv
End Sub


------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAD-User2
Mitglied



Sehen Sie sich das Profil von CAD-User2 an!   Senden Sie eine Private Message an CAD-User2  Schreiben Sie einen Gästebucheintrag für CAD-User2

Beiträge: 31
Registriert: 13.03.2006

erstellt am: 14. Okt. 2009 12:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für thato 10 Unities + Antwort hilfreich


Zeilenverschieben.xls.txt

 
Hallo,

hier mein Entwurf ohne VBA. Die erledigten Zeilen werden auf dem ersten Blatt mit einem Filter ausgeblendet. Die Formeln auf dem 2. Blatt mit Strg + Shift + Enter abschließen. Bei der Datei bitte erst die Endung .txt entfernen.

Viele Grüße
CAD-User2

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

thato
Mitglied



Sehen Sie sich das Profil von thato an!   Senden Sie eine Private Message an thato  Schreiben Sie einen Gästebucheintrag für thato

Beiträge: 66
Registriert: 20.04.2007

erstellt am: 21. Okt. 2009 11:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

vielen dank für die anregungen!!!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2020 CAD.de | Impressum | Datenschutz