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

Typen unverträglich IF Bedingung

Typen unverträglich IF Bedingung
05.01.2018 09:18:33
Lia
Hi liebes Forum,
bekomme hier die Fehlermeldung Typen unverträglich.
If .Cells(Zeile, 6).Value = "Ende" And Range("D2:D1000").Value  "" Then
Liegt das an dem .Cells und Range?
LG,
Lia

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Typen unverträglich IF Bedingung
05.01.2018 09:24:51
Beverly
Hi Lia,
es liegt an Range(...).Value "" - diesen Ausdruck gibt es nicht.
Du willst feststellen, ob sich in dem Bereich irgendein Eintrag befindet? So sollte es korrekt funktionieren:
If .Cells(Zeile, 6).Value = "Ende" And Application.CountA(Range("D2:D1000").Value) > 0 Then

Den Punkt vor Range benötigst du dann, wenn sich das Range auf das selbe Tabellenblatt wie .Cells bezieht - andernfalls bezieht sich Range auf das aktive Tabellenblatt.


AW: Typen unverträglich IF Bedingung
05.01.2018 09:31:32
Lia
Vielen Dank! Gut zu wissen!! :)
Also ich habe eine If else Bedingung
If .Cells(Zeile, 6).Value = "Ende" And Application.CountA(Range("E2:E1000").Value) 0 Then
.Rows(Zeile).Delete
Else
MsgBox("Zelle E muss einen Wert haben!")
End if
Habe es eben ausprobiert und trotzdem hat er die Zeile gelöscht :/ (Das Größer Zeichen akzeptiert excel nicht deshalb habe ich es rausgenommen ^^
Anzeige
AW: Typen unverträglich IF Bedingung
05.01.2018 09:55:40
Werner
Hallo Lia,
und weshalb sollte das ">" (natürlich ohne Gänsefüßchen) nicht akzeptiert werden?
Teste diesen Code mal in einer Tabelle. Schreibe irgendeinen Wert in den Bereich von E2-D2000 und schreib Ende in F1 und lass den Code laufen. Zeile habe ich zum Testen einfach mal auf 1 gesetzt.
Es wird Zeile 1 gelöscht, wenn im Bereich E2 bis D2000 irgendeine Zelle einen Wert hat und wenn in F1 Ende steht.
Da die Range und Cells Objekte im Code nicht weiter referenziert sind, bezieht sich alles auf das aktive Blatt.
Public Sub aaa()
Zeile = 1
If Cells(Zeile, 6).Value = "Ende" And Application.CountA(Range("E2:E1000").Value) > 0 Then
Rows(Zeile).Delete
Else
MsgBox ("Zelle E muss einen Wert haben!")
End If
End Sub
Du hast in deinem Code vor dem ersten Cells einen Punkt (.Cells(Zeile, 6). Steht der Codeteil in einer With... End With Klammer?
Poste mal den ganzen Code. Es bringt nichts immer nur zwei drei Zeilen eines Codes zu posten und zu sagen das geht nicht.
Gruß Werner
Anzeige
AW: Typen unverträglich IF Bedingung
05.01.2018 10:45:01
Lia
Morgen Werner,
das ist der Codeabschnitt wollte einfach mal so eine If Anweisung mit zwei Bedingungen ausprobieren.
Das ist der Code von gestern wollte es einfach nur um eine Abfrage erweitern.
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
For Zeile = ZeileMax To 1 Step -1
If Cells(Zeile, 6).Value = "ende" And Application.CountA(Range("E2:E1000").Value) 0 Then
.Rows(Zeile).Copy Destination:=Tabelle2.Cells(Rows.Count, 1).End(xlUp).Offset(1)
.Rows(Zeile).Delete
n = n + 1
End If
Next Zeile
End With
End Sub

Und es tut mir wirklich leid, das ich hier so viel poste, aber ich weiß irgendwie nicht weiter.
Gruß Lia
Anzeige
AW: Typen unverträglich IF Bedingung
05.01.2018 11:16:48
Werner
Hallo Lia,
beschreib doch mal, was du genau machen willst.
Im Moment läuft der Code von der letzten Zeile zur ersten Zeile. In der jeweiligen Zeile wird geprüft, ob in F "ende" steht und ob im Bereich E2 bis E2000 irgendwo ein Eintrag vorhanden ist. Sind beide Bedingungen erfüllt, wird die aktuelle Zeile ins Blatt 2 kopiert und anschließend gelöscht.
Code dazu:
Public Sub Test()
Dim ZeileMax As Long, Zeile As Long
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
For Zeile = ZeileMax To 1 Step -1
If .Cells(Zeile, 6).Value = "ende" And Application.CountA(.Range("E2:E1000")) > 0 Then
.Rows(Zeile).Copy Destination:=Tabelle2.Cells(Rows.Count, 1).End(xlUp).Offset(1)
.Rows(Zeile).Delete
End If
Next Zeile
End With
End Sub
Ich vermute aber, daß du was ganz anderes erreichen/prüfen willst. Kann es sein, dass du zunächst prüfen willst, ob in der aktuellen Zeile in Spalte F "ende" steht und ob in der gleichen Zeile in Spalte E ein Eintrag vorhanden ist? Wenn ja, dann wird das so nämlich nichts.
Code für die zweite Version:
Public Sub Test()
Dim ZeileMax As Long, Zeile As Long
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
For Zeile = ZeileMax To 1 Step -1
If .Cells(Zeile, 6).Value = "ende" And .Cells(Zeile, 5)  "" Then
.Rows(Zeile).Copy Destination:=Tabelle2.Cells(Rows.Count, 1).End(xlUp).Offset(1)
.Rows(Zeile).Delete
End If
Next Zeile
End With
End Sub
Bei deinem geposteten Code fehlte jeweils ein Punkt von Cells (.Cells) und vor Range (.Range).
Zur Erklärung:
Du mußt Excel schon sagen, auf welchem Blatt sich die Range-Objekte (Cells, Range) befinden, die du ansprechen willst. Entweder durch davorstellen des Tabellenblattes
Tabelle1.Range(Tabelle1.Cells(1, 1), .Tabelle1.Cells(1, 4))

Da das aber von der schreibweise her unhandlich ist, kann man sich mit einer With - End With Klammer (wie in deinem Beispiel) behelfen.
Hier muss dann aber zwingend vor jedes Range-Objekt ein Punkt, damit korrekt auf des im With angegebene Tabellenblatt refereniziert wird.
Beispiel von oben mit With:
With Tabelle1
.Range(.Cells(1, 1), .Cells(1, 4))
End With
Gruß Werner
Anzeige
AW: Typen unverträglich IF Bedingung
05.01.2018 11:44:50
Lia
Super vielen lieben Dank!!
Ich habe auf diesem Blatt auch ein Button und er kopiert mir immer wenn ich die erste Zeile quasi auf "ende" setze, den Button mit. Kann ich das irgendwie verhindern, dass er den button nicht beachtet?
Lg und vielen Dank.
Lia
AW: Typen unverträglich IF Bedingung
05.01.2018 12:02:59
Werner
Hallo Lia,
nimm eine Schaltfläche aus den Formularsteuerelementen (wenn nicht schon geschehen). Dann Rechtsklick auf die Schaltfläche - Steuerelement formatieren - Reiter Eigenschaften - von Zellposition und -größe unabhängig auswählen und fertig.
Gruß Werner
AW: Typen unverträglich IF Bedingung
05.01.2018 12:25:30
Lia
Vielen lieben Dank ! so viele neue hilfreiche Infos Danke,Danke !!!
Gruß Lia
Anzeige
Gerne u. Danke für die Rückmeldung. o.w.T.
05.01.2018 12:36:20
Werner
Benutze PasteSpecial
05.01.2018 12:20:09
Beverly
Hi Lia,
nach diesem Prinzip:
.Rows(Zeile).Copy
Tabelle2.Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues

Damit werden nur die Werte kopiert. Falls auch die Formate kopiert werden sollen, ergänze die folgende Zeile:
Tabelle2.Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteFormats



Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige