Anzeige
Archiv - Navigation
1512to1516
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

Zeile kopieren mit 2 Bedingungen

Zeile kopieren mit 2 Bedingungen
01.09.2016 09:15:10
Rene
Guten morgen zusammen,
ich habe eine Auslese und er soll 2 Bedingungen überprüfen. Ich habe es versuch mit "AND" aber dann kommt eine Fehlermeldung anbei mal der Code
Sub Schaltfläche2_Klicken()
Dim Zeile As Long
Dim ZeileMax As Long
Dim i As Long
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
n = 3
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 29).Value = "Optimierung erfolgt" And "keine Optimierung möglich" Then
.Rows(Zeile).Copy Destination:=Tabelle4.Rows(n)
n = n + 1
End If
Next Zeile
End With
End Sub

Vielen Dank im Voraus.
lg Rene

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile kopieren mit 2 Bedingungen
01.09.2016 09:34:51
UweD
Hallo
Es muss eine OR Verknüpfung sein (Da du sicherlich die gleiche Zelle prüfst)
ausserdem fehlt der zweite Zellbezug
If .Cells(Zeile, 29) = "Optimierung erfolgt" OR .Cells(Zeile, 29) = "keine Optimierung möglich" Then

LG UweD
AW: Zeile kopieren mit 2 Bedingungen
01.09.2016 09:37:55
Rene
da kommt eine Fehlermeldung: "Typen unverträglich" in der Zeile
AW: Zeile kopieren mit 2 Bedingungen
01.09.2016 09:58:13
UweD
Hier nochmal komplett.
Sub Schaltfläche2_Klicken()
  
    Dim Zeile As Long
    Dim ZeileMax As Long
    Dim i As Long, n As Long
  
    With Sheets("Tabelle1")
        ZeileMax = .UsedRange.Rows.Count
        n = 3
        For Zeile = 2 To ZeileMax
            If .Cells(Zeile, 29) = "Optimierung erfolgt" Or _
                .Cells(Zeile, 29) = "keine Optimierung möglich" Then
                    .Rows(Zeile).Copy Sheets("Tabelle4").Rows(n)
                    n = n + 1
            End If
        Next Zeile
    End With
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Gruß UweD
Anzeige
AW: Zeile kopieren mit 2 Bedingungen
01.09.2016 10:02:26
Rene
Hi UweD,
Vielen Dank :D
lg und ein schönen Tag noch
bitteschön owT
01.09.2016 10:06:02
UweD
AW: bitteschön owT
01.09.2016 15:18:51
Rene
HI UweD,
ich habe doch nochmal eine Frage, wie kann ich in den Code noch die Formatierung reinbringe.
bsp nach einfügen der zeile, spalte A.B,C sollen die Formeln als Werte umformatiert werden?
Kann mir da nochjemand ein Tipp geben?
lg
AW: bitteschön owT
01.09.2016 15:48:46
UweD
dann so
Sub Schaltfläche2_Klicken()
  
    Dim Zeile As Long
    Dim ZeileMax As Long
    Dim i As Long, n As Long
  
    With Sheets("Tabelle1")
        ZeileMax = .UsedRange.Rows.Count
        n = 3
        For Zeile = 2 To ZeileMax
            If .Cells(Zeile, 29) = "Optimierung erfolgt" Or _
                .Cells(Zeile, 29) = "keine Optimierung möglich" Then
                    .Rows(Zeile).Copy
                    Sheets("Tabelle4").Rows(n).PasteSpecial Paste:=xlPasteValues
                    Application.CutCopyMode = False
                    n = n + 1
            End If
        Next Zeile
    End With
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


LG UweD
Anzeige
AW: bitteschön owT
01.09.2016 16:52:20
Rene
Super danke Uwe :)
gern geschehen owT
02.09.2016 08:12:16
UweD
AW: gern geschehen owT
02.09.2016 08:48:44
Rene
Guten Morgen Uwe,
leider habe ich ein Bug im Code,
dieser überprüft nicht in der Liste "Master_Verpackungsoptimierung" ob in der vorhergehenden Zeile schon etwas drin steht.
Ich überschreibe immer die vorhergehenden einträge.
Sub Schaltfläche2_Klicken()
'Dieser Programmcode kopiert die entsprechende Zeile die in der Spalte "Pflichtfeld" " _
Optimierung" und "Optimierung nicht möglich" behinhaltet
'Ist die Zeile gefüllt wird die Zeile kopiert
Dim Zeile As Long
Dim ZeileMax As Long
Dim i As Long, n As Long
Dim letzteZeileA As Long
letzteZeileA = Sheets("Master_Verpackungsoptimierung").UsedRange.SpecialCells( _
xlCellTypeLastCell).Row + 1
With Sheets("Verpackungsoptimierung")
ZeileMax = .UsedRange.Rows.Count
n = 3
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 30) = "Optimierung erfolgt" Or _
.Cells(Zeile, 30) = "keine Optimierung möglich" Then
.Rows(Zeile).Copy
Sheets("Master_Verpackungsoptimierung").Rows(n).PasteSpecial Paste:= _
xlPasteValues
Application.CutCopyMode = False
n = n + 1
End If
Next Zeile
End With
End Sub

deswegen wollte ich eine Überprüfung einbauen, den hier wollte ich verwenden?
letzteZeileA = Sheets("Master_Verpackungsoptimierung").UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
Könntest du mir dazu ein tipp geben?
Anzeige
kopieren in erste freie Zeile
02.09.2016 09:11:36
UweD
Hallo
so?
Sub Schaltfläche2_Klicken()

'Dieser Programmcode kopiert die entsprechende Zeile die in der Spalte "Pflichtfeld" " _
Optimierung" und "Optimierung nicht möglich" behinhaltet 
'Ist die Zeile gefüllt wird die Zeile kopiert 
  
    Dim Zeile As Long
    Dim ZeileMax As Long
    Dim i As Long, n As Long
    Dim letzteZeileA As Long
    
    With Sheets("Verpackungsoptimierung")
        ZeileMax = .UsedRange.Rows.Count
        For Zeile = 2 To ZeileMax
            If .Cells(Zeile, 30) = "Optimierung erfolgt" Or _
                .Cells(Zeile, 30) = "keine Optimierung möglich" Then
                    letzteZeileA = Sheets("Master_Verpackungsoptimierung").UsedRange.SpecialCells _
                        (xlCellTypeLastCell).Row + 1
                    .Rows(Zeile).Copy
                    Sheets("Master_Verpackungsoptimierung").Rows(letzteZeileA).PasteSpecial _
                        Paste:=xlPasteValues
                    Application.CutCopyMode = False
            End If
        Next Zeile
    End With
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Gruß UweD
Anzeige
AW: kopieren in erste freie Zeile
02.09.2016 09:46:23
Rene
Hallo Uwe leider nicht, er über springt schon die zeilen aber dadurch das die Liste wo die Daten weggeschrieben werden, eine Tabelle (Format) ist, überspringt er die ganze Tabelle, könnte man es statt Zeile auf Zelle programmieren.
lg
Originaldatei?
02.09.2016 09:57:16
UweD
lade bitte mal datei hoch
AW: Originaldatei?
02.09.2016 11:26:47
Rene
Hallo Uwe, anbei die Datei,
habe es auf ca 6 Zeilen begrenz, 10K wären zu viel gewesen :).
Vielleicht könntest du dir auch gleich mal ein Makro überlegen, das die Datensätze wenn sie kopiert wurde gleich gelöscht werden (als extra Button), dass wäre sehr nett.
Vielen Dank im Voraus.
https://www.herber.de/bbs/user/107972.xlsm
Anzeige
AW: Originaldatei?
02.09.2016 11:55:56
Werner
Hallo Rene,
hier mit einer anderen Methode zur Feststellung der letzten beschriebenen Zelle in Tabelle Master_Verpackungsoptimierung.
Zudem werden die entsprechenden Zeilen, nachdem sie übertragen wurden, ohne Rückfrage aus der Tabelle Verpackungsoptimierung gelöscht.
https://www.herber.de/bbs/user/107973.xlsm
Gruß Werner
AW: Originaldatei?
02.09.2016 12:23:15
Rene
jo Super danke Werner,
Ich wünsche dir und Uwe für eure Mühen, ein wunderbares Wochenende :)
AW: Gerne u. Danke für die Rückmeldung.
02.09.2016 12:41:27
Werner
Hallo Rene,
danke für die Rückmeldung, ich hoffe mal Uwe ist nicht sauer, weil ich mich eingemischt habe.
Gruß Werner
Anzeige
AW: Gerne u. Danke für die Rückmeldung.
02.09.2016 12:51:47
Rene
Hi werner,
Code läuft aber ein Frage habe ich.
Wie funktioniert dieser Code, habe ihn auf die orginaldatei geschrieben mit knapp 8000 Zeilen, kann es sein, dass es dort etwas länger dauert oder ich ich was nicht beachtet
AW: Gerne u. Danke für die Rückmeldung.
02.09.2016 12:59:41
Rene
ALLES ZURÜCK FEHLER ERKANNT
Hätte in der Masterliste die Zeilen der Tabelle löschen müssen.
lg und schönes Wochenende :)
AW: Originaldatei?
02.09.2016 12:42:54
UweD
Hallo
Ohne das Makro zu ändern,
nur die Leeren, aber mit Rahmen versehenen Zeilen gelöscht,
gespeichert...
läuft es.
Aber du hast ja jetzt schon eine andere Methode zur Ermittlung der Letzten Zeile bekommen
Schönes WE
UweD
Anzeige
AW: gern geschehen owT
02.09.2016 09:20:39
Werner
Hallo Rene,
versuch mal so:
Sub Schaltfläche2_Klicken()
'Dieser Programmcode kopiert die entsprechende Zeile die in der Spalte "Pflichtfeld" " _
Optimierung" und "Optimierung nicht möglich" behinhaltet
'Ist die Zeile gefüllt wird die Zeile kopiert
Dim Zeile As Long
Dim ZeileMax As Long
Dim i As Long
Dim letzteZeileA As Long
letzteZeileA = Sheets("Master_Verpackungsoptimierung").UsedRange.SpecialCells( _
xlCellTypeLastCell).Row + 1
With Sheets("Verpackungsoptimierung")
ZeileMax = .UsedRange.Rows.Count
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 30) = "Optimierung erfolgt" Or _
.Cells(Zeile, 30) = "keine Optimierung möglich" Then
.Rows(Zeile).Copy
Sheets("Master_Verpackungsoptimierung").Rows(letztZeileA).PasteSpecial  _
Paste:= _
xlPasteValues
Application.CutCopyMode = False
letztZeileA = letztZeileA + 1
End If
Next Zeile
End With
End Sub
Gruß Werner
Anzeige
AW: Zeile kopieren mit 2 Bedingungen
01.09.2016 10:00:24
Daniel
Hi
die Fehlermeldung "Typen unverträglich" deutet darauf hin, dass in der Zelle ein Fehlerwert (#NV, #Wert) steht.
Diese Fehlerwerte können in VBA nur eingeschränkt verarbeitet werden und erzeugen bei "normaler" Verarbeitung diesen Fehler.
Probiere es mal mit:
If .Cells(Zeile, 29).Text = "Optimierung erfolgt" OR .Cells(Zeile, 29).Text = "keine Optimierung möglich" Then
durch das .Text werden die Zellinhalte grundsätzlich als Text gelesen, so wie sie in der Zelle angezeigt werden, auch Zahlen und Fehlerwerte.
Als Text können die Fehlerwerte dann problemlos weiterverarbeitet werden.
Gruß Daniel
Anzeige

325 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige