Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
784to788
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
784to788
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

wie formuliert man...?

wie formuliert man...?
02.08.2006 09:36:03
Alexx
Moin moin =)
wie formuliert man eine if Anweisung die prüfen soll ob ein Feld leer ist, wenn das feld leer ist, dann soll nichts passieren, wenn aber etwas in dem Feld steht, dann soll dieses in einen anderen sheet geschoben werden.
Mein Program kann jetzt aus sheet1 farbig markierte Felder in sheet2 kopieren. in sheet2 wird koregiert, allerdings ist sheet2 so groß das man die korrektur in mehreren schritten erledigen muss, daher sollen dann nur korrekturen übertragen werden die auch durchgeführt wurden. Bisher schiebt mein Program auch leere Felder rüber =(.
Mit der If-Anweisung komme ich wohl klar, allerdings kenne ich den Befehl für die Prüfung eines leeren Feldes nicht.
also streckt euch, reckt euch, reibt den Schlaf aus den Augen und los gehts ;-)
*motivator*
:) Danke
Alexx

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wie formuliert man...?
02.08.2006 09:42:33
Hans
Hallo Alex,
wie folgt:

Sub Pruefen()
If Not IsEmpty(Cells(3, 3)) Then
MsgBox "OK"
End If
End Sub

gruss hans
wenn man den Mund zu voll nimmt... =(
02.08.2006 12:26:47
Alexx
dann verschluckt man sich wahrscheinlich... zumindest ich habe mich verschluckt.
Vielen dank erstmal für die immer wieder rasante Hilfe. Leider bekomme Ich deine If Abfrage einfach nicht rein =( zudem hat sich jetzt mit dem debugger auch noch ein Typenunverträglichkeitsfehler eingeschlichen obwohl ich in diesem Teil des Programms gar nichts verändert habe =(.. dazu kommt das der Fehler nicht immer auftaucht.
Deine If Abfrage musste ich ganz rauslassen denn damit ging gar nichts mehr. Ich weiss ja das aller Anfang schwer ist aber im Moment fress ich die Tastatur weil ich nicht weiter weiss. Hoffe Du schaust dir mein Program mal an und guckst was ich falsch mache.
https://www.herber.de/bbs/user/35500.xls
Gruß
Alexx
Anzeige
AW: wenn man den Mund zu voll nimmt... =(
02.08.2006 20:28:21
Daniel
Hallo P@ulchen
Diese IF-Abfrage verstehe ich nicht ganz
Set rngF = objShData.Columns(1).Find(what:=rng.Value, lookat:=xlWhole)
If Not rngF Is Nothing Then
1. kann man davon ausgehen, daß alle Kundennummern vorhanden sind, da er die zu korregierenden Kundennummern vorher aus dem ersten Sheet rauskopiert hat.
Die Kundennummern müssten also alle vorhanden sein, so daß die Kontrollabfrage nicht notwendig ist.
Ausnahme wäre, wenn zwischen rauschreiben und zurückspielen der Datensatz gelöscht worden wäre. Wenn dies vorkommen kann, ist eine Fehlerabfrage erforderlich.
2. wird die Fehlerabfrage so nie funktionieren, da falls der Wert nicht gefunden wird, der Fehler schon in der FIND()-Funktion passiert.
Du müsstets also die Find-Funktion und die Abfrage in ein ON ERROR RESUME NEXT /.../ ON ERROR GOTO 0 kapseln.
Aber auch das würde nichts bringen, da im Falle eines Nicht-Vorhandenseins rngF nicht geleert wird, sondern seinen alten Wert aus dem vorherigen Schleifendurchlauf behält.
Bringt also auch nichts
Um hier Fehler abzufangen muß daß Vorhandensein des Suchwerts geprüft werden, bevor die FIND()-Funktion läuft.
Dazu kann man die ZÄHLENWENN-Funktion verwenden.
in VBA sieht das dann so aus:
if worksheetfunction.countif(objShData.Columns(1),rng.Value) &gt 0 then
Set rngF = objShData.Columns(1).Find(what:=rng.Value, lookat:=xlWhole)
... hier folgt dann der weitere Code ...
end if
Gruß, Daniel Eisert (der wo den Code mal geschrieben hat)
Anzeige
AW: wenn man den Mund zu voll nimmt... =(
03.08.2006 10:53:49
P@ulchen
Hallo Daniel,
wenn Du die von Alexx gepostete Beispieldatei mit meiner vergleichst wirst Du feststellen, dass in der Sub Daten_korrigieren() von mir lediglich folgende Abfrage eingefügt wurde:
If Not IsEmpty(rng.Offset(0, 5)) Then
.
.
.
End If
Alexx wollte, dass nur die Daten korrigiert werden, bei denen in der Spalte "Neue Eingabe" auch ein Korrekturwert eingegeben wurde. Dies wird durch die von mir eingefügte If-Abfrage gewährleistet.
Alle anderen Code-Zeilen waren bereits vorhanden.
Da Du Dich nun aber so ausführlich zur Fehlerabfrage geäußert hast, möchte ich dazu auch noch etwas schreiben:
zu 1.
Wie Du selbst bemerkst, ist eine Fehlerabfrage zur Find()-Funktion nur dann notwendig, wenn der User nach Durchlauf des ersten Makros Änderungen an den Kundennummern vornimmt. Da das aber nicht ausgeschlossen werden kann (manche achten gar nicht drauf, welche Zelle aktiviert ist und tippen wild drauf los...), ergibt sich die Notwendigkeit einer Fehlerabfrage faktisch von selbst.
zu 2.
Die Fehlerabfrage funktioniert ohne Probleme.
Im vorliegenden Code wird nicht ein Wert gesucht, sondern eine Zelle (also ein Objekt), die einen bestimmten Wert enthält. Wird eine solche Zelle im Suchbereich nicht gefunden, gibt die Find()-Funktion "Nothing" zurück, also keinen Fehler, wie Du schreibst.
Eine Fehlermeldung (Laufzeitfehler 91) würde dann aber in der nächsten Zeile auftreten, also bei
With objShData.Cells(rngF.Row, rng.Offset(0, 2).Value),
da ja rngF "Nothing" zugewiesen wurde.
Deshalb verwendet man die If Not IsNothing-Abfrage...
Ist aber in der Hilfe auch sehr ausführlich beschrieben.
Somit erübrigt sich auch die vorhergehende Prüfung mittels ZÄHLENWENN.
Gruß aus Leipzig
P@ulchen (der wo den Code mal erweitert hat)
www.excel-werkstatt.de
Anzeige
AW: wenn man den Mund zu voll nimmt... =(
04.08.2006 00:52:14
Daniel
Hallo,
Danke für die Korrektur.
Da habe ich früher wohl zu wenig mit den vollständigen Objekten sondern nur mit einzelnen Eigenschaften gearbeitet (z.B. Zeilen-Nr)
Da gibt dann schon in der Find-Funktion den Fehler.
Gruß, Daniel
klappt =)
03.08.2006 15:26:47
Alexx
Finde ich wirklich erstaunlich das mir hier so klasse geholfen wird. Besten Dank dafür.
Auch an alle anderen die mir immer wieder beigesprungen sind nochmals vielen Dank. Ich freue mich echt das es dieses Forum gibt, in dem die Mitglieder einem so vielseitig helfen.
Gruß
Alexx
AW: wie formuliert man...?
02.08.2006 20:09:05
Daniel.Eisert
Hallo
ob ein Feld leer ist, prüft man einfach mit:
if Range(xxx).value = "" then...
oder bei bedarf
if Range(xxx).value "" then...
Gruß, Daniel Eisert (der wo den Code mal geschrieben hat)
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige