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

For-Each- Schleife bei Arrays

For-Each- Schleife bei Arrays
17.09.2014 13:02:21
Florian
Liebe VBA- Freunde,
ich habe ein Problem, dass wahrscheinlich auf meine begrenzten Fähigkeiten als VBA-User zurückzuführen ist. Bin schon lange am Suchen, finde aber irgendwie keine funktionierende Lösung.
Zum Sachverhalt:
Ich habe ein Eingabefeld, in das ich einen String eingebe, der von meinem Makro ausgelesen wird. Daraufhin wird prüft ein Array, wie häufig dieser String in meiner Tabelle vorkommt - soweit so gut. Jetzt stellt sich mir die Frage, wie ich dem Makro sagen soll, dass er in jeder Zeile, das erste rechts stehende "x" suchen soll und mir dessen Adresse ausgibt? Hatte hier die For-Each-Schleife ins Auge gefasst, aber irgendwie klappt das nicht so, wie ich mir das vorgestellt hab... Habe euch hier mal die Datei angehangen: https://www.herber.de/bbs/user/92679.xlsm
Kann jemand Abhilfe schaffen? Danke im Voraus!
Grüße,
Florian

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For-Each- Schleife bei Arrays
17.09.2014 13:35:54
Jack_d
Hallo Florian
so kann der Code aussehen
Hier die Lösung als WS_Change (Makro muss in das Arbeitsblatt1)
Ausgabe der Adresse derzeit über msgbox
Grüße
Private Sub Worksheet_change(ByVal Target As Range)
Dim Suchwert As String
Dim rngZelle As Range
Suchwert = Intersect(Target, Range("C15"))
With Worksheets("Einzelteile")
Set rngZelle = .Columns(3).Find(Suchwert, lookat:=xlWhole)
If Not rngZelle Is Nothing Then
Set rngZelle2 = .Rows(rngZelle.Row).Find("x", lookat:=xlWhole)
If Not rngZelle2 Is Nothing Then
Adresse = rngZelle2.Address
End If
End If
Set rngZelle = Nothing
Set rngZelle2 = Nothing
End With
MsgBox Adresse
End Sub

Anzeige
Was heißt 'rechtsstehendes "x"', ...
17.09.2014 13:42:55
Luc:-?
…Florian,
in den Zellen von Blatt3 steht ab einer bestimmten Spalte nur x bzw X! So wie du formulierst klingt das nach längeren Texten, die auf x enden.
Ansonsten ist da nur ein rudimentäres Makro zu finden, ganz ohne For Each-Zyklus! Einen solchen müsstest du über alle Zeilen des Gesamtbereichs laufen lassen und hast dann in Form der LaufVariablen gleich einen Bereich, auf den du die vbMethode .Find ansetzen könntest, also ungefähr so:
For Each xRo In bereich.Rows
If Not xRo.Find(…) Is Nothing Then …
Next xRo
Ansonsten das übliche AnfängerDurcheinander wie fehlende bzw Mittendrin-Variablen-/Konstanten-Deklaration (im Pgm unveränderte Werte sollten als Const deklariert wdn!), Benutzung von reservierten VBA-Begriffen als VariablenNamen (nimm doch dt Begriffe, da passiert das kaum mal!) usw.
Es gibt hier im Forum und seinem Archiv doch genügend Bspp wie das ordentlich gemacht wird, warum dann so?!
Gruß, Luc :-?

Anzeige
AW: For-Each- Schleife bei Arrays
17.09.2014 17:16:55
Beverly
Hi Florian,
eine Möglichkeit:
Sub Finden()
Dim rngZelle As Range
Dim strStart As String
Dim arrFound()
Dim lngFound As Long
With Worksheets("Einzelteile")
Set rngZelle = .Columns(3).Find(Range("C15").Value, lookat:=xlPart)
If Not rngZelle Is Nothing Then
strStart = rngZelle.Address
ReDim arrFound(0)
Do
If Not IsError(Application.Match("x", .Rows(rngZelle.Row), 0)) Then
ReDim Preserve arrFound(0 To lngFound)
arrFound(lngFound) = Cells(rngZelle.Row, Application.Match("x", .Rows( _
rngZelle.Row), 0)).Address(False, False)
lngFound = lngFound + 1
End If
Set rngZelle = .Columns(3).FindNext(rngZelle)
Loop While Not rngZelle Is Nothing And rngZelle.Address  strStart
End If
End With
Range("A1").Resize(UBound(arrFound()) + 1, 1) = Application.Transpose(arrFound())
End Sub
Es wird nur etwas ins Array geschrieben, wenn tatsächlich in mindestens einer Zelle ein "x" steht.


Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige