matester
Goto Top

Inhalt größer Null kopieren

Hallo Leute ich benötige bezüglich VB Eure Hilfe

Bitte keine Formel ich kann nur ein Makro verwendenl!!!

Wenn in der Spalte C der Wert größer Null ist, dann soll der Inhalt von Spalte B in Spalte E kopiert werden und der Inhalt von Spalte C in Spalte F.
Ist der Wert in Spalte C 0 dann soll zur nächsten Zeile gesprungen werden, also nichts kopieren. Es sollen keine leeren Zellen in Spalte E und F entstehen.

d0de335ffba8fb324ad2a30d09098113


Vielen Dank im Voraus


Bild 2

9159ff5f154635501a4978ebd1b17257

Content-ID: 158378

Url: https://administrator.de/contentid/158378

Ausgedruckt am: 23.11.2024 um 02:11 Uhr

Biber
Biber 11.01.2011, aktualisiert am 18.10.2012 um 18:45:27 Uhr
Goto Top
Moin matester,

Zitat von @matester:
Bitte keine Formel ich kann nur ein Makro verwendenl!!!
Schon wieder eine zeitnah fällige Hausaufgabe?
Wenn du "nur ein Makro verwenden" kannst, dann hast du bestimmt schon einen Ansatz.
Bei welcher Prüfung, bei welchem logischen Problem scheiterst du denn jetzt??
Die in Frage kommenden Properties und Methoden hast du doch alle schon mal selbst hier gepostet im Beitrag Keine ganzen Zeilen sondern nur den Bereich kopieren, der übrigens auf "Hinreichend beantwortet" steht.

Etwas verwundert
Biber
matester
matester 11.01.2011 um 16:42:07 Uhr
Goto Top
Hallo Biber,

wenn in der Spalte C der Wert 0 auftaucht soll nicht kopiert werden. Ansonsten weiter mit der nächsten Zeile.

Als Ergebnis sollen in den Spalten E und F nur die Inhalte aus B und E stehen wo kein Null-Wert in C vorhanden ist.

Und genau das bekomme ich nicht gebacken!!! Und zum Thema Hausaufgaben habe ich durch Eure Unterstützung schon eine Menge dazugelernt.

Aber ich bin was VB angeht immer noch ein blutiger Anfänger, der noch viel Unterstützung braucht!!!! Vorausgesetzt man bekommt die Unterstützung.
bastla
bastla 11.01.2011 um 18:18:49 Uhr
Goto Top
Hallo matester!

Na dann stütze ich noch mal ...
Sub BedingtKopieren()
AbZeile = 2 'Erste Datenzeile  
Kriterium = "C"  
Quelle = "B"  
Spalten = 2
Ziel = "E"  

Zeile = AbZeile
Do While Cells(Zeile, Kriterium) <> ""  
    If Cells(Zeile, Kriterium).Value > 0 Then
        Cells(Zeile, Quelle).Resize(1, Spalten).Copy Destination:=Cells(Zeile, Ziel)
    End If
    Zeile = Zeile + 1
Loop
End Sub
Als Zusatzhausübung von mir face-wink: Ergänze die fehlenden Kommentare!

Grüße
bastla
Biber
Biber 11.01.2011 um 18:38:03 Uhr
Goto Top
[OT] @bastla
Hmmmja...
ich hatte eher gehofft, dass er bei einem dezenten Hinweis auf frühere Stützradübungen hier im Forum so ein Deja-wusst-ich-doch-schomma-Erlebnis hat.

Ich meine, nach fünf Monaten als blutiger Excel-Makro-Anfänger hier....
a) blutet der mir noch irgendwann aus und
b) saut der den ganzen Forumsboden voll

Und wie alle wissen: zart besaitete Halbmods wie ich können kein Blut sehen... nein, nicht wegen Kurzsichtigkeit oder Nachtblindheit...

@matester: du wirst mit dem Makros-selber-sägen nicht flotter, wenn du dir Komplett-Copy&Paste-Vorlagen liefern lässt.
Versuch bitte, das Umsetz-Problem ein bisschen mehr einzugrenzen - auch dann kann und wird das Forum gerne unterstützen.

Grüße
Biber
[/OT]
matester
matester 11.01.2011 um 19:11:07 Uhr
Goto Top
Hallo bastler,

danke für Deine schnelle Hilfe!!!

Wenn ich das Makro laufen lasse, bekomme ich das Ergebnis siehe Bild 2.
Und das ist ja gerade mein Problem!!!
In den Spalten E und F sollen . . .

Test 1 82
Test 2 2
Test 4 7
Test 8 1
Test 9 9
Test11 15

ohne Leerzeilen (durch 0-Werte in Spalte C) untereinander stehen.


Ich hoffe die fehlenden Kommentare können noch etwas warten???
Pjordorf
Pjordorf 11.01.2011 um 19:22:47 Uhr
Goto Top
Hallo,

Zitat von @matester:
ohne Leerzeilen (durch 0-Werte in Spalte C) untereinander stehen.
Na, dann baue dir doch einen zusätzlichen Zeilenzähler für deine Zielzeile ein (aber da bist du ja schon selbst drauf gekommen, oder?)

Zeile = AbZeile
ZielZeile=Zeile
.
.
.
    If Cells(Zeile, Kriterium).Value > 0 Then
        Cells(Zeile, Quelle).Resize(1, Spalten).Copy Destination:=Cells(ZielZeile, Ziel)
        ZielZeile=ZielZeile + 1
    End If
.
.
.

Gruß,
Peter

[Edit] Nachbearbeitet [Edit]
matester
matester 11.01.2011 um 20:33:58 Uhr
Goto Top
Hallo Peter,

danke für die Unterstützung mit dem Zeilenzähler!!!
Hätte es nicht allein geschafft.

Leider läuft der Zeilenzähler nur einmal, d.h. nur ein Eintrag in der Spalte E und F (Test 1).
Die Daten Test 2, Test 4, Test 8, Test 9 und Test 11 werden nicht kopiert.


Sub BedingtKopieren()
AbZeile = 2 'Erste Datenzeile
Kriterium = "C"
Quelle = "B"
Spalten = 2
Ziel = "E"
Zeile = AbZeile
ZielZeile=Zeile
If Cells(Zeile, Kriterium).Value > 0 Then
Cells(Zeile, Quelle).Resize(1, Spalten).Copy Destination:=Cells(ZielZeile, Ziel)
ZielZeile=ZielZeile + 1
End If
End Sub
Pjordorf
Pjordorf 11.01.2011 um 20:55:01 Uhr
Goto Top
Hallo,

Zitat von @matester:
danke für die Unterstützung mit dem Zeilenzähler!!!
Bitte.

Hätte es nicht allein geschafft.
Das glaube ich dir (jetzt)

Leider läuft der Zeilenzähler nur einmal, d.h. nur ein Eintrag in der Spalte E und F (Test 1).
Ja, denn du hast zwar die Variable ZielZeile korrekt übernommen, dafür hast du aber deine Schleife Do ... Loop nicht mehr. Warum nicht? Etwas mitdenken solltest du schon, und wenn du wie @Biber schon feststellte, solltest du nach 5 Monate VBA mit Excell etwas mehr drauf haben (kopfschüttel)

Und, du hast es immer noch nicht verstanden angebotene Hilfe auch zu Lesen, hier nochmals der Hinweis auf verwendung der Formatierungen in den Beiträgen.

Sub BedingtKopieren()

AbZeile = 2 'Erste Datenzeile  
Kriterium = "C"  
Quelle = "B"  
Spalten = 2
Ziel = "E"  
Zeile = AbZeile
ZielZeile=Zeile

Do While Cells(Zeile, Kriterium) <> ""  
    If Cells(Zeile, Kriterium).Value > 0 Then
        Cells(Zeile, Quelle).Resize(1, Spalten).Copy Destination:=Cells(Zeile, Ziel)
    End If
    Zeile = Zeile +1
Loop

End Sub

Gruß,
Peter
bastla
bastla 11.01.2011 um 21:29:28 Uhr
Goto Top
@Biber
Ich hatte ja auch überlegt, die Zeile 11 durch den besagten Hinweis zu ersetzen, wollte dann aber doch noch einen neuen Aspekt ("Resize") hinzufügen (was retrospektiv allerdings eher entbehrlich erscheint) ...

@matester
Sorry - den letzten Satz hatte ich übersehen face-sad - aber was Dir Peter unten an Ergänzung angeboten hat, solltest Du nun tatsächlich zum gewünschten Ergebnis kombinieren können ...

Grüße
bastla
76109
76109 11.01.2011 um 23:42:54 Uhr
Goto Top
Hallo Peter!

Jetzt hast Du aber in diesem ganzen Wirrwarr auch einen Teil vergessen mit einzufügen:
Sub BedingtKopieren()
    AbZeile = 2 'Erste Datenzeile  
    Kriterium = "C"  
    Quelle = "B"  
    Spalten = 2
    Ziel = "E"  
    
    Zeile = AbZeile
    ZielZeile = AbZeile
    
    Do While Cells(Zeile, Kriterium) <> ""  
        If Cells(Zeile, Kriterium).Value > 0 Then
            Cells(Zeile, Quelle).Resize(1, Spalten).Copy Cells(ZielZeile, Ziel)
            ZielZeile = ZielZeile + 1
        End If
        
        Zeile = Zeile + 1
    Loop
End Sub

Gruß Dieter
bastla
bastla 11.01.2011 um 23:47:28 Uhr
Goto Top
@Dieter
Das war doch die Aufgabe für matester ... face-wink

Grüße
bastla
76109
76109 11.01.2011 um 23:49:05 Uhr
Goto Top
@bastla!

Ups, habe ich Leider irgendwie übersehenface-wink

Naja, bei dem, was ich bis jetzt so gelesen habe, habe ich da keine allzugroße Hoffnung, dass der TO das gebacken bekommt. Zumindest in Peters Codezeile13 habe ich da so meine Bedenken? face-smile

Gruß Dieter
matester
matester 12.01.2011 um 10:51:52 Uhr
Goto Top
Hinweise aus dem Forum:
Stellen Sie uns auf die Probe, fordern Sie uns heraus und fragen Sie uns und alle anderen Mitglieder nach Lösungen. Teilen Sie uns Ihre Probleme mit.
Lernen Sie mit unserer Hilfe Ihre eigenen Probleme zu lösen. Es gibt viele Möglichkeiten auf unseren Seiten etwas zu bewegen.
Wir freuen uns auf Ihren Beitrag.

Daraufhin habe ich mich registriert und dachte, mit einiger Unterstützung von den Fachleuten hier im Forum, könnte ich so die ersten Schritte bezüglich VB im Selbststudium erlernen.
Leider ohne den entsprechenden Erfolg, den einige von mir in den 5 Monaten erwartet haben.
Mir scheint, ich habe nicht nur die Hinweise von Biber und Peter nicht verstanden, sonder auch den o.a. Text nicht!!!
Ich wollte auch niemanden ausnutzen, sonder brauchte einfach nur Hilfe.

Glücklicherweise haben andere über diese Schwäche bzw. über mein Unvermögen hinweggesehen.
Herzlichen Dank an Dieter und bastla!!!
76109
76109 12.01.2011 um 13:21:56 Uhr
Goto Top
Hallo matester!

Sorry, aber die Einwände von Biber und Peter sind schon berechtigt. Und bedauerlicherweise hast Du diese auch mißverstanden. Und sicherlich ist es auch das Ziel in diesem Forum, anderen zu helfen. D.h. aber nicht, gleich Komplettlösungen zu liefern. Zumindest dann nicht, wenn jemand schreibt, dass er eine Hausaufgabe hat, sich bereits seit 5 Monaten mit VBA beschäftigt und noch dazulernen möchteface-wink Und in diesem speziellen Fall hat man ja tatsächlich den Eindruck, dass Du Dir nicht wirklich die Mühe gemacht hast, etwas mitzudenken.

Und wenn Du - mit Verlaub gesagt - nach 5 Monaten, nicht in der Lage bist eine so einfache Aufgabe selbst zu lösen, dann beklag Dich nicht über gerechtfertigte Kritik, sondern streng Dich ein wenig mehr an und überrasch uns das nächste malface-wink

Und der Dank geht natürlich in erster Linie an bastla, der gleich die richtige Lösung gepostet hätte, sofern Du Deine Hausaufgabe besser beschrieben hättest und Peter, der ja die richtige Ergänzung zu bastlas Code geliefert hat. Trotz Deines Unvermögens, hätte Dir bei minimalem Mitdenken auffallen müssen, dass es ohne Schleife überhaupt nicht funktionieren kann. Von daher waren wir wohl alle etwas von Dir entäuschtface-wink

Ich würde Dir auch empfehlen das Debugger-Werkzeug zu verwenden und den Code mal in Einzelschritten zu verfolgen (Cursor auf Sub und dann immer F8 drücken) bzw. zu sehen, was in den einzelnen Schritten so alles passiert, wie sich die Werte in den Variablen verändern usw.

Gruß Dieter
Biber
Biber 12.01.2011 um 13:44:47 Uhr
Goto Top
Moin matester,

ja, es war durchaus meine Absicht, Kritik zu üben.
Nein, es ging mir dabei nicht darum, Schwächen herauszustreichen oder dir Unvermögen zu unterstellen.

Tut mir leid, wenn diese Kritik bei dir als nicht konstruktiv oder gar Hilfeverweigerung ankommt.

Zu deinem Zitat aus den "Hinweisen aus dem Forum" - unterschreib ich jeden einzelnen Punkt.

Lass uns doch nochmal gemeinsam lesen - vielleicht betone ich es anders.

Zitat von @matester:
Hinweise aus dem Forum:
Stellen Sie uns auf die Probe, fordern Sie uns heraus und fragen Sie uns und alle anderen Mitglieder nach Lösungen.
Teilen Sie uns Ihre Probleme mit.
Die aber bitte nicht lauten sollten: Ich würde gerne etwas Copy&Pasten.
Lernen Sie mit unserer Hilfe Ihre eigenen Probleme zu lösen.
Genau das sagte ich doch....
Es gibt viele Möglichkeiten auf unseren Seiten etwas zu bewegen.
Oder mal bewegende Momente mitzuerleben.
Wir freuen uns auf Ihren Beitrag.
und du dich hoffentlich auf jeden Kommentar.

Ich kann dich doch nicht kommentarlos vor dich hinbluten lassen....

Grüße
Biber
Pjordorf
Pjordorf 13.01.2011 um 03:30:48 Uhr
Goto Top
Hallo Dieter,

Zitat von @76109:
Jetzt hast Du aber in diesem ganzen Wirrwarr auch einen Teil vergessen mit einzufügen:
Autsch. da habe ich nicht aufgepasst bei dem ganzen copy & paste face-smile Danke-

Gruß,
Peter