Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Inhalt größer Null kopieren

Frage Entwicklung VB for Applications

Mitglied: matester

matester (Level 1) - Jetzt verbinden

11.01.2011, aktualisiert 18.10.2012, 6523 Aufrufe, 16 Kommentare

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 - Klicke auf das Bild, um es zu vergrößern


Vielen Dank im Voraus




Bild 2

9159ff5f154635501a4978ebd1b17257 - Klicke auf das Bild, um es zu vergrößern
Mitglied: Biber
11.01.2011, aktualisiert 18.10.2012
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
Bitte warten ..
Mitglied: matester
11.01.2011 um 16:42 Uhr
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.
Bitte warten ..
Mitglied: bastla
11.01.2011 um 18:18 Uhr
Hallo matester!

Na dann stütze ich noch mal ...
01.
Sub BedingtKopieren() 
02.
AbZeile = 2 'Erste Datenzeile 
03.
Kriterium = "C" 
04.
Quelle = "B" 
05.
Spalten = 2 
06.
Ziel = "E" 
07.
 
08.
Zeile = AbZeile 
09.
Do While Cells(Zeile, Kriterium) <> "" 
10.
    If Cells(Zeile, Kriterium).Value > 0 Then 
11.
        Cells(Zeile, Quelle).Resize(1, Spalten).Copy Destination:=Cells(Zeile, Ziel) 
12.
    End If 
13.
    Zeile = Zeile + 1 
14.
Loop 
15.
End Sub
Als Zusatzhausübung von mir : Ergänze die fehlenden Kommentare!

Grüße
bastla
Bitte warten ..
Mitglied: Biber
11.01.2011 um 18:38 Uhr
[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]
Bitte warten ..
Mitglied: matester
11.01.2011 um 19:11 Uhr
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???
Bitte warten ..
Mitglied: Pjordorf
11.01.2011 um 19:22 Uhr
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?)

01.
Zeile = AbZeile 
02.
ZielZeile=Zeile 
03.
04.
05.
06.
    If Cells(Zeile, Kriterium).Value > 0 Then 
07.
        Cells(Zeile, Quelle).Resize(1, Spalten).Copy Destination:=Cells(ZielZeile, Ziel) 
08.
        ZielZeile=ZielZeile + 1 
09.
    End If 
10.
11.
12.
.
Gruß,
Peter

[Edit] Nachbearbeitet [Edit]
Bitte warten ..
Mitglied: matester
11.01.2011 um 20:33 Uhr
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
Bitte warten ..
Mitglied: Pjordorf
11.01.2011 um 20:55 Uhr
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 Code Blöcke/tags.

01.
Sub BedingtKopieren() 
02.
 
03.
AbZeile = 2 'Erste Datenzeile 
04.
Kriterium = "C" 
05.
Quelle = "B" 
06.
Spalten = 2 
07.
Ziel = "E" 
08.
Zeile = AbZeile 
09.
ZielZeile=Zeile 
10.
 
11.
Do While Cells(Zeile, Kriterium) <> "" 
12.
    If Cells(Zeile, Kriterium).Value > 0 Then 
13.
        Cells(Zeile, Quelle).Resize(1, Spalten).Copy Destination:=Cells(Zeile, Ziel) 
14.
    End If 
15.
    Zeile = Zeile +1 
16.
Loop 
17.
 
18.
End Sub
Gruß,
Peter
Bitte warten ..
Mitglied: bastla
11.01.2011 um 21:29 Uhr
@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 - 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
Bitte warten ..
Mitglied: 76109
11.01.2011 um 23:42 Uhr
Hallo Peter!

Jetzt hast Du aber in diesem ganzen Wirrwarr auch einen Teil vergessen mit einzufügen:
01.
Sub BedingtKopieren() 
02.
    AbZeile = 2 'Erste Datenzeile 
03.
    Kriterium = "C" 
04.
    Quelle = "B" 
05.
    Spalten = 2 
06.
    Ziel = "E" 
07.
     
08.
    Zeile = AbZeile 
09.
    ZielZeile = AbZeile 
10.
     
11.
    Do While Cells(Zeile, Kriterium) <> "" 
12.
        If Cells(Zeile, Kriterium).Value > 0 Then 
13.
            Cells(Zeile, Quelle).Resize(1, Spalten).Copy Cells(ZielZeile, Ziel) 
14.
            ZielZeile = ZielZeile + 1 
15.
        End If 
16.
         
17.
        Zeile = Zeile + 1 
18.
    Loop 
19.
End Sub
Gruß Dieter
Bitte warten ..
Mitglied: bastla
11.01.2011 um 23:47 Uhr
@Dieter
Das war doch die Aufgabe für matester ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
11.01.2011 um 23:49 Uhr
@bastla!

Ups, habe ich Leider irgendwie übersehen

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?

Gruß Dieter
Bitte warten ..
Mitglied: matester
12.01.2011 um 10:51 Uhr
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!!!
Bitte warten ..
Mitglied: 76109
12.01.2011 um 13:21 Uhr
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öchte 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 mal

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äuscht

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
Bitte warten ..
Mitglied: Biber
12.01.2011 um 13:44 Uhr
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
Bitte warten ..
Mitglied: Pjordorf
13.01.2011 um 03:30 Uhr
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 Danke-

Gruß,
Peter
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
gelöst Access: Spalten ist Anzahl Wenn größer NULL (11)

Frage von Pilger83 zum Thema VB for Applications ...

Exchange Server
Inhalt von Postfächern in Exchange löschen (9)

Frage von m.reeger zum Thema Exchange Server ...

Batch & Shell
Ordner erstellen ll Datei hinein kopieren (1)

Frage von heyalice zum Thema Batch & Shell ...

Datenbanken
gelöst DB2 Daten in Windows DB2 kopieren (1)

Frage von Emheonivek zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...