Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
960to964
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
960to964
960to964
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fehler in Schleife

Fehler in Schleife
16.03.2008 17:42:00
Köhler
Hallo,
Ich habe ein Problem mit folgender Schleife:

Sub Button1_Click()
Sheets("data").Activate
Dim i
For i = 1 To 20
If Worksheets("data").Cells(i, 1) = Worksheets("data").Cells(i, 16).Value Then
Worksheets("data").Cells(i, 17).Select
Selection.Copy
Worksheets("data").Cells(i, 1).Select
ActiveCell.End(xlToRight).Offset(0, 1).Select
ActiveSheet.Paste
Else
Worksheets("data").Cells(i, 17).Select
Selection.Font.ColorIndex = 3
End If
Next i
End Sub


Es wird Fehler 400 ausgeworfen beim Ausführen der Schleife. Beziehe ich den code nur auf eine Reihe, lasse also die Schleife weg, so funktioniert alles einwandfrei.
Der Fehler liegt wohl in der fett markierten Reihe, denn wenn ich diese weg lasse, so läuft die Schleife durch. Leider brauche den fett markierten Teil, um in die richtige Zelle zu springen.
Wäre für Hilfe dankbar...

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler in Schleife
16.03.2008 17:55:01
Hajo_Zi
Hallo ,
auf select kann in VBa zu 99,9% verzichtet werden.

Option Explicit
Sub Button1_Click()
With Sheets("data")
Dim i As Integer
For i = 1 To 20
If .Cells(i, 1) = .Cells(i, 16).Value Then
.Cells(i, 17).Copy .Cells(i, 1).End(xlToRight).Offset(0, 1)
Else
.Cells(i, 17).Font.ColorIndex = 3
End If
Next i
End With
End Sub



AW: Fehler in Schleife
16.03.2008 18:09:00
Jan3
Hi,
Mit der Anweisung wird die letzte belegt Spalte +1 ausgewählt. Wenn in der Zeile kein Wert steht, soll die letzte Spalte (256) +1 angesprungen werden und die gibt es nicht.
Welche Zelle soll angesprungen bzw. wo soll der Wert aus der Spalte Q (Spalte 17) eingefügt werden, wenn die Bedingung stimmt?
Das Kopieren und Einfügen läßt sich nämlich sehr gut ohne Deine Select - Anweisungen ausführen!
Jan

Anzeige
AW: Fehler in Schleife
16.03.2008 18:11:39
fcs
Hallo Köhler,
das Problem tritt auf, wenn in einer Zeile keine Werte stehen, bzw. nur in Spalte A.
Dann springt End(xlToRight) in die Spalte ganz rechts (IV) und mit Offset(0,1) soll dann die Spalte rechts daneben angesprungen werden. Das funktioniert dann nicht.
Baue eine Fehleranweisung ein oder prüfe, ob bestimmte Zellen leer sind.
In Deinem sehr einfachen/kurzen Code geht es mit "On Error Resume Next".
Insgesamt solltest du die Select-Anweisungen aus deinem Code eleminieren.
Gruß
Franz

Private Sub Button1_Click()
Sheets("data").Activate
Dim i
On Error Resume Next 'Bei Fehler wird nächste Anweisung ausgeführt
For i = 1 To 20
If Worksheets("data").Cells(i, 1) = Worksheets("data").Cells(i, 16).Value Then
Worksheets("data").Cells(i, 17).Copy Destination:= _
Worksheets("data").Cells(i, 1).End(xlToRight).Offset(0, 1)
Else
Worksheets("data").Cells(i, 17).Font.ColorIndex = 3
End If
Next i
Application.CutCopyMode = False
End Sub


Anzeige
AW: Fehler in Schleife
18.03.2008 22:41:00
Köhler
Vielen Dank!! Klappt einwandfrei.
on Error resume next is genial Franz!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige