Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
632to636
632to636
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ist Zelle nicht leer -> überspringen @ Erich G.

ist Zelle nicht leer -> überspringen @ Erich G.
06.07.2005 12:20:52
Danilo
Hallo Forum,
ich habe gestern zu folgendem Thema: bestimmter Inhalt einer Zelle kopieren einen Code bekommen, danke nochmal dafür an Erich G.
Jetzt habe ich aber feststellen müssen das auch in Zellen die bereits einen Wert
enthalten nicht übersprungen werden was aber sein sollte da die Werte schon korrekt sind.
Dieser Code sucht in Spalte 27 nach einer 5stelligen Zahl und kopiert diese dann in die Zelle in Spalte J.
Wenn aber in der Zelle der Spalte J schon erwas steht, soll nichts kopiert werden.
Danke für eure Hilfe

Sub PLZ_finden_im_Freitext_und_kopieren()
Dim zz&, ii%, jj%, tt As String * 1, gefund As Boolean
For zz = Cells(Rows.Count, 27).End(xlUp).Row To 2 Step -1 '2 To 100
For ii = 1 To Len(Cells(zz, 27)) - 4
gefund = True
tt = Mid(Cells(zz, 27), ii, 1)
If tt >= "0" And tt <= "9" Then
For jj = 1 To 4
tt = Mid(Cells(zz, 27), ii + jj, 1)
If tt < "0" Or tt > "9" Then
gefund = False
ii = ii + jj - 1
Exit For
End If
If Not gefund Then Exit For
Next jj
If gefund Then
If Not IsEmpty(Cells(zz, 10)) Then
MsgBox "In Zelle " _
& Cells(zz, 27).Address(RowAbsolute:=False, ColumnAbsolute:=False) _
& " kommt mehr als eine fünfstellige Zahl vor:" _
& Chr(13) & Chr(13) & Cells(zz, 10).Text & "  ist gespeichert, " _
& Chr(13) & Mid(Cells(zz, 27).Text, ii, 5) & "  wurde noch gefunden"
Else
Cells(zz, 10).Value = Mid(Cells(zz, 27), ii, 5)
End If
ii = ii + 4
End If
End If
Next ii
Next zz
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: ist Zelle nicht leer -> überspringen @ Erich G.
06.07.2005 14:00:06
Harald
Hi Danilo,
bin zwar nicht der Gesuchte, aber ich hab die verantwortliche Stelle
If Not IsEmpty(Cells(zz, 10)) Then
MsgBox '...
überprüft.
Läuft ohne Probleme.
Alternativ könntest Du statt If Not IsEmpty ... ,diese Zeile mal testen
If cells(zz,10).value "" Then
Gruß
Harald
AW: ist Zelle nicht leer -> überspringen @ Erich G
06.07.2005 14:02:17
Erich
Hallo Danilo,
die Zeile einfach zu überspringen, wenn in J schon ein Wert steht, finde ich gefährlich.
1. Der in J gespeicherte Wert könnte alt/falsch sein.
2. Im Freitext könnte mehr als eine PLZ stehen.
Auch bisher wurde kein bereits gespeicherter Wert in J geändert - es wurde nur eine Meldung (per MsgBox) ausgegeben. Ich habe den Code nun so geändert, dass die Meldung nicht mehr kommt, wenn die schon gespeicherte mit der gefundenen PLZ übereinstimmt:
Option Explicit
Sub PLZ_finden()
Dim zz&, ii%, jj%, tt As String * 1, gefund As Boolean
Const qs = 27, zs = 10                                  ' Quell- und Zielspalte
For zz = 2 To Cells(Rows.Count, qs).End(xlUp).Row       ' ab Zeile 2 bis Ende
For ii = 1 To Len(Cells(zz, qs)) - 4
gefund = True
tt = Mid(Cells(zz, qs), ii, 1)
If tt >= "0" And tt <= "9" Then
For jj = 1 To 4
tt = Mid(Cells(zz, qs), ii + jj, 1)
If tt < "0" Or tt > "9" Then
gefund = False
ii = ii + jj - 1
Exit For
End If
Next jj
If gefund Then
If Not IsEmpty(Cells(zz, zs)) _
And Format(Cells(zz, zs), "00000") <> Mid(Cells(zz, qs), ii, 5) _
Then
MsgBox "In Zelle " _
& Cells(zz, qs).Address(RowAbsolute:=False, ColumnAbsolute:=False) _
& " kommt eine andere fünfstellige Zahl vor:" _
& Chr(13) & Chr(13) & Cells(zz, zs).Text & "  ist gespeichert, " _
& Chr(13) & Mid(Cells(zz, qs).Text, ii, 5) & "  wurde noch gefunden"
Else
Cells(zz, zs).Value = Mid(Cells(zz, qs), ii, 5)
End If
ii = ii + 4
End If
End If
Next ii
Next zz
End Sub

Grüße aus Kamp-Lintfort
Erich
Anzeige
Okay, danke für die Hilfe...
06.07.2005 14:07:56
Danilo

336 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige