Thema Datum  Von Nutzer Rating
Antwort
12.07.2007 11:03:33 mariza200985
NotSolved
Blau Aw:Suche nach 1.leerer Zeile nach Zelle mit Wert
06.08.2007 12:36:09 Harry
NotSolved

Ansicht des Beitrags:
Von:
Harry
Datum:
06.08.2007 12:36:09
Views:
881
Rating: Antwort:
  Ja
Thema:
Aw:Suche nach 1.leerer Zeile nach Zelle mit Wert
Hallo,
ich bin nicht sicher, ob ich richtig verstanden habe, wie Dein Programm ablaufen soll. Ich denke so:
1. der User gibt die Projekt- Nummer ein und bestätigt die
Eingabe mit OK;
2. die Projekt- Nummer wird in der Tabelle gesucht;
3. der letzte, zu der gesuchten Projekt- Nr. gehörende Eintrag
in der rechts daneben liegenden Spalte wird gesucht und
davor eine Zeile eingefügt.
Zuerst etwas Allgemeines:
Die Anweisung Select verwende ich äußerst selten (nur dann, wenn ich eine bestimmte Zelle optisch darstellen will). Das Programm soll ja nicht den Cursor auf dem Tab.- Blatt hin und her springen lassen, sondern es soll „wissen“ wo sich welche Informationen befinden und wo Aktionen ausgeführt werden sollen; also in Variablen.
Ich würde wie im Folgenden vorgehen:
Zu 1.:
über eine InputBox die Projekt- Nummer einer Variablen übergeben.
Zu 2.:
um keine Endlos- Schleife zu provozieren, die letzte belegte Zeile in Spalte A suchen und den Wert einer Variablen übergeben. Dann in einer Schleife den Inhalt jeder Zelle mit dem Inhalt der Projekt- Nr.- Variablen vergleichen. Dabei muss im Schleifenkopf festgelegt werden, dass die Beendigungsbedingungen für die Schleife sind:
1. wenn die Schleifen- Durchlaufzähler- Variable (wird vor Loop um 1 erhöht) größer ist als die Letzte- Zeile- Variable
oder
2. wenn die Projekt- Nr.- Variable gleich dem Inhalt der gerade durchsuchten Zelle ist. Wurde eine Übereinstimmung gefunden, muss das natürlich auch in einer Variablen festgeschrieben werden (z.B. in eine boolsche Variable). Dabei wird die Schleifen- Durchlaufzähler- Variable gleichzeitig als Zeilen- Variable für den Zellenbezug benutzt, z.B.:

If Sheets(1).Cells(SchleifenDurchlaufzählerVariable, 1).Value = ProjektNrVariable Then
ÜbereinstimmungGefunden = True
SchleifenDurchlaufzählerVariable = SchleifenDurchlaufzählerVariable +1

Ich gehe dabei davon aus, dass vor dem Schleifen- Start der SchleifenDurchlaufzählerVariable der Wert 1 und der Variablen ÜbereinstimmungGefunden der Wert False zugewiesen wurden.

Zu 3.:
In der nächsten Schleife wird nach der nachfolgenden Projekt- Nr. gesucht, da bekannt ist, dass zwei Zeilen vorher eine Zeile eingefügt werden soll.
Eigentlich wird nicht nach der Projekt- Nr., sondern nach nicht- leeren Zellen gesucht, d.h. wenn eine geprüfte Zelle nicht leer ist, dann ist es die folgende Projekt- Nr.. Wenn von der Schleifen- Durchlaufzähler- Variable (z.B. SchleifenDurchlaufzählerVariable2) dieser Schleife bei ÜbereinstimmungGefunden = True der Wert 1 abgezogen wird, ist das die Zeilen- Nr. der letzten Auftragszeile der gesuchten Projekt- Nr.. Vor dem Schleifen- Start muss der SchleifenDurchlaufzählerVariable2 der Wert der SchleifenDurchlaufzählerVariable (aus der vorhergehenden Schleife) und der Variablen ÜbereinstimmungGefunden der Wert False zugewiesen wurden.
Und „schon“ bin ich fast am Ende des Programms. Es muss nur noch eine Zeile vor die gefundene Zeilen- Nr. eingefügt werden.
Wenn die Auftrags- Einträge von Hand vorgenommen werden sollen, kann jetzt mit:

Sheets(1).Cells(SchleifenDurchlaufzählerVariable2, 2).Select

direkt in die eingefügte Zeile gesprungen werden, da die letzte Auftragszeile durch das Einfügen eine Zeile nach unten „gerutscht“ ist.

Ich hoffe, das hilft weiter
Grüße von Harry

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
12.07.2007 11:03:33 mariza200985
NotSolved
Blau Aw:Suche nach 1.leerer Zeile nach Zelle mit Wert
06.08.2007 12:36:09 Harry
NotSolved