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

Erweiterung Index Schleife

Erweiterung Index Schleife
14.12.2016 15:47:37
Marv
Hallo Zusammen,
ich habe eine Index Schleife, die verschiedene Kombinationen von Inhalten in Zellen findet und die Zelle anschließend löschen soll. Leider funktioniert sie zum ersten noch nicht richtig und zum zweiten ist es etwas mühselig, dass ich i immer durch i+1, i+2 usw. nacheinander ersetzten muss, um die Kombinationen (ID und gefunden / Job und icht erfasst usw.) durchzutesten.
Wie muss ich den Code berichtigen, dass er 1. funktioniert und 2. mehrere Kombinationen in einem Durchlauf überprüft?
Sub Zellen_loeschen()
LoescheZellen Range("D:D"), "ID", "gefunden", "Job", "nicht erfasst"
End Sub

Private Sub LoescheZellen(ByVal rngSource As Range, ParamArray arrTexte())
Dim rngCell As Range
Dim i
For Each rngCell In rngSource
For i = LBound(arrTexte) To UBound(arrTexte) Step 2
If InStr(1, rngCell.Value, arrTexte(i), vbTextCompare) = 1 Then
If InStr(1, rngCell.Value, arrTexte(i), vbTextCompare) = 0 Then
rngCell.ClearContents
End If
End If
Next
Next
End Sub

Danke euch!

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

Betreff
Datum
Anwender
Anzeige
AW: Erweiterung Index Schleife
15.12.2016 10:37:41
Sven
Hallo Marv,
zu einem stimmt hier dein If-Statement nicht...
Du prüft zuerst ob der Apfel grün ist. Wenn "Ja", dann prüfst Du ob der Apfel rot ist.
Da der Apfel aber grün ist, kann er nicht rot sein und dein Folgecode wird nicht mehr beachtet.
Auch das "Step 2" ist für mich unverständlich...
Aber - Versuche es mal so:

Sub Zellen_loeschen()
Dim myArr as Variant
myArr = array("ID", "gefunden", "Job", "nicht erfasst")
LoescheZellen Range("D:D"), myArr
End Sub
Private Sub LoescheZellen(ByVal rngSource As Range, arrTexte() as Variant)
Dim rngCell As Range
Dim i As Long
'Durchlaufe jede Zelle
For Each rngCell In rngSource
'Durchlaufe übergebenes Array
For i = LBound(arrTexte) To UBound(arrTexte)
'Prüfe ob Zelle Wert aus Array enthält
If InStr(1, rngCell.Value, arrTexte(i), vbTextCompare) = 1 Then
'Wenn JA dann lösche Zelleninhalt
rngCell.ClearContents
'und breche Arrayprüfung ab (springt zur nächsten Zelle)                          _
Exit For
End If
Next
Next
End Sub
Anmerken möchte ich jedoch noch, dass Du mit der Übergabe von Range("D:D") wirklich jede der 1048576 Zellen prüfst. Eventuell kannst Du hier noch den Bereich einschränken z.B. Range("D1:D10000")
Anzeige
AW: Erweiterung Index Schleife
15.12.2016 12:20:50
Marv
Hey Sven,
danke für deinen Vorschlag.
Step 2 benutze ich, damit immer nur die Kombi "ID" und "gefunden" bzw. "Job" und "nicht erfasst" geprüft wird. Verschiedene Kombis zwischen allen 4 Werten ist nicht notwendig.
Aktuell bekomme ich noch den Fehler: Unverträglicher Datentyp: Datenfeld oder benutzerdefinierter Typ erwartet.
Wie kann ich das beheben?
Super vielen Dank
AW: Erweiterung Index Schleife
15.12.2016 12:25:13
Marv
Der Fehler tritt in Zeile 4 bei myArr auf

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige