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

in VBA Zeile mit for schleife durchsuchen

in VBA Zeile mit for schleife durchsuchen
07.09.2018 13:32:53
aelli
Hallo zusammen,
Ich möchte nachdem eine Zelle angeklickt wurde die Zellen rechts von der angeklickten Zelle durchsuchen. Und sobald eine gefüllte Zelle gefunden ist, soll ein Wert aus Zeile 6 und der Spalte der gefundenen Zelle in Spalte 8 und die gleiche Zeile der Zelle kopiert werden.
Die Codeschnipsel die ich dazu bisher habe sind wiefolgt:
Dim Cell As Range
For Each Cell in Range("weiß nicht wie man die Range angibt.. Soll von der angeklickten Zelle bis ActiveCell.row, 377")
if Cell.interior.color x1None then
Cells(ActiveCell.Row, 8).Value = Wert aus Gefundene Zelle Zeile 6 gleiche Spalte.
Else Cells(ActiveCell.Row, 9).Value = vbNullString (Falls er nichts findet & das funktioniert bereits)
End If
Ich hoffe man kann das ungefähr verstehen sonst kann ich gerne auch mal den gesamten Code posten.
vielen Dank schonmal
Gruss

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: in VBA Zeile mit for schleife durchsuchen
07.09.2018 14:07:26
UweD
Hallo
Mangels Beispieldaten hier ungeprüfter Code.
- Rechtsclick auf den Tabellenblattreiter
- Code anzeigen
- Code dort reincopieren
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Zelle As Range
    For Each Zelle In Target.Resize(1, 377 - Target.Columns + 1)
        If Zelle.Interior.Color <> xlNone Then
            Cells(Zelle.Row, 8).Value = Cells(6, Zelle.Column).Value
        Else
            Cells(Zelle.Row, 9).Value = vbNullString
        End If
    Next
End Sub
LG UweD
Anzeige
AW: in VBA Zeile mit for schleife durchsuchen
07.09.2018 14:47:21
aelli
Hallo Uwe,
Danke dafür ganz funktionieren tut es noch nicht.
Mit diesem Code läuft er durch die Schleife zwar durch und zählt auch die Werte hoch aber stoppt nicht bei einem ausgemalten Feld..
Dim index As Integer
For index = ActiveCell.Column To 377
If Cells(ActiveCell.Row, index).Interior.color xlNone Then
Cells(ActiveCell.Row, 8).Value = Cells(6, index).Value
Else
Cells(ActiveCell.Row, 8).Value = vbNullString
End If
Application.Wait (Now + TimeValue("0:00:01"))
Next
Den wait hab ich nur um besser sehen zu können was passiert.
Hättest du eine Idee warum die If Bedingung nicht greift?
Gruss Aelli
Anzeige
AW: in VBA Zeile mit for schleife durchsuchen
07.09.2018 14:55:06
fcs
Hallo aelli,
sollte etwa so funktionieren

Dim rngCell As Range, Zeile As Long
Dim wks As Worksheet
Set wks = ActiveSheet
With wks
Zeile = ActiveCell.Row
For Each rngCell In .Range(ActiveCell, .Cells(Zeile, 377)) 'angeklickten Zelle bis  _
ActiveCell.row, 377
If rngCell.Interior.ColorIndex  xlColorIndexNone Then
.Cells(Zeile, 8).Value = .Cells(6, rngCell.Column).Value ' Wert aus Gefundene Zelle  _
Zeile 6 gleiche Spalte.
Else
.Cells(Zeile, 9).Value = vbNullString '(Falls er nichts findet & das funktioniert  _
bereits)
End If
Next
End With
Gruß
Franz
Anzeige
AW: in VBA Zeile mit for schleife durchsuchen
07.09.2018 15:20:44
aelli
Hallo Franz,
habs leicht abgeändert und es funktioniert! :)
Das einzige Problem ist, dass es wenn kein farbiges Feld mehr kommt relativ lange dauert bis er einmal alle Zellen durchgegangen ist..(Währenddessen blinkt der Lade Kreis von Win10 ständig auf) Liegt das an Excel oder gibt es da eine Möglichkeit diesen Vorgang zu beschleunigen?
Ich meine rein Rechenleistungstechnisch muss hier ja nicht viel passieren.
Gruss Aelli
AW: in VBA Zeile mit for schleife durchsuchen
07.09.2018 19:06:42
Piet
Hallo
aus Spass habe ich den Code mal durchlaufen lassen, unter 1 sec. bei mir!
Dann musst du noch eine Zeitverzögerung im Code haben. Was ist mit Application.Wait 1 sec.?
Hast du diese Zeile aus deinem Code heraus genommen?
Ansonsten kannst du noch diesen Befehl einbauen, wenn dahinter ALLE Zellen ohne Farbe sind!
If rngCell.Interior.ColorIndex = xlColorIndexNone Then Exit Sub
mfg Piet
Anzeige
AW: in VBA Zeile mit for schleife durchsuchen
07.09.2018 19:21:09
daniel
Hi
prinzipell ist bei diesem Code nur die letzte gefärbte Zelle relevant, sollten mehrere Zellen gefärbt sein.
von daher wäre es sinnvoller, die Schleife von rechts nach links laufen zu lassen und bei der ersten Fundstelle abzubrechen.
dann muss der Wert nur 1x geschrieben werden.
ich würds mal so probieren:
dim sp as Long
dim ze as Long
ze = activeCell.row
for sp = 377 to activeCell.column step -1
if cells(ze, sp).interior.Colorindex  xlColorindexnone then
Cells(ze, 8).Value = Cells(6, sp).value
Exit for
end if
next
if sp 
das sollte schneller sein, weil hier nur 1x ein Wert in die Zelle geschrieben wird.
Gruß Daniel
Anzeige
AW: in VBA Zeile mit for schleife durchsuchen
11.09.2018 09:06:34
aelli
Hallo Daniel,
danke für deine Hilfe. Ich habe meinen Code jetzt auch so hinbekommen das er schnell durchläuft. (Das Problem war, dass wenn kein weiteres Kästchen ausgefüllt war, wurde jedes explicit geleert. Das hat dann bei den 360 verbleibenden etwas gedauert).
Nun habe ich allerdings ein neues Problem. Das Programm soll auch in die andere Richtung suchen um so ein anderes Kästchen zu korrigieren. Mein Code ist bisher so:
'loescht das Datum in Beginn, falls die Zelle mit dem gleichen Datum im Kalender deaktiviert  _
wird
If Cells(ActiveCell.Row, 8).Value = Cells(6, ActiveCell.Column).Value Then
Cells(ActiveCell.Row, 8).Value = vbNullString
Dim rngCell As Range
For Each rngCell In Range(ActiveCell, Cells(ActiveCell.Row, 377)) 'gehe von  _
der markierten Zelle das restliche Jahr in dieser Zeile durch
If rngCell.Interior.ColorIndex  xlColorIndexNone Then
Cells(ActiveCell.Row, 8).Value = Cells(6, rngCell.Column).Value
Exit For    'Wenn er den ersten Wert gefunden hat verlasse die Schleife
End If
Next
End If
'loescht das Datum in Ende, falls die Zelle mit dem gleichen Datum im Kalender  _
deaktiviert wird
If Cells(ActiveCell.Row, 9).Value = Cells(6, ActiveCell.Column).Value Then
Cells(ActiveCell.Row, 9).Value = vbNullString
Dim rngCellTwo As Range
For Each rngCellTwo In Range(Cells(ActiveCell.Row, 12, ActiveCell)) 'gehe  _
von der markierten Zelle das restliche Jahr in dieser Zeile durch
If rngCellTwo.Interior.ColorIndex  xlColorIndexNone Then
Cells(ActiveCell.Row, 9).Value = Cells(6, rngCellTwo.Column).Value
Exit For    'Wenn er den ersten Wert gefunden hat verlasse die Schleife
End If
Next
End If

Der obere Teil mit dem Beginn funktioniert einwandfrei, jz soll das ganze eigentlich nurnoch gespiegelt werden.
Vielen Dank für Eure Hilfe schonmal.
Grus Aelli
Anzeige
AW: in VBA Zeile mit for schleife durchsuchen
11.09.2018 09:21:53
aelli
Hallo Daniel,
danke für deine Hilfe. Ich habe meinen Code jetzt auch so hinbekommen das er schnell durchläuft. (Das Problem war, dass wenn kein weiteres Kästchen ausgefüllt war, wurde jedes explicit geleert. Das hat dann bei den 360 verbleibenden etwas gedauert).
Nun habe ich allerdings ein neues Problem. Das Programm soll auch in die andere Richtung suchen um so ein anderes Kästchen zu korrigieren. Mein Code ist bisher so:
'loescht das Datum in Beginn, falls die Zelle mit dem gleichen Datum im Kalender deaktiviert  _
wird
If Cells(ActiveCell.Row, 8).Value = Cells(6, ActiveCell.Column).Value Then
Cells(ActiveCell.Row, 8).Value = vbNullString
Dim rngCell As Range
For Each rngCell In Range(ActiveCell, Cells(ActiveCell.Row, 377)) 'gehe von  _
der markierten Zelle das restliche Jahr in dieser Zeile durch
If rngCell.Interior.ColorIndex  xlColorIndexNone Then
Cells(ActiveCell.Row, 8).Value = Cells(6, rngCell.Column).Value
Exit For    'Wenn er den ersten Wert gefunden hat verlasse die Schleife
End If
Next
End If
'loescht das Datum in Ende, falls die Zelle mit dem gleichen Datum im Kalender  _
deaktiviert wird
If Cells(ActiveCell.Row, 9).Value = Cells(6, ActiveCell.Column).Value Then
Cells(ActiveCell.Row, 9).Value = vbNullString
Dim rngCellTwo As Range
For Each rngCellTwo In Range(Cells(ActiveCell.Row, 12, ActiveCell)) 'gehe  _
von der markierten Zelle das restliche Jahr in dieser Zeile durch
If rngCellTwo.Interior.ColorIndex  xlColorIndexNone Then
Cells(ActiveCell.Row, 9).Value = Cells(6, rngCellTwo.Column).Value
Exit For    'Wenn er den ersten Wert gefunden hat verlasse die Schleife
End If
Next
End If

Der obere Teil mit dem Beginn funktioniert einwandfrei, jz soll das ganze eigentlich nurnoch gespiegelt werden.
Vielen Dank für Eure Hilfe schonmal.
Grus Aelli
Anzeige
AW: in VBA Zeile mit for schleife durchsuchen
11.09.2018 09:29:32
aelli
Habs geschafft!
Man muss einfach nur das Exit For wegmachen.
Danke Euch allen!!

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige